2010-01-18 48 views
2

我有一個裝配加載問題,當我從Vista(32位)轉換爲Windows 7(32位)時出現問題。當我嘗試加載一些非常舊的Sybase ASE ADO.NET數據提供程序DLLS時,會發生此問題。裝配加載問題

從融合日誌查看器日誌顯示此:

*** Assembly Binder Log Entry (18/01/2010 @ 5:00:38 PM) *** 

The operation failed. 
Bind result: hr = 0x80131018. No description available. 

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll 
Running under executable c:\windows\system32\inetsrv\w3wp.exe 
--- A detailed error log follows. 

=== Pre-bind state information === 
LOG: User = NT AUTHORITY\NETWORK SERVICE 
LOG: DisplayName = sybdrvado11 
(Partial) 
LOG: Appbase = file:///C:/dev/AgentDesktop/ui/newweb/ 
LOG: Initial PrivatePath = C:\dev\AgentDesktop\ui\newweb\bin 
LOG: Dynamic Base = C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\newweb\f57489cf 
LOG: Cache Base = C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\newweb\f57489cf 
LOG: AppName = d293c3e5 
Calling assembly : (Unknown). 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: C:\dev\AgentDesktop\ui\newweb\web.config 
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v2.0.50727\Aspnet.config 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2.0.50727\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:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/newweb/f57489cf/d293c3e5/sybdrvado11.DLL. 
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/newweb/f57489cf/d293c3e5/sybdrvado11/sybdrvado11.DLL. 
LOG: Attempting download of new URL file:///C:/dev/AgentDesktop/ui/newweb/bin/sybdrvado11.DLL. 
LOG: Assembly download was successful. Attempting setup of file: C:\dev\AgentDesktop\ui\newweb\bin\sybdrvado11.dll 
LOG: Entering download cache setup phase. 
ERR: Error extracting manifest import from file (hr = 0x80131018). 
ERR: Setup failed with hr = 0x80131018. 
ERR: Failed to complete setup of assembly (hr = 0x80131018). Probing terminated. 

我花的時間使用Google這樣那樣通過ASP.NET體現了錯誤信息公平一點,並沒有共同的解決辦法似乎相關。我注意到有一種方法可以使用病毒檢查程序導致此錯誤。是否有可能在原生Windows 7機器上執行此操作?即是否有任何類型的保護系統可能會干擾裝配?

這失敗在兩個VS.NET 2008年,並與2010 VS.NET Beta 2版

任何線索將不勝感激。

回答

0

嘗試加載C:\dev\AgentDesktop\ui\newweb\bin\sybdrvado11.dll時似乎發生此問題。

這是Sybase ADO.NET提供程序所需的非託管DLL,通常應該安裝在PATH的某處。

+0

請注意,程序集加載程序找到程序集確定(我提到程序集+ DLL在Vista上工作正常),但有程序集清單問題:「從文件中提取清單導入時出錯」。這是讓我困惑的部分。 – 2010-01-18 21:26:08

+0

可能需要查看/發佈加載工作的Vista機器上的融合日誌。 – Joe 2010-01-19 05:52:40

2

要使用Sybase ASE ADO.NET與sybdrvado11.dll您需要另一個文件:MSVCR71.dll 也許是缺少Windows\System32

2

我使用資源管理器在GAC文件夾中解決了我的問題。我可以看到 system.runtime.serialization dll,但是當我在此 文件夾中使用cmd提示符時,dll存在於GAC_MSIL上,而不是GAC上。所以我已經從GAV上的GAV_MSIL拷貝了 System.Runtime.Serialization文件夾,並在 重新啓動VS我的項目完美編譯之後。

要移動的dll伊斯利我用下面的命令在cmd.exe

cd\windows\assembly 
attrib -r -h -s desktop.ini 
ren desktop.ini desktop.bak 

現在我可以在資源管理器中正常打開GAC文件夾,你可以看到實際的結構。