2012-02-06 56 views
0

這是有點的後續行動:Reference alternate to reference assembly in Visual Studio 2010?Azure的引用不正確的DLL

我引用一個核心框架DLL的另一個版本。 Visual Studio(和本地調試器結構)引用此文件沒有問題。此外,該文件被標記爲Copy Local。但是,當我部署到雲時,我得到:

無法加載文件或程序集'(程序集強名稱)'或其依賴項之一。定位的程序集清單定義與程序集引用不匹配。

使用遠程桌面,我確定正確的文件確實在E:\approot文件夾中以及我的其他依賴關係。我假設該結構正在使用GAC而不是使用我的文件。

有沒有辦法強制它首先使用我的DLL?

注意:替換.NET CLR DLL的整個概念無論如何是一個巨大的破解,所以受到歡迎。當.NET 4.5推出支持我需要的功能時,這一切都將被剝離。

更多信息:看起來我的web角色工作正常,但我的工作人員角色在嘗試構建Autofac容器時死於該錯誤。即使我在構建它之前顯式加載程序集,這也會發生,這也可以正常工作。

+2

嗯,你在做什麼是在許可證中明確禁止的。 Azure執行此操作的可能性或假定它爲非零。 DLL的ngen-ed版本可能會發揮作用。 – 2012-02-06 15:18:40

回答

-1

我見過這個問題,如果其中一個項目沒有.NET Framework版本的目標。也許檢查以確保解決方案中的所有項目都具有相同的設置。

+0

這與框架版本無關。我正在替換CLR DLL,這意味着每個框架版本都是錯誤的框架版本。我需要強制它加載正確的DLL。 – 2012-02-06 13:41:37

+0

kk。抱歉。當解決方案中存在不同的.net框架版本時,我剛剛看到了同樣的錯誤。 – BrentDaCodeMonkey 2012-02-06 15:04:25

1

您可以嘗試使用Appdomain.AssemblyResolve事件來捕獲它並手動加載它。但是,我不知道它是否被解僱,這是一種解決方法。

+0

這不是一個壞主意。我會給它一個鏡頭。整個概念無論如何是一個解決方法,直到.NET 4.5出來,應該包括我需要的東西。 – 2012-02-06 14:47:36

1

你能嘗試暗示,應在該探測CLR本地文件夾:

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <probing privatePath="." /> 
</assemblyBinding> 
</runtime> 

退房通過探測部分here更多定位裝配。這可能有幫助。