当我清理并构建具有多个项目的解决方案时,输出窗口将报告构建成功。然而,当我查看错误列表窗口时,它向我显示了这样的警告:

发现同一依赖程序集的不同版本之间存在无法解决的冲突。当日志详细信息设置为detailed时,这些引用冲突将在生成日志中列出。C:\Program Files (x86)\MSBuild\12.0\bin\ Microsoft.Common.CurrentVersion.targets

当我双击此消息时,它将打开C:\Program Files (x86)\MSBuild\12.0\bin\ Microsoft.Common.CurrentVersion。目标文件,但我不明白任何东西在它。

我正在使用Visual Studio Express 2013的Web。

我如何找出什么是错误的,与哪个DLL,然后我如何使警告消失?


当前回答

请注意,我通过将AutoGenerateBindingRedirects放在csproj文件中的TargetFramework之后解决了这个问题:

<TargetFramework>net462</TargetFramework>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

其他回答

显然有很多不同的原因,因此有很多解决这个问题的方法。为了将我的程序集加入到混合中,我们将之前在我们的Web项目中直接引用的程序集(System.Net.Http)升级到由NuGet管理的版本。这删除了该项目中的直接引用,但是我们的测试项目仍然包含直接引用。升级两个项目以使用nuget管理的程序集解决了这个问题。

我已经卸载了Microsoft ASP。NET MVC nuget.org从管理NuGet Packagaes再次重新安装它。重新安装时解决了所有与剃刀版本相关的冲突。试试吧。

VS 2017, MVC项目

我不知道为什么,但对我来说,这个问题的解决方案是从控制器动作方法调用的模型方法签名中删除一个out参数。这是非常奇怪的行为,但这是我问题的解决方案。

您可以运行Dotnet CLI进行详细的诊断,以帮助查找问题。

Dotnet运行——verbose diagnostic >> full_build.log

构建完成后,您可以通过日志文件(full_build.log)搜索错误。例如,搜索“一个冲突”,应该会把你直接带到问题所在。

我已经安装了Newtonsoft。Json v10.0.0.3和Newtonsoft。Json v11.X.X。X在不同的项目从nuget.org从管理NuGet Packagaes和再次重新安装它(相同的版本)。重新安装时解决了所有与剃刀版本相关的冲突。为我工作吧!