代码之家  ›  专栏  ›  技术社区  ›  Caius Jard

VS2017-整合Newtonsoft.Json.dll(但它也可以是任何不同版本的nuget包)

  •  0
  • Caius Jard  · 技术社区  · 7 年前

    我的解决方案包含60个项目,其中大多数使用Newtonsoft.Json.dll,许多项目相互引用。一切进展顺利,没有任何警告。

    看了一下nugget软件包管理器的整合功能,它似乎非常有用——使用不同版本的Newtonsoft的多个项目可以很快规范化为使用同一版本。大多数项目使用同一个版本,有些项目领先于少数未成年人,有些项目落后于最多一个主要版本。单击“完成”,所有项目现在都安装并引用了相同的版本。显然地。

    出现有关查找同一程序集的不同冲突版本的警告,因此我决定在项目树下查找每个Newtonsoft.Json.dll并将其删除,同时删除solutiondir\packages\Newtonsoft.Json文件夹,然后执行包还原并重新生成解决方案。。

    奇怪的是,它似乎没有帮助。。我真的认为,清除旧版本并让NPM使解决方案中的每个项目都在同一个版本上,这意味着没有9个不同版本的NPM在运行,但是对dll进行搜索肯定会在解决方案树上找到不同大小的文件

    有什么正确的方法来处理此问题并消除合并后冲突程序集的警告?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Caius Jard    7 年前

    我意识到解决方案中的许多项目都有一个web配置绑定重定向,它要求将Newtonsoft.Json的0.0.0.0-6.0.0.0重定向到6.0.0.0

    我没有调整绑定重定向,而是使用NPM将所有Newtonsoft.Json升级到v6.0.1,随后对它的所有项目引用都依赖于6.0.0.0的assemblyversion

    因此,我假设当绑定重定向指定了解决方案中不存在的库的版本,并且该版本在其他地方成功融资时,另一个版本可能会成为与本地引用版本冲突的版本。

    编辑:似乎NuGet包管理器(控制台)/Powershell也可以使用以下命令规范绑定重定向:

    Get-Project –All | Add-BindingRedirect
    

    更多信息: https://weblog.west-wind.com/posts/2014/Nov/29/Updating-Assembly-Redirects-with-NuGet