在Visual Studio 中使用 <AutoGenerateBindingRedirects> 来解决引用的程序集版本冲突问题
2019-05-08 10:48 音乐让我说 阅读(2317) 评论(0) 编辑 收藏 举报
我是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
解决方法:
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。