我在.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]
来尝试所有常规步骤,但这没有帮助。
答案 0 :(得分:0)
我明白了。问题出在XUnit 2.3.0上 - 当规范运行时,dotnet xunit
命令将该进程作为.NET Core 2.0以外的目标执行,因此使用了该框架的较低框架版本。
升级到XUnit 2.3.1解决了这个问题 - 测试现在可以作为.NET Core 2.0规范正确执行,并加载正确版本的底层依赖项。