我目前正在开发一个。net应用程序,它由20个项目组成。其中一些项目是使用。net 3.5编译的,其他一些仍然是。net 2.0项目(到目前为止没有问题)。
问题是,如果我包含一个外部组件,我总是得到以下警告:
发现同一依赖程序集的不同版本之间存在冲突。
这个警告到底是什么意思,有没有可能排除这个警告(比如在源代码文件中使用#pragma disable)?
我目前正在开发一个。net应用程序,它由20个项目组成。其中一些项目是使用。net 3.5编译的,其他一些仍然是。net 2.0项目(到目前为止没有问题)。
问题是,如果我包含一个外部组件,我总是得到以下警告:
发现同一依赖程序集的不同版本之间存在冲突。
这个警告到底是什么意思,有没有可能排除这个警告(比如在源代码文件中使用#pragma disable)?
当前回答
我想在上面的评论中发布pauloya提供的解决方案。我相信这是找到冒犯性引用的最佳解决方案。
最简单的方法找到什么是“冒犯的引用”是 设置生成输出的详细信息(工具,选项,项目和解决方案, 构建和运行,MSBuild项目构建输出详细信息)和 构建之后,在输出窗口中搜索警告。查看原文 就在它上面。
例如,当你在输出面板中搜索“冲突”时,你可能会发现这样的东西:
3> There was a conflict between "EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
3> "EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was chosen because it was primary and "EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was not.
正如您所看到的,EF版本5和6之间存在冲突。
其他回答
=>检查将有一些实例的应用程序部分安装。
=>首先从卸载应用程序卸载该实例。
=>然后,清理,重建,并尝试部署。
这解决了我的问题。希望它也能帮助到你。 致以最亲切的问候。
打开“解决方案资源管理器”。 点击“显示所有文件” 扩大“引用” 您将看到一个(或多个)引用与其他引用的图标略有不同。通常情况下,它会有一个黄色的方框,建议你记下它。把它拿掉。 重新添加引用并编译代码。 这是所有。
在我的例子中,MySQL引用有一个问题。不管怎样,我可以在所有可用的引用列表下列出它的三个版本;适用于。net 2.0、。net 4.0和。net 4.5。我遵循了上面的方法1到6,它对我很有效。
我想在上面的评论中发布pauloya提供的解决方案。我相信这是找到冒犯性引用的最佳解决方案。
最简单的方法找到什么是“冒犯的引用”是 设置生成输出的详细信息(工具,选项,项目和解决方案, 构建和运行,MSBuild项目构建输出详细信息)和 构建之后,在输出窗口中搜索警告。查看原文 就在它上面。
例如,当你在输出面板中搜索“冲突”时,你可能会发现这样的东西:
3> There was a conflict between "EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
3> "EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was chosen because it was primary and "EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was not.
正如您所看到的,EF版本5和6之间存在冲突。
我也有同样的问题,我通过在web.config中更改以下内容来解决。
这发生在我身上,因为我正在使用Newtonsoft运行应用程序。Json 4.0
来自:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
To:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
这实际上取决于外部组件。当你在. net应用程序中引用一个外部组件时,它会生成一个GUID来标识该组件。当某个项目引用的外部组件与另一个程序集中的另一个此类组件名称相同但版本不同时,会发生此错误。
当您使用“浏览”查找引用并添加错误版本的程序集时,有时会发生这种情况,或者您的代码存储库中组件的版本与您在本地机器中安装的版本不同。
尝试找出哪些项目有这些冲突,从引用列表中删除组件,然后再次添加它们,确保指向相同的文件。