2016-04-12 27 views
0

我有一個程序集(實際上是2個)都來自SAP目錄C:\Program Files (x86)\SAP\FrontEnd\SAPguiVisual Studio如何加載程序集和Assembly.LoadFrom之間的區別?

  • Visual Studio Add Reference - 工作得很好。
  • Assembly.LoadFrom - 引發下面的異常。

無法加載文件或程序集 '文件:/// C:\程序文件(x86)\ SAP \前端\ SAPGUI \ sapfewse.ocx' 或它的一個依賴。預計該模塊將包含程序集清單。

爲什麼我可以添加對visual studio的引用,並使用dll那樣沒有問題,但通過反射加載它不起作用?

有沒有辦法在運行時加載程序集類型?

+3

這些DLL通過COM使用,但'Assembly.LoadFrom'只適用於.NET程序集。 'COMReference'只包含接口。也許你應該*解釋你爲什麼要動態加載這些東西。 –

+0

我們使用的程序只允許服務器上的GAC程序集,我們需要訪問客戶端計算機上的程序集。此外,如果我們試圖將程序集添加到GAC,則會出現相同的錯誤。 – Shelby115

+0

那麼,這些是本地庫,所以您不需要將它們包含在GAC中。我認爲你甚至不需要將它們與你自己的程序集一起分發(你在嵌入互操作類型),但我可能在這裏是錯的。只要確保SAP的東西安裝在客戶機上。 –

回答

0

正如盧卡斯在評論中指出的,Assembly.LoadFrom只適用於.NET程序集,而我試圖加載的程序集是COM DLL。

我最終不得不做的是將它們添加到一個項目中,該項目生成了Interop版本的dll,然後我將它添加到GAC中,以便我們最初想要使用它的程序可以訪問它。

非常感謝所有在發佈這些解決方案的意見中發佈的人。

相關問題