我一直在使用XCOPY部署到共享网络驱动器将多个程序部署到一个文件夹中,因为这使我可以非常轻松地更新内部程序。这些有一个共享的DLL NNC.dll。它通常不会被修改但最近已经完成,所以当我去部署时,我无法覆盖,因为它是一个重大变化。
如果我在NNC项目中更改程序集名称以说NNC 1.1.dll将其复制到网络上的同一文件夹中,新部署的程序是否会获取新的DLL和旧的NNC.DLL。理想情况下,这是我想要的,但我不想部署,然后意识到旧的程序正在采用最新版本的程序集,因为它有一个重大的变化,我尚未在所有项目中修复。
程序集具有强名称,我更新了版本号以匹配。
答案 0 :(得分:2)
我的问题就像我希望的那样。
答案 1 :(得分:1)
假设你有:
ClassLibrary,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = f31de59ccff6c2c9
ClassLibrary,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = f31de59ccff6c2c9
无代码/配置解决方案将是:
对于每个旧应用程序(旧的,我的意思是使用以前版本的共享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>
这样新的应用程序将使用新的程序集,旧的应用程序将从oldbin文件夹中获取旧的程序集。