.net 标准项目在运行时引用不兼容的 nuget 包版本

.net standard project references incompatible nuget package version at runtime

我在 .NET Core 2.0 项目中的一个 NuGet 依赖项遇到 运行时间问题。

我依赖于 NuGet 包 B,它依赖于 NuGet 包 A。NuGet 包 B 是一个多目标包,具有以下依赖关系图:

Package B
  -- netstandard1.3
     -- package A 1.0
  -- netstandard 2.0
     -- package A 2.0
  -- net452
     -- package A 1.0
  -- net461
     -- package A 2.0

这是我的问题:我将 NuGet 包 B 作为 .NET Standard 2.0 包使用,一切都编译得很好,当我 运行 通过 Visual Studio 2017 测试 运行纳尔.

然而,当我在 CLI 或我们的构建服务器上 运行 XUnit 时,我们得到一堆 MissingMethodException,它们都指向 Package A 1.0 在 [=27 处被引用=]时间而不是Package B 2.0

对可能出现的问题有什么想法吗?尝试了将 Package B 版本锁定为 [2.0] 的所有常规步骤,但这没有帮助。

我明白了。问题出在 XUnit 2.3.0 - 当规范为 运行 时,dotnet xunit 命令将进程作为 .NET Core 2.0 以外的目标执行,因此使用了较低框架版本的包。

升级到 XUnit 2.3.1 解决了这个问题 - 测试现在作为 .NET Core 2.0 规范正确执行并加载正确版本的底层依赖项。