17
我需要採用C#應用程序的內置版本並更改其中一個引用dll。什麼是最好的辦法做到這一點,我有特定的版本在參考DLL上關閉,但只要我測試用新版本替換DLL,我得到「無法加載文件或程序集XXXXX,版本= XXXXX。 ?有沒有辦法從關心的DLL版本停止裝載機這樣的DLL將只是嘗試加載在不重新編譯項目的情況下升級C#項目中的引用dll
我需要採用C#應用程序的內置版本並更改其中一個引用dll。什麼是最好的辦法做到這一點,我有特定的版本在參考DLL上關閉,但只要我測試用新版本替換DLL,我得到「無法加載文件或程序集XXXXX,版本= XXXXX。 ?有沒有辦法從關心的DLL版本停止裝載機這樣的DLL將只是嘗試加載在不重新編譯項目的情況下升級C#項目中的引用dll
是的,你可以做到這一點 - 請參閱MSDN文章Redirecting Assembly Versions
你應該讀整文檔,但它基本上涉及程序集的發佈者創建'發佈者策略文件'或消費者將bindingRedirect
添加到app.config
文件,如下所示(直接從文章複製):
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
的幾個注意事項:
如果您還沒有明確規定 你的文化(因爲很多人沒有),這將 是 「中性」,而不是 「EN-US」。
如果你不知道的話,你可以 得到大會的公鑰標記 使用強名稱實用,像這樣 :sn -t [AssemblyPath]
這將需要重新編譯,不會它? – 2009-09-22 17:56:29
或者,只在運行時檢查配置文件? – 2009-09-22 17:59:23
在運行時檢查這些xml文件。見http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian 2009-09-22 18:01:18