升级C#项目中的引用dll,而无需重新编译该项目

升级C#项目中的引用dll,而无需重新编译该项目,c#,dll,reference,version,assembly-resolution,C#,Dll,Reference,Version,Assembly Resolution,我需要获取一个C#应用程序的构建版本,并更改其中一个参考dll。最好的方法是什么?我在参考dll上关闭了特定的版本,但一旦我测试用新版本替换dll,我就会得到无法加载文件或程序集XXXXX,版本=XXXXX。有没有一种方法可以阻止加载程序关心dll的版本,这样dll就会尝试加载 是的,您可以这样做-请参阅MSDN文章 您应该阅读整个文档,但它实际上涉及程序集的发布者创建“发布者策略文件”或使用者向app.config文件添加bindingRedirect,如下所示(直接从文章中复制): 请注

我需要获取一个C#应用程序的构建版本,并更改其中一个参考dll。最好的方法是什么?我在参考dll上关闭了特定的版本,但一旦我测试用新版本替换dll,我就会得到无法加载文件或程序集XXXXX,版本=XXXXX。有没有一种方法可以阻止加载程序关心dll的版本,这样dll就会尝试加载

是的,您可以这样做-请参阅MSDN文章

您应该阅读整个文档,但它实际上涉及程序集的发布者创建“发布者策略文件”或使用者向
app.config
文件添加
bindingRedirect
,如下所示(直接从文章中复制):


请注意:

  • 如果您没有明确指定 你的文化(很多人不这么认为),它会 保持“中立”而不是“中立”

  • 如果你还不知道,你可以 获取程序集的公钥令牌 使用强名称实用程序,如 此:
    sn-t[AssemblyPath]


这需要重新编译,不是吗?或者,配置文件只在运行时检查?这些xml文件在运行时检查。请看@Michael-事实上,布莱恩说了什么。:)我可以使用此
发布者策略文件
引用我的C#WinForms应用程序中的
Microsoft.Office.Interop.PowerPoint
程序集的任何版本吗?
<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>