假设一个dll版本号是1.6.8.1
我的winform程序引用了这个dll。
现在我升级了这个dll到3.0.0.0.能否在不编译winform的情况下,直接拷贝这个新的3.0.0.0的dll到目录下,让winform直接执行?
如果这个dll是我自己开发的,似乎没有遇到什么问题,其他所有引用了这个dll的其他类库都不会报错(只要这个dll的对外接口没有变动)
但是如果这个dll是第三方控件公司开发的,例如ribbon, 我曾经升级了这个dll到3.0。0.0之后,会报错,说缺少1.6.8.1的dll程序集。
请教.net的dll引用机制,到底是如何判断的?
可能是强签名部署到GAC,查看sn命令
http://msdn.microsoft.com/zh-cn/library/aa560264%28BTS.10%29.aspx
第三方公司采用强命名了,强命名的好处在于不容易造成dll 调用的混乱。
好像可以。web.config里面有个配置,可以指定旧的版本引用全部指向新版本。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>