2009-09-22 83 views
17

我需要采用C#应用程序的内置版本并更改其中一个引用dll。什么是最好的办法做到这一点,我有特定的版本在参考DLL上关闭,但只要我测试用新版本替换DLL,我得到“无法加载文件或程序集XXXXX,版本= XXXXX。 ?有没有办法从关心的DLL版本停止装载机这样的DLL将只是尝试加载在不重新编译项目的情况下升级C#项目中的引用dll

回答

18

是的,你可以做到这一点 - 请参阅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]

+0

这将需要重新编译,不会它? – 2009-09-22 17:56:29

+0

或者,只在运行时检查配置文件? – 2009-09-22 17:59:23

+2

在运行时检查这些xml文件。见http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian 2009-09-22 18:01:18

相关问题