解决MSB3247 - 发现同一依赖程序集的不一样版本之间存在冲突

在使用msbuild进行编译时,.NET 3.5解决方案最终出现此警告。 app

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

我确实尝试使用VS 2010 Beta 2中的MSBUILD(由于Connect文章代表这​​已经在下一版本的CLR中获得修复)可是它没有提供任何更多细节(可能在Beta 2后修复) ide

有更好的(更自动化的)方法吗? 工具


#1楼

为默认的ASP.NET MVC 4 beta生成此警告, 请参见此处 ui

在,能够经过手动编辑项目的.csproj文件来消除任何强制转换此警告。 spa

修改........:参考包含=“System.Net.Http” 调试

阅读......:参考包含=“System.Net.Http,Version = 4.0.0.0” code


#2楼

如前所述在这里 ,你须要删除未使用的引用,并警告会去。 rem


#3楼

将“MSBuild项目构建输出详细程度”更改成“详细”或更高版本。 为此,请按照下列步骤操做: get

  1. 打开“选项”对话框(“ 工具” - >“选项...” )。
  2. 在左侧树中,选择“ 项目和解决方案”节点,而后选择“ 生成并运行”
    • 注意:若是此节点未显示,请确保选中“ 显示全部设置 ”对话框底部的复选框。
  3. 在出现的工具/选项页面中,根据您的版本将MSBuild项目构建输出详细级别设置为适当的设置:

  4. 构建项目并查看输出窗口。

查看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楼

没有考虑(内部)依赖关系的最简单方法:

  1. 打开“Solution Explorer”。
  2. 点击“显示全部文件”
  3. 展开“参考”
  4. 您会看到一个(或多个)引用的图标与其余引用略有不一样。 一般,它是黄色框,建议你记下它。 只需删除它。
  5. 添加引用并编译代码。
  6. 就这样。

就我而言,MySQL引用存在问题。 不知何故,我能够在全部可用引用列表下列出它的三个版本。 我按照上面的过程1到6进行了操做,它对我有用。


#5楼

我发现(至少在Visual Studio 2010中)您须要将输出详细程度设置为至少详细以便可以发现问题。

多是个人问题是之前做为GAC参考的引用,但在个人机器从新安装后再也不是这种状况。

相关文章
相关标签/搜索