调用执行程序'executor:// xutor / xunit / VsTestRunner2 / uap'时发生异常:无法加载文件或程序集'System.IO.FileSystem

时间:2018-07-24 16:28:42

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

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

  

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

我的测试项目设置如下:

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

  • .NET Framework 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:

Test platform version for VS test task version 1

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

Test platform version for VS test task version 2

我想继续使用第2版测试任务(如果将来有更新,我不想被困住...)。我看到的是,当我在Test Platform版本上设置为“ 最新”或“ Visual Studio 2017 ”时,它不起作用。当我选择“ Visual Studio 2015 ”时,它可以工作... 所以我的意思是:

  • 已将vs测试任务版本设置为版本1 以使其正常运行(也许是因为最新的测试平台版本是“ Visual Studio 2015 ” ...?)< / li>
  • 将vs测试任务版本设置为版本2 ,并且将测试平台版本设置为“ Visual Studio 2015”,使之正常工作

所以:

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

编辑3

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

  • 本地Visual Studio 2017:

My local Visual Studio 2017 output

  • 远程Visual Studio 2017:

Remote Visual Studio 2017 output

主机上的“ xUnit.net VSTest适配器v2.4.0(32位通用Windows)”是否存在一些问题?

1 个答案:

答案 0 :(得分:10)

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

这显然是因为默认情况下,VSTS会尝试提供帮助并扫描整个工作目录结构中的测试适配器,并全部加载它们,但是xUnit Visual Studio测试适配器Nuget软件包会为以下内容安装测试适配器: .Net Core和UWP也是如此,因此VSTS会很高兴地加载它们并炸毁。