【问题标题】:An exception occurred while invoking executor 'executor://xunit/VsTestRunner2/uap': Could not load file or assembly 'System.IO.FileSystem调用执行程序“executor://xunit/VsTestRunner2/uap”时发生异常:无法加载文件或程序集“System.IO.FileSystem”
【发布时间】:2019-01-01 08:46:56
【问题描述】:

我在 VSTS 构建上运行单元测试时遇到了一个问题。 当我在本地 Visual Studio 上启动所有测试时,一切正常。完全没有错误。完美的。 但是,当我通过 VSTS 构建上的测试任务启动测试时,出现此错误:

调用执行器时发生异常 'executor://xunit/VsTestRunner2/uap': 无法加载文件或程序集 'System.IO.FileSystem, Version=4.0.1.0, Culture=neutral, PublicKeyToken=***********' 或其依赖项之一。这 系统找不到指定的文件。

我的测试项目是这样设置的:

  • 2.4.0 版上的“xunit.runner.visualstudio”,“targetFramework”设置为“net462”(在 packages.config 中设置)

  • .NET 框架 4.6.2

在我拥有的构建服务器上:

  • Visual Studio 2017,v15.7.5

  • Visual Studio 2015,v14.0

我的线索不多了……我肯定错过了什么…… 感谢您的帮助

PS:

  • 在 VSTS 版本上正确通过了所有测试
  • 在我的构建任务设置中,当我将“测试平台版本”设置为“Visual Studio 2015”时,它可以工作。但是当我选择“Visual Studio 2017”或“最新”时,我遇到了同样的错误......

编辑

我有 Nuget 包“FluentAssertions”v5.4.1 和“System.ValueTuple”v4.5.0。我已经尝试降级其中一个和两个。它失败了。但我看到“FluentAssertions”依赖于“System.ValueTuple”

编辑 2

正如@PatrickLu-MSFT 所说,将 vs 测试任务版本传递给 1 解决了这个问题。 但是当我仔细观察时,可用的测试平台版本是 2015 和 2013:

当我选择 VS 测试任务版本 2 时,我有以下选择:

我想继续使用 vs 测试任务版本 2(以防未来更新,我不想被卡住......)。我看到的是,当我将测试平台版本设置为“Latest”或“Visual Studio 2017”时,它不起作用。当我选择“Visual Studio 2015”时,它工作... 所以我要说的是:

  • 将 vs 测试任务版本设置为 版本 1 使其工作(可能是因为最新的测试平台版本是“Visual Studio 2015”...?)
  • 将 vs 测试任务版本设置为版本 2 测试平台版本设置为“Visual Studio 2015”使其工作

所以:

  • 设置为 版本 1 的 VS 测试任务版本似乎与设置为 版本 2 且设置了“测试平台版本”的 VS 测试任务版本相同到“Visual Studio 2015”。
  • 如何使其与设置为 version 2 的 VS 测试任务版本和设置为“最新”的“测试平台版本”一起工作?

编辑 3

在远程连接到我的构建代理的服务器并从 VS2017 运行测试后,我将主机服务器的 Visual Studio 2017 的输出与我的本地 Visual Studio 2017 的输出进行比较:

  • 本地 Visual Studio 2017:

  • 远程 Visual Studio 2017:

主机上的“xUnit.net VSTest Adapter v2.4.0 (32-bit Universal Windows)”是否存在一些问题?

【问题讨论】:

  • 你使用的是vs测试任务和版本2,可以选择左上角的版本吗?如果是这样,当您说一切正常时,您是否尝试过使用版本 1。本地环境是什么,你用的是VS2015还是VS2017,建议你本地环境和服务器端环境一样,这样可以缩小问题的范围。
  • 我使用的是 vs 测试任务和版本 2。将其传递到版本 1 后,一切正常!谢谢。但是为什么要@PatrickLu-MSFT?
  • 我更新了我的问题@PatrickLu-MSFT(见编辑 2)
  • 当您在本地测试您使用的是哪个版本的 VS 时,这似乎适用于 VS2015 而不是 VS2017? “在我拥有的构建服务器上:Visual Studio 2017, v15.7.5/Visual Studio 2015, v14.0”您能否远程访问您的构建代理并直接通过 VS2017 运行构建测试,如果问题与您的环境相关,这将缩小范围.
  • 当我在本地测试(在我的机器上)时,我有 Visual Studio 2017 v15.7.5 并且一切正常。我远程连接到我的构建代理的服务器并从 VS2017 运行测试,我从输出中得到了相同的结果:“[7/26/2018 11:24:21 AM Error] An exception occurred while invoking executor 'executor:/ /xunit/VsTestRunner2/uap':无法加载文件或程序集“System.IO.FileSystem,Version=4.0.1.0,Culture=neutral,PublicKeyToken=**********”或其依赖项之一。该系统找不到指定的文件。”当我在构建项目时,没有错误......我没有更多的踪迹。

标签: tfs build azure-devops xunit xunit.net


【解决方案1】:

我遇到了同样的问题并通过将“自定义测试适配器的路径”更改为通过将其设置为“Source\packages\xunit.runner.visualstudio.2.4.0\build_common”来专门指向正确的测试适配器来解决它. (您应该修改路径以说明包文件夹在您的存储库中的位置。)

这显然是因为默认情况下 VSTS 会尝试提供帮助并扫描整个工作目录结构以查找测试适配器并加载所有它们,但 xUnit Visual Studio 测试适配器 Nuget 包会安装测试适配器.Net Core 和 UWP 也是如此,所以 VSTS 很高兴地加载它们并且它们爆炸了。

【讨论】:

  • 成功了!我将文件夹的正确路径($(System.DefaultWorkingDirectory)\packages\xunit.runner.visualstudio.2.4.0\build_common)作为“自定义测试适配器的路径”。但在未来,随着 xunit 的一些更新,我将依赖于版本号......每次更新我都必须改变这条路径......目前我将使用这个解决方案。谢谢!
  • 对我来说,它使用路径“$(System.DefaultWorkingDirectory)\packages\xunit.runner.visualstudio.2.4.0\build\_common”
  • 也为我工作。缺点是,当测试适配器有 NuGet 更新时,我必须在此时更改我的构建定义.... :-(
  • hmm.. 这对我也有用 - 我们的 TFS 构建没有大喊大叫
猜你喜欢
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多