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

时间:2018-04-20 16:36:27

标签: c# .net-core nuget xunit .net-standard

我在.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测试运行器运行时,所有内容都编译得很好,我的所有XUnit规范都会通过。

但是,当我在CLI或我们的构建服务器上运行XUnit时,我们得到了一堆MissingMethodException,它们都指向Package A 1.0在运行时引用而不是Package B 2.0

关于问题可能是什么的任何想法?通过将Package B版本锁定到[2.0]来尝试所有常规步骤,但这没有帮助。

1 个答案:

答案 0 :(得分:0)

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

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