代码改变世界

在Visual Studio 中使用 <AutoGenerateBindingRedirects> 来解决引用的程序集版本冲突问题

  音乐让我说  阅读(2317)  评论(0编辑  收藏  举报

问题: https://stackoverflow.com/questions/42836248/using-autogeneratebindingredirects-in-visual-studio-2015

 

我是Visual Studio的新手,所以请耐心等待。

我正在开发一种依赖于第三方提供的DLL文件的产品。我们将其称为OtherCompany.dll。我们不发布这个。

我们的产品包含一个依赖于OtherCompany.dll的DLL文件。我们将其称为MyCompany.dll。当我们构建MyCompany.dll时,我们正在构建针对OtherCompany.dll的1.0.0版本。但是,我们最近发现OtherCompany.dll将其版本更改为2.0.0。现有功能没有变化,只有添加。

有些用户购买了OtherCompany.dll版本2.0.0,现在我们的产品已经破产,因为版本1.0.0不在GAC中。我知道这是一个常见问题,我一直在努力寻找一个好的解决方案。

我试图将我的.csproj文件添加到我的MyCompany.dll并针对OtherCompany.dll版本1.0.0进行构建,并将其安装在具有OtherCompany.dll版本2.0.0的计算机上。它仍然没有错误

无法加载文件或程序集'OtherCompany,Version = 1.0.0,Culture = neutral,PublicKeyToken = 1234'或其依赖项之一。该系统找不到指定的文件。

据我所知,这将允许MyCompany.dll独立于OtherCompany.dll。我做错了什么或误解了什么?

我能够通过手动添加到产品.config文件中来完成工作,但这很麻烦,我想要继续工作的东西,以防下周OtherCompany.dll发布3.0.0版本。

回答者:

        您是否尝试在配置文件中使用bindingRedirect只需指定需要将1.0.0到2.0.0(或其他)的任何版本重定向到使用2.0.0。我不知道自动生成的绑定重定向。 - MaKCbIMKo 17年  3月16日14:08 
  •  
    此外,如果您的产品依赖于具有某些特定版本的“其他产品”,为什么不坚持使用此版本(在包中提供)并仅在您更新自己的版本时更新它。 - MaKCbIMKo 17年  3月16日14:11
  •  
    是的,绑定重定向有效。由于许可限制,我们无法在安装中提供“其他产品”。 -  J Mack 17年3月16日14:22
  •  
    那么,如果您有产品的安装程序,您可以询问用户他们拥有哪个版本并在安装期间更新配置。但如果他们将更新第三方库 - 它将再次失败。我认为你只需要解决许可证问题。 - MaKCbIMKo 17年  3月16日14:29
  •  
    我对许可问题并不反对,但这取决于合法,而不是我。 -  J Mack 17年3月16日15:12

 

解决方法:

 

点击右上角即可分享
微信分享提示