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

发现同一依赖程序集的不同版本之间存在无法解决的冲突。当日志详细信息设置为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,然后我如何使警告消失?


当前回答

我只能通过对比所显示的两条消息来进一步支持Ruben的回答:

信息是:

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

So, Ruben's right—this is just not true. There are no conflicts whatsoever, just a missing assembly. This is especially boring when the project is an ASP.NET application, since the views are compiled on demand, that is, just before displayed for the first time. This is when it becomes necessary to have the assembly available. (There's an option to pre-compile the views together with the rest of the code, but this is another story.) On the other hand, if you set the verbosity to Diagnostic you get the following output:

C:\Program Files (x86)\MSBuild\12.0\bin\ Microsoft.Common.CurrentVersion.targets(1697,5):警告MSB3245:无法解析此引用。无法定位程序集“System.Web”。Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"。检查以确保程序集存在于磁盘上。如果您的代码需要此引用,则可能会出现编译错误。

因此,你所需要做的就是:

手动向程序集添加引用(可能将其定位到磁盘上) GAC,并将其添加为“直接”参考),或 使用NuGet包(如果在图库中发布)下载它并引用其中包含的程序集。

更多关于NuGet画廊在这里。 更多关于预编译ASP。NET视图。

其他回答

我遵循了这里的几个回复的建议来找出问题所在,但似乎没有一个答案能解释如何修复它。我的问题是,一个参考文献需要另一个参考文献的不同版本。因此,Newtonsoft的版本是6,但其他一些DLL想要4.5。然后我按照其他答案的建议升级了Newtonsoft,这让事情变得更糟。

所以我实际上降低了我的Newtonsoft安装,警告消失了(VS 2017):

右键单击解决方案资源管理器中的引用,并选择管理NuGet包… 在“Installed”选项卡下,找到Newtonsoft(或任何你的冲突) 在右侧,“版本”旁边会出现一个下拉框,您可以将其更改为旧版本。对我来说,这个下拉菜单可以用来降级并不明显。

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

重申@elshev的评论 右键单击解决方案->管理解决方案->的NuGet包在巩固下,你可以看到是否有不同版本的相同的包被安装。在那里更新包。解决冲突错误。

在将包从nuget切换到本地引用dll后,我遇到了这个问题。这个问题是app.config中的旧的运行时绑定。

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