警告:发现同一依赖程序集的不同版本之间存在冲突

我目前正在开发一个 .NET 应用程序,其中包含 20 个项目。其中一些项目是使用 .NET 3.5 编译的,其他一些项目仍然是 .NET 2.0 项目(目前没有问题)。

问题是,如果我包含外部组件,我总是收到以下警告:

'Found conflicts between different versions of the same dependent assembly'.

这个警告到底是什么意思,是否有可能排除这个警告(比如使用

请先 登录 后评论

2 个回答

Jon Limjap

这实际上取决于您的外部组件。当您在 .NET 应用程序中引用外部组件时,它会生成一个 GUID 来标识该组件。当您的一个项目引用的外部组件与另一个程序集中的另一个此类组件名称相同但版本不同时,就会发生此错误。

当您使用“浏览”查找引用并添加错误版本的程序集,或者您的代码存储库中的组件版本与本地计算机中安装的组件版本不同时,有时会发生这种情况。

尝试找出哪些项目存在这些冲突,从引用列表中删除组件,然后再次添加它们,确保您指向同一个文件。

请先 登录 后评论
Matt Hamilton

基本上,当您引用的程序集将“Copy Local”设置为“True”时,就会发生这种情况,这意味着 DLL 的副本与您的 exe 一起放置在 bin 文件夹中。

由于 Visual Studio 也会复制引用程序集的所有依赖项,因此最终可能会引用同一程序集的两个不同版本。如果您的项目位于不同的解决方案中,因此可以单独编译,则更有可能发生这种情况。

我解决这个问题的方法是将 Copy Local 设置为 False 以用于装配项目中的引用。仅对需要运行成品的程序集的可执行文件/网络应用程序执行此操作。

希望这是有道理的!

请先 登录 后评论