Visual Studio Test Runner 抱怨找不到 'xunit.core, Version=2.x.0'

Visual Studio Test Runner complains that it cannot find 'xunit.core, Version=2.x.0'

我正在尝试创建一个新的 PCL 库(以及一个新的 Windows 通用应用程序),并且我创建了一个新项目以开始使用 xUnit 编写我的单元测试。我添加了对 xunitxunit.runner.visualstudio 的 nuget 引用。我正在使用 Visual Studio 2015 RTM,以及 Resharper 9.1,当我尝试 运行 或发现单元测试时,它们给我一个类似的错误。这是来自 visual studio:

------ Discover test started ------

[xUnit.net 00:00:00.2661814] Skipping: WinBlur.NewsBlurClient.Tests (could not find dependent assembly 'xunit.core, Version=2.1.0')

[xUnit.net 00:00:00.2235684] Skipping: WinBlur.NewsBlurClient.Tests (could not find dependent assembly 'xunit.core, Version=2.1.0')

========== Discover test finished: 0 found (0:00:00.6920785) ==========

此输出显示正在尝试使用 2.1 的最新测试版,但我也尝试了当前发行版 (2.0.0),结果相同。

这是我的 project.json 文件:

{
  "supports": {
    "net46.app": {},
    "uwp.10.0.app": {}
  },
  "dependencies": {
    "Microsoft.NETCore": "5.0.0",
    "Microsoft.NETCore.Portable.Compatibility": "1.0.0",
    "xunit": "2.0.0",
    "xunit.core": "2.0.0",
    "xunit.assert":  "2.0.0",
    "xunit.runner.visualstudio": "2.0.1"
  },
  "frameworks": {
    "dotnet": {
      "imports": "portable-net452+win81"
    }
  }
}

当我将 nuget 引用添加到 xunit 时,它最初并未添加 xunit.corexunit.assert 的依赖项,因此我自己添加了这些以查看是否有帮助,但没有成功。

xUnit.net 现在被现代 PCL 破坏了。

错误在于现代 PCL(或任何使用 project.json 而不是 packages.config 的 class 库)不复制引用的 DLL。这是 Visual Studio 对 project.json 和 class 库的支持中的一个错误,必须由 Microsoft 团队修复。

解决方法(至少对于某些库而言)是您可以将这些属性添加到您的项目文件中:

<PropertyGroup>
    <CopyNuGetImplementations>true</CopyNuGetImplementations>
    <PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>

之后,xunit 与 project.json 一起工作。至少对我来说。