在使用msbuild进行编译时,.NET 3.5解决方案最终出现此警告。
有时NDepend可能有所帮助,但在这种情况下,它没有提供任何进一步的细节。 像Bob一样,我最终不得不在ILDASM中打开每个程序集,直到找到引用旧版依赖程序集的程序集。
我确实尝试使用VS 2010 Beta 2中的MSBUILD(因为Connect文章表明这已经在下一版本的CLR中得到修复)但是它没有提供任何更多细节(可能在Beta 2后修复)
有更好的(更自动化的)方法吗?
#1楼
为默认的ASP.NET MVC 4 beta生成此警告, 请参见此处
在,可以通过手动编辑项目的.csproj文件来消除任何强制转换此警告。
修改........:参考包含=“System.Net.Http”
阅读......:参考包含=“System.Net.Http,Version = 4.0.0.0”
#2楼
如前所述在这里 ,你需要删除未使用的引用,并警告会去。
#3楼
将“MSBuild项目构建输出详细程度”更改为“详细”或更高版本。 为此,请按照下列步骤操作:
- 打开“选项”对话框(“ 工具” - >“选项...” )。
- 在左侧树中,选择“ 项目和解决方案”节点,然后选择“ 生成并运行” 。
- 注意:如果此节点未显示,请确保选中“ 显示所有设置 ”对话框底部的复选框。
在出现的工具/选项页面中,根据您的版本将MSBuild项目构建输出详细级别设置为适当的设置:
- 在VS2012,VS2013或VS2015上进行诊断 (这些版本中的消息说您应该使用“详细”, 但这是完全错误的,您应该使用“诊断” )
- 当你在VS2010上时详细说明
- 在VS2008或更早版本中, 正常就足够了。
- 构建项目并查看输出窗口。
查看MSBuild消息。 ResolveAssemblyReferences
任务(MSB3247发起的任务)应该可以帮助您调试此特定问题。
我的具体情况是对SqlServerCe的错误引用。 见下文。 我有两个项目引用了两个不同版本的SqlServerCe。 我用旧版本去了项目,删除了引用,然后添加了正确的引用。
Target ResolveAssemblyReferences:
Consider app.config remapping of assembly "System.Data.SqlServerCe, ..."
from Version "3.5.1.0" [H:\...\Debug\System.Data.SqlServerCe.dll]
to Version "9.0.242.0" [C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PublicAssemblies\System.Data.SqlServerCe.dll]
to solve conflict and get rid of warning.
C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets :
warning MSB3247: Found conflicts between different versions of the same dependent assembly.
您不必打开每个程序集来确定引用程序集的版本。
- 您可以检查每个参考的属性。
- 打开项目属性并检查“引用”部分的版本。
- 使用文本编辑器打开项目。
- 使用.Net Reflector。
#4楼
没有考虑(内部)依赖关系的最简单方法:
- 打开“Solution Explorer”。
- 点击“显示所有文件”
- 展开“参考”
- 您会看到一个(或多个)引用的图标与其他引用略有不同。 通常,它是黄色框,建议你记下它。 只需删除它。
- 添加引用并编译代码。
- 就这样。
就我而言,MySQL引用存在问题。 不知何故,我可以在所有可用引用列表下列出它的三个版本。 我按照上面的过程1到6进行了操作,它对我有用。
#5楼
我发现(至少在Visual Studio 2010中)您需要将输出详细程度设置为至少详细以便能够发现问题。
可能是我的问题是以前作为GAC参考的引用,但在我的机器重新安装后不再是这种情况。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3162430