.NET DLL版本和xcopy部署

时间:2009-06-25 15:38:29

标签: .net deployment

我一直在使用XCOPY部署到共享网络驱动器将多个程序部署到一个文件夹中,因为这使我可以非常轻松地更新内部程序。这些有一个共享的DLL NNC.dll。它通常不会被修改但最近已经完成,所以当我去部署时,我无法覆盖,因为它是一个重大变化。

如果我在NNC项目中更改程序集名称以说NNC 1.1.dll将其复制到网络上的同一文件夹中,新部署的程序是否会获取新的DLL和旧的NNC.DLL。理想情况下,这是我想要的,但我不想部署,然后意识到旧的程序正在采用最新版本的程序集,因为它有一个重大的变化,我尚未在所有项目中修复。

程序集具有强名称,我更新了版本号以匹配。

2 个答案:

答案 0 :(得分:2)

我的问题就像我希望的那样。

答案 1 :(得分:1)

假设你有:

  • ClassLibrary,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = f31de59ccff6c2c9

  • ClassLibrary,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = f31de59ccff6c2c9

无代码/配置解决方案将是:

  1. 将1.0.0.0复制到名为oldbin
  2. 的新文件夹
  3. 将1.0.0.0替换为2.0.0.0
  4. 对于每个旧应用程序(旧的,我的意思是使用以前版本的共享dll)添加(如果它已经不存在)配置文件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>
    
  5. 这样新的应用程序将使用新的程序集,旧的应用程序将从oldbin文件夹中获取旧的程序集。