2011-12-03 63 views
1

我有一個將一些程序集加載爲插件的服務。每個插件都引用安裝在GAC中的常用程序集。出於某種原因,某些插件能夠成功從GAC加載程序集,但其他插件卻失敗。我似乎無法弄清楚爲什麼會發生這種情況。這裏是融合日誌一個工程,並在不:爲什麼我的程序不能在GAC中查找程序集?

*** Assembly Binder Log Entry (12/3/2011 @ 10:54:47 AM) *** 



The operation was successful. 
Bind result: hr = 0x0. The operation completed successfully. 

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Running under executable C:\Windows\Microsoft.NET\Framework\v4.0.30319\AddInProcess.exe 
--- A detailed error log follows. 

=== Pre-bind state information === 
LOG: User = NT AUTHORITY\SYSTEM 
LOG: DisplayName = OSAE.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f47a6446f36f79f7 
(Fully-specified) 
LOG: Appbase = file:///C:/Program Files/OSA/AddIns/ZWave 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = NULL 
Calling assembly : OSAE.Zwave, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: This bind starts in default load context. 
LOG: No application configuration file found. 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: OSAE.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f47a6446f36f79f7 
LOG: Found assembly by looking in the GAC. 
LOG: Binding succeeds. Returns assembly from C:\Windows\Microsoft.Net\assembly\GAC_MSIL\OSAE.API\v4.0_1.0.0.0__f47a6446f36f79f7\OSAE.API.dll. 
LOG: Assembly is loaded in default load context. 

失敗:

*** Assembly Binder Log Entry (12/3/2011 @ 10:54:46 AM) *** 

The operation failed. 
Bind result: hr = 0x80070002. The system cannot find the file specified. 

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Running under executable C:\Windows\Microsoft.NET\Framework\v4.0.30319\AddInProcess.exe 
--- A detailed error log follows. 

=== Pre-bind state information === 
LOG: User = NT AUTHORITY\SYSTEM 
LOG: DisplayName = OSAE.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 
(Fully-specified) 
LOG: Appbase = file:///C:/Program Files/OSA/AddIns/Web Server 
LOG: Initial PrivatePath = NULL 
LOG: Dynamic Base = NULL 
LOG: Cache Base = NULL 
LOG: AppName = NULL 
Calling assembly : OSAE.WebServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: This bind starts in default load context. 
LOG: No application configuration file found. 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). 
LOG: Attempting download of new URL file:///C:/Program Files/OSA/AddIns/Web Server/OSAE.API.DLL. 
LOG: Attempting download of new URL file:///C:/Program Files/OSA/AddIns/Web Server/OSAE.API/OSAE.API.DLL. 
LOG: Attempting download of new URL file:///C:/Program Files/OSA/AddIns/Web Server/OSAE.API.EXE. 
LOG: Attempting download of new URL file:///C:/Program Files/OSA/AddIns/Web Server/OSAE.API/OSAE.API.EXE. 
LOG: All probing URLs attempted and failed. 
+0

我假設程序集是強簽名的 - 它是如何作爲參考添加到未能加載它的項目的? – Oded

+0

對於這兩種情況,都以相同的方式添加了引用。添加引用 - >瀏覽 - >選擇DLL – Brian

+0

那麼,你從文件位置手動選擇了DLL?還是一個項目參考?還是來自GAC?哪一個? – Oded

回答

2

失敗組件不強烈簽署(公鑰= NULL)。我不知道爲什麼程序集沒有簽名,但沒有必要讓加載程序在GAC中查找此類程序集,因爲只有經過嚴格簽名的程序集才能加入GAC。

相關問題