17
我需要采用C#应用程序的内置版本并更改其中一个引用dll。什么是最好的办法做到这一点,我有特定的版本在参考DLL上关闭,但只要我测试用新版本替换DLL,我得到“无法加载文件或程序集XXXXX,版本= XXXXX。 ?有没有办法从关心的DLL版本停止装载机这样的DLL将只是尝试加载在不重新编译项目的情况下升级C#项目中的引用dll
我需要采用C#应用程序的内置版本并更改其中一个引用dll。什么是最好的办法做到这一点,我有特定的版本在参考DLL上关闭,但只要我测试用新版本替换DLL,我得到“无法加载文件或程序集XXXXX,版本= XXXXX。 ?有没有办法从关心的DLL版本停止装载机这样的DLL将只是尝试加载在不重新编译项目的情况下升级C#项目中的引用dll
是的,你可以做到这一点 - 请参阅MSDN文章Redirecting Assembly Versions
你应该读整文档,但它基本上涉及程序集的发布者创建'发布者策略文件'或消费者将bindingRedirect
添加到app.config
文件,如下所示(直接从文章复制):
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
的几个注意事项:
如果您还没有明确规定 你的文化(因为很多人没有),这将 是 “中性”,而不是 “EN-US”。
如果你不知道的话,你可以 得到大会的公钥标记 使用强名称实用,像这样 :sn -t [AssemblyPath]
这将需要重新编译,不会它? – 2009-09-22 17:56:29
或者,只在运行时检查配置文件? – 2009-09-22 17:59:23
在运行时检查这些xml文件。见http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian 2009-09-22 18:01:18