我目前正在开发一个。net应用程序,它由20个项目组成。其中一些项目是使用。net 3.5编译的,其他一些仍然是。net 2.0项目(到目前为止没有问题)。
问题是,如果我包含一个外部组件,我总是得到以下警告:
发现同一依赖程序集的不同版本之间存在冲突。
这个警告到底是什么意思,有没有可能排除这个警告(比如在源代码文件中使用#pragma disable)?
我目前正在开发一个。net应用程序,它由20个项目组成。其中一些项目是使用。net 3.5编译的,其他一些仍然是。net 2.0项目(到目前为止没有问题)。
问题是,如果我包含一个外部组件,我总是得到以下警告:
发现同一依赖程序集的不同版本之间存在冲突。
这个警告到底是什么意思,有没有可能排除这个警告(比如在源代码文件中使用#pragma disable)?
当前回答
=>检查将有一些实例的应用程序部分安装。
=>首先从卸载应用程序卸载该实例。
=>然后,清理,重建,并尝试部署。
这解决了我的问题。希望它也能帮助到你。 致以最亲切的问候。
其他回答
这也发生在我身上。一个dll被引用了两次:一次直接(在引用中),一次间接(被另一个引用的项目引用)。 我删除了直接参考,清洗和重建解决方案。固定的问题。
我在我的一个项目中也遇到了同样的问题,然而,上面没有一个有助于解决警告。我检查了详细的构建日志文件,我使用AsmSpy来验证我在受影响的解决方案中为每个项目使用了正确的版本,我仔细检查了每个项目文件中的实际条目-没有任何帮助。
最终发现,问题是我在一个项目中拥有的一个引用的嵌套依赖关系。该引用(A)反过来需要(B)的不同版本,后者直接从我的解决方案中的所有其他项目中引用。更新被引用项目中的引用解决了这个问题。
Solution A
+--Project A
+--Reference A (version 1.1.0.0)
+--Reference B
+--Project B
+--Reference A (version 1.1.0.0)
+--Reference B
+--Reference C
+--Project C
+--Reference X (this indirectly references Reference A, but with e.g. version 1.1.1.0)
Solution B
+--Project A
+--Reference A (version 1.1.1.0)
我希望上面的说明说明了我的意思,我花了几个小时才发现,所以希望其他人也能从中受益。
在Mac Visual Studio上编辑.resx文件时似乎有一个问题。 我真的不知道发生了什么,但当我在Mac上编辑一些.resx文件时,我就遇到了这个问题。 我在Windows上打开项目,打开文件,它们就像没有被编辑过一样。 于是我编辑了它们,保存了下来,Mac上的一切也都恢复正常了。
我想在上面的评论中发布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之间存在冲突。
另一件需要考虑和检查的事情是,确保没有任何正在运行的服务正在使用该bin文件夹。如果是,则停止服务并重新构建解决方案