加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 解析MSB3247 – 发现同一依赖程序集的不同版本之间的冲

发布时间:2020-12-14 01:37:55 所属栏目:百科 来源:网络整理
导读:.NET 3.5解决方案在使用msbuild编译时出现此警告。 有时NDepend可能会帮助,但在这种情况下,它没有给任何进一步的细节。 Like Bob我最终不得不求助于打开ILDASM中的每个程序集,直到我找到一个参考较早版本的依赖程序集。 我没有尝试从VS 2010 Beta 2使用MS
.NET 3.5解决方案在使用msbuild编译时出现此警告。

有时NDepend可能会帮助,但在这种情况下,它没有给任何进一步的细节。 Like Bob我最终不得不求助于打开ILDASM中的每个程序集,直到我找到一个参考较早版本的依赖程序集。

我没有尝试从VS 2010 Beta 2使用MSBUILD(因为Connect文章指出这是修复在下一版本的CLR),但没有提供任何更多的细节(也许固定后Beta 2)

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

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

>打开选项对话框(工具 – >选项…)。
>在左侧树中,选择“项目和解决方案”节点,然后选择“构建并运行”。

>注意:如果此节点未显示,请确保选中了显示所有设置对话框底部的复选框。

>在出现的工具/选项页面中,根据您的版本将MSBuild项目生成输出详细程度级别设置为适当的设置:

> VS2012,VS2013或VS2015上的诊断(这些版本中的消息说您应该使用“详细”,but this is plain wrong,you should use “Diagnostics”)
>详细当你在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:...DebugSystem.Data.SqlServerCe.dll] 
        to Version "9.0.242.0" [C:Program FilesMicrosoft Visual Studio 8Common7IDEPublicAssembliesSystem.Data.SqlServerCe.dll]
        to solve conflict and get rid of warning.
    C:WINDOWSMicrosoft.NETFrameworkv3.5Microsoft.Common.targets : 
        warning MSB3247: Found conflicts between different versions of the same dependent assembly.

您不必打开每个程序集以确定引用程序集的版本。

>您可以检查每个参考的属性。>打开项目属性并检查“参考”部分的版本。>使用文本编辑器打开项目。>使用.Net反射器。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读