2009-06-25 55 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文件夹使用旧的装配。