. net 3.5解决方案在使用msbuild编译时出现此警告。

有时NDepend可能会有所帮助,但在这种情况下,它没有提供任何进一步的细节。像Bob一样,我最终不得不在ILDASM中打开每个程序集,直到找到引用依赖程序集的旧版本。

我确实尝试使用VS 2010 Beta 2的MSBUILD(连接文章指出这在CLR的下一个版本中得到了修复),但也没有提供更多的细节(可能是在Beta 2后修复的)。

有没有更好的(更自动化的)方法?


当前回答

此警告产生于默认ASP。NET MVC 4测试版 在这里看到的

中,此警告的任何强制转换都可以通过手动编辑 .csproj文件。 修改……: Reference Include="System.Net.Http" 阅读......: Reference Include="System.Net. "Http, Version = 4.0.0.0 "

其他回答

我也有这个问题,并使用了AMissico的建议,发现了这个问题(尽管必须将冗长级别设置为详细。

在找到罪魁祸首后,问题其实很简单。

背景: 我把我的项目从VS2008升级到VS2010。在VS2008中,目标框架是3.5,当我把它带入VS2010时,我把它切换到4 (Full)。我还升级了一些第三方组件,包括水晶报表。

结果发现大多数系统引用指向4.0.0.0版本,但有几个没有自动更改(System和System. web . services),仍然指向2.0.0.0版本。水晶报告引用4.0.0.0,所以这是冲突发生的地方。只需将光标放在解决方案资源管理器中的第一个System库上,向下移动列表并查找对2.0.0.0的任何引用,删除并重新添加新的4.0.0.0版本就可以了。

奇怪的是,大多数参考文献都被正确更新了,如果不是水晶报告,我可能永远都不会注意到……

我发现(至少在Visual Studio 2010中),您需要将输出详细信息设置为至少详细的,以便能够发现问题。

这可能是我的问题是一个参考,以前是一个GAC参考,但这不再是我的机器重新安装后的情况。

快速修复:

右键单击解决方案->管理解决方案->的NuGet包在巩固下,你可以看到是否有不同版本的相同的包被安装。卸载不同版本,安装最新版本。

有时候@AMissico的答案是不够的。在我的例子中,我在Output窗口中找不到错误,所以我决定创建一个日志文件并分析它,执行以下步骤:

将构建日志保存到一个文件…https://msdn.microsoft.com/en-us/library/ms171470.aspx msbuild MyProject的。proj /fl /flp:logfile=MyProjectOutput.log 查找文本:警告MS…或者具体的警告信息:(例如,第9293行)发现不同版本之间存在冲突…和冲突错误的完整细节将在此消息的上面(例如,第9277行)。

Visual Studio 2013

此警告产生于默认ASP。NET MVC 4测试版 在这里看到的

中,此警告的任何强制转换都可以通过手动编辑 .csproj文件。 修改……: Reference Include="System.Net.Http" 阅读......: Reference Include="System.Net. "Http, Version = 4.0.0.0 "