2009-06-25 57 views
2

我一直在使用XCOPY部署到一個共享網絡驅動器將多個程序部署到一個文件夾中,因爲它使我更容易在內部程序中更新。這些共享DLL NNC.dll。它不會經常被修改,但最近完成了,所以當我去部署時,我無法覆蓋,因爲它是一個突變。.NET DLL版本和xcopy部署

如果我在NNC項目中更改程序集名稱以將NNC 1.1.dll複製到網絡上的同一文件夾中,新部署的程序是否會選取新的DLL和舊的NNC.DLL。這是我想要的理想,但我不想部署,然後意識到舊程序正在挑選最新版本的程序集,因爲它有一個突破性的變化,我還沒有在所有項目中修復它。

該程序集有一個強名稱,我更新了版本號以匹配。

回答

2

它在我的問題中以我希望的方式工作。

1

假設你有:

  • ClassLibrary,版本= 1.0.0.0,文化=中性公鑰= f31de59ccff6c2c9

  • ClassLibrary,版本= 2.0.0.0,文化=中立,公鑰= f31de59ccff6c2c9

A中沒有代碼/配置唯一的解決方案將是:

  1. 1.0.0.0複製到一個名爲oldbin
  2. 新的文件夾替換1.0.0.0 2.0.0.0與
  3. 對於每一箇舊的應用程序(由舊我的意思是使用共享DLL的前一版本)加(如果它不「T已經存在)一個配置文件AppName.exe.config用下面的條目:

    <configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="ClassLibrary" publicKeyToken="f31de59ccff6c2c9" culture="neutral" /> 
    <codeBase version="1.0.0.0" href="oldbin\ClassLibrary.dll"/> 
    </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    </configuration> 
    

這樣新的應用程序將使用新的組件和舊的應用程序將oldbin文件夾使用舊的裝配。