2009-09-22 84 views
17

我需要採用C#應用程序的內置版本並更改其中一個引用dll。什麼是最好的辦法做到這一點,我有特定的版本在參考DLL上關閉,但只要我測試用新版本替換DLL,我得到「無法加載文件或程序集XXXXX,版本= XXXXX。 ?有沒有辦法從關心的DLL版本停止裝載機這樣的DLL將只是嘗試加載在不重新編譯項目的情況下升級C#項目中的引用dll

回答

18

是的,你可以做到這一點 - 請參閱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]

+0

這將需要重新編譯,不會它? – 2009-09-22 17:56:29

+0

或者,只在運行時檢查配置文件? – 2009-09-22 17:59:23

+2

在運行時檢查這些xml文件。見http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian 2009-09-22 18:01:18

相關問題