我有一个大约60个项目的解决方案,其中大多数使用Newtonsoft.Json.dll,并且许多项目相互引用。事情发展得很好,没有任何警告。
看了一下nugget包管理器的合并功能,它似乎非常有用--使用不同版本的Newtonsoft的多个项目可以很快地调整为使用相同的版本。大多数项目使用相同的版本,有些项目领先几个次要版本,有些项目最多落后一个主要版本。单击done,所有项目现在都安装并引用了相同的版本。很明显。
出现关于查找同一程序集的不同冲突版本的警告,因此我决定归档-找到项目树下的每个Newtonsoft.Json.dll并擦除它们,同时还擦除solutiondir\packages\Newtonsoft.Json文件夹,然后执行包还原和重建解决方案。
奇怪的是,它似乎并没有帮助..我真的认为清除旧版本并让NPM在同一版本上创建解决方案中的每个项目,将意味着不会有9个不同版本的解决方案,但毫无疑问,搜索dll会在解决方案树中找到不同大小的文件
什么是正确的方法来处理这个问题,并在整合后消除关于冲突程序集的警告?
发布于 2018-11-21 22:40:33
在意识到解决方案中的许多项目都有一个web配置绑定重定向,要求将0.0.0.0-6.0.0.0的Newtonsoft.Json重定向到6.0.0.0之后,我能够解决我的上下文中的警告
安装的版本(5.0.2)的程序集版本是4.5.0.0,这是我能找到的第一个程序集版本是6.0.0.0而不是调整绑定重定向,我使用NPM将所有Newtonsoft.Json升级到v6.0.1,随后引用它的所有项目都依赖于6.0.0.0的程序集版本
因此,我假设当绑定重定向指定的库的版本在解决方案中不存在,并且在其他地方成功地获得资金时,其他版本可能会成为与本地引用的版本冲突的版本。
编辑:似乎NuGet包管理器(控制台)/Powershell也可以使用以下命令来规范绑定重定向:
Get-Project –All | Add-BindingRedirect
更多信息:https://weblog.west-wind.com/posts/2014/Nov/29/Updating-Assembly-Redirects-with-NuGet
TLDR;确保绑定重定向引用项目中可用的库版本
https://stackoverflow.com/questions/53401037
复制相似问题