我在VS 2013(Update 1)中创建了一个新的ASP.NET MVC 5 Web项目,然后更新了所有NuGet包。当我构建项目时,我收到以下警告:
警告MSB3243:无法解决“Newtonsoft.Json,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”和“Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”之间的冲突。
但是,当我检查web.config时,我发现绑定重定向已到位:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
这正是警告建议的内容。
我该如何修复此警告?
这里我用来修复警告的步骤:
没有人提到以下内容,在我的理解中是正确的解决方案:
去安装nuget的项目的csproj,并将AutoGEneratedBindingRedirects
设置为false
。
<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
我有这个问题,因为我更新了包,其中包括对Newtonsoft.Json 4.5.6的引用的Microsoft.AspNet.WebApi,我已经安装了版本6。使用版本6并不够聪明。
要解决此问题,在Web Api更新后,我打开了Tools> NuGet Package Manager>程序包管理器控制台并运行:
Update-Package Newtonsoft.Json
日志显示6.0.x和4.5.6版本都更新到最新版本,一切都很好。
我有一种感觉会再次出现。
我发现从项目文件中删除此部分修复了问题。
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
如果以上都不起作用,请尝试在web.config或app.config中使用它:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
请记住,使用绑定重定向
oldVersion = “0.0.0.0-6.0.0.0”
您说旧版本的dll介于版本0.0.0.0和版本6.0.0.0之间。
我从Newtonsoft.Json 11.0.1升级到12.0.2。在Notepad ++中打开项目文件我发现了两者
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
和
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
我删除了包含引用的ItemGroup,其中提示路径为版本11.0.1。
找到这些问题可能会非常令人沮丧。更重要的是,开发人员通常遵循与先前项目设置相同的步骤。先前的设置没有遇到问题。无论出于何种原因,项目文件偶尔会被错误更新。
我非常希望微软能够解决这些视觉工作室DLL地狱问题。它经常发生并导致进展停止直到它被修复,通常是通过反复试验。
我有类似的问题,只是想在我的情况下为其他人发布答案。
我有一个运行ASP.NET Web应用程序的解决方案,其中包含多个其他C#类lib项目。
我的ASP.NET Web应用程序不使用json,而是使用其他项目。
这就是我修复它的方法:
第2步首先添加json的配置信息,建议所有项目使用最新版本(6),无论他们有什么版本。将程序集绑定添加到Web.Config很可能就是修复。
但是,第2步还清理了som遗留代码。原来我们之前在我们的Web应用程序中使用了json的旧版本(5),并且当引用(我怀疑:手动)被删除时,NuGet文件夹没有被删除。添加最新的json(6),删除旧文件夹(json v5)。这也可能是修复的一部分。
我更新了我的包,甚至重新安装了它 - 但我仍然得到与OP提到的完全相同的错误。我通过执行以下操作手动编辑了引用的dll。
我从我的引用中删除了newtonsoft.json.dll,然后从bin directoy中手动删除了.dll。然后我手动将nutons包文件夹中的newtonsoft.json.dll复制到项目箱中,然后通过浏览到.dll文件添加引用。
现在我的项目再次构建。