发现 "System.Diagnostics.DiagnosticSource" 的不同版本之间存在无法解决的冲突

Found conflicts between different versions of "System.Diagnostics.DiagnosticSource" that could not be resolved

我正在使用针对 net461 框架的 WinForm 应用程序。 不幸的是,此警告出现在运行时错误列表中:

发现 "System.Diagnostics.DiagnosticSource" 的不同版本之间存在无法解决的冲突。当日志详细程度设置为详细时,这些引用冲突会在构建日志中列出。

添加到 package.config 没有帮助:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="System.Diagnostics.DiagnosticSource" version="4.4.1" targetFramework="net461" />
</packages>

有人对此有想法吗?

问题通常出现在不同的依赖项带来自己版本的 System.Diagnostics.DiagnosticSource 程序集时。对于任何其他程序集冲突也是如此。

这种行为的原因在于 .NET Framework 的错误设计以及 .NET Core 依赖逻辑。 .NET Core coreclrcorefx 回购构建经常产生相同的警告,唯一的副作用是包含所有冲突版本的程序集甚至完整框架的更大的 NuGet 包。

警告本身是良性的,可以安全地忽略。唯一的影响是在构建期间 NuGet 将导入更多包。