我目前正在开发一个.NET应用程序,它由20个项目组成.其中一些项目是使用.NET3.5编译的,另一些仍然是.NET2.0项目(到目前为止没有问题).

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

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

这个警告到底是什么意思?是否有可能排除这个警告(比如在源代码文件中使用#pragma disable)?

推荐答案

此警告意味着两个项目引用相同的程序集(例如System.Windows.Forms),但这两个项目需要不同的版本.你有几个选择:

  1. 重新编译所有项目以使用相同的版本(例如,将所有项目移至.Net 3.5).这是首选选项,因为所有代码都使用编译时使用的依赖项版本运行.

  2. 加一个binding redirect.这将抑制警告.然而,你的.Net 2.0项目将(在运行时)绑定到.Net 3.5版本的依赖程序集,如System.Windows.Forms.在VisualStudio中双击error可以快速添加绑定重定向.

  3. 使用CopyLocal=true.我不确定这是否会抑制警告.和上面的选项2一样,这意味着所有项目都将使用.Net 3.5版本的系统.windows .形式.

以下是几种识别冒犯性引用的方法:

  • 你可以使用一个实用程序,比如在
  • 另一个简单的方法是设置Build

.net相关问答推荐

IANA 到 Windows 时区映射

C#/.NET + VisualStudio,命名空间问题

在 C# 中,如何使用泛型的基类将泛型接口的所有实例注入到单个构造函数中?

如何正确使用“await using”语法?

docs.microsoft.com 上的 .NET 平台扩展是什么?

(C# 7.2)“私人保护”修饰符的用例是什么?

Visual Studio 2017 和 2019 突出显示滚动条中所选单词的出现

使用带有大数据的 SqlCommand 异步方法的可怕性能

System.ValueTuple 和 System.Tuple 有什么区别?

为什么无穷大在 Windows 10 控制台中打印为“8”?

我可以先使用 EF 代码和 .net 核心生成迁移脚本吗

如果 async-await 不创建任何额外的线程,那么它如何使应用程序响应?

没有科学记数法的双精度字符串转换

判断 HttpStatusCode 是代表成功还是失败

/langversion 的错误选项“6”无效;必须是 ISO-1、ISO-2、3、4、5 或默认值

Visual Studio 2015 项目不再在调试模式下运行

使用 C# 设置全局热键

将 SignalR 2.0 .NET 客户端重新连接到服务器集线器的最佳实践

在 WPF 中的文本框上设置焦点

如何在 C# 中直接执行 SQL 查询?