Asp.net mvc 在新的ASP.NET MVC 5项目中更新NuGet包引用后,如何修复程序集版本与JSON.NET的冲突?
我在VS 2013中创建了一个新的ASP.NET MVC 5 web项目(更新1),然后更新了所有NuGet软件包。构建项目时,我收到以下警告: 警告MSB3243:无法解决“Newtonsoft.Json,版本=6.0.0.0,区域性=中性,PublicKeyToken=30AD4FE6B2A6EED”与“Newtonsoft.Json,版本=4.5.0.0,区域性=中性,PublicKeyToken=30AD4FE6B2A6EED”之间的冲突 但是,当我检查web.config时,我看到绑定重定向已就位:Asp.net mvc 在新的ASP.NET MVC 5项目中更新NuGet包引用后,如何修复程序集版本与JSON.NET的冲突?,asp.net-mvc,json.net,nuget,visual-studio-2013,asp.net-mvc-5.1,Asp.net Mvc,Json.net,Nuget,Visual Studio 2013,Asp.net Mvc 5.1,我在VS 2013中创建了一个新的ASP.NET MVC 5 web项目(更新1),然后更新了所有NuGet软件包。构建项目时,我收到以下警告: 警告MSB3243:无法解决“Newtonsoft.Json,版本=6.0.0.0,区域性=中性,PublicKeyToken=30AD4FE6B2A6EED”与“Newtonsoft.Json,版本=4.5.0.0,区域性=中性,PublicKeyToken=30AD4FE6B2A6EED”之间的冲突 但是,当我检查web.config时,我看到绑定
这正是警告所建议的
如何修复此警告?以下是我用于修复此警告的步骤:
- 在VS中卸载项目
- 编辑.csproj文件
- 搜索对Newtonsoft.Json程序集的所有引用
- 找到两个,一个到v6,一个到v5
- 用v6替换对v5的引用
- 重新加载项目
- 生成并通知程序集引用失败
- 查看引用并查看Newtonsoft.Json现在有两个。删除无法解决的问题
- 重建-无警告
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll
如果上述方法均无效,请尝试在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>
我遇到这个问题是因为我更新了软件包,其中包括Microsoft.AspNet.WebApi,它引用了Newtonsoft.Json 4.5.6,并且我已经安装了版本6。它不够聪明,无法使用版本6 为了解决这个问题,在WebApi更新之后,我打开了Tools>NuGet Package Manager>Pacakge Manager控制台并运行:
Update-Package Newtonsoft.Json
日志显示6.0.x和4.5.6版本都更新到了最新版本,一切正常
我有一种感觉,这种情况会再次出现。我也有类似的问题,只是想为我这种情况下的其他人发布一个答案 我有一个运行ASP.NET Web应用程序和多个其他C#类库项目的解决方案 我的ASP.NET Web应用程序没有使用json,而是使用其他项目 我就是这样修复的:
然而,步骤2也清理了som遗留代码。事实证明,我们以前在Web应用程序中使用了旧版本(5)的json,并且在删除引用(我怀疑:手动)时,NuGet文件夹没有被删除。添加最新的json(6),删除旧文件夹(json v5)。这可能也是修复的一部分。我更新了我的软件包,甚至重新安装了它-但我仍然收到与OP提到的完全相同的错误。我通过执行以下操作手动编辑了引用的dll 我从引用中删除了newtonsoft.json.dll,然后从bin目录中手动删除了.dll。然后我手动将newtonsoft.json.dll从nuget包文件夹复制到项目bin中,然后通过浏览.dll文件添加引用
现在,我的项目再次构建。请记住,使用绑定重定向 oldVersion=“0.0.0.0-6.0.0.0” 您是说dll的旧版本介于版本0.0.0.0和版本6.0.0.0之间。程序集重定向错误的最终解决方案 好的,希望这将有助于解决任何(正常的)程序集引用差异
高兴。没有人提到以下内容,据我所知,这是正确的解决方案: 转到安装nuget的项目的csproj,并将
AutoGEneratedBindingRedirects
设置为false
我从Newtonsoft.Json 11.0.1升级到了12.0.2。在记事本++中打开项目文件时,我发现了这两个文件
<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>
..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll
及
..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll
我删除了用11.0.1版的提示路径包装引用的ItemGroup
这些问题可能会让人非常沮丧。此外,开发人员通常遵循与以前项目设置相同的步骤。以前的设置没有遇到此问题。无论出于何种原因,项目文件偶尔会更新不正确
我非常希望微软能解决这些突然出现的VisualStudioDLL问题。这种情况发生得太频繁,导致进程突然停止,直到它被修复为止,通常是通过尝试和错误。Veverke提到,可以通过将AutoGEneratedBindingRedirects设置为false来禁用绑定重定向的生成。不确定这是不是一个新的东西,因为这个问题是张贴,但有一个“跳过应用绑定重定向”选项在工具/Options/Nuget数据包管理器,它可以切换。默认情况下,它是关闭的,这意味着将应用重定向
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>