msbuild

时间:2019-09-17 10:02:23

标签: .net-core msbuild

我试图将我的建筑配置从dotnet test <solutionname>更改为dotnet msbuild /t:VSTest <solutionname>,因为我认为,所有那些与建筑相关的dotnet命令都是msbuild的包装器。我有大约4个测试项目,其中一个包含ca。 700个测试。

问题在于,尽管dotnet test命令运行所有测试,但是dotnet msbuild /t:VSTest每次运行并有任意数量的测试,通常为100次左右。

我比较了msbuild的输出,发现唯一的区别是MSBUILDENSURESTDOUTFORTASKPROCESSES = 1变量;一旦我在命令行中对其进行设置,它也开始为dotnet msbuild /t:VSTest工作。

问题是-是否打算以这种方式工作?应该使用dotnet msbuild还是应该完全不使用dotnet msbuild来设置它,而我应该使用dotnet build这样的特定命令进行构建,而使用dotnet test进行测试? >

因为我个人总是使用带有不同目标的msbuild来发现它更加一致,并且想要更改这样的建筑配置。

我几乎从名字中都无法理解它的作用,因此想避免在我的构建配置中编写类似dotnet msbuild /t:VSTest /p:MSBUILDENSURESTDOUTFORTASKPROCESSES=1的内容,就像黑客一样。

1 个答案:

答案 0 :(得分:0)

来自@ christian-k在他的评论中链接的问题:MSBUILDENSURESTDOUTFORTASKPROCESSES=1“改变了MSBuild创建子进程以迫使它们与父进程共享stdout流的方式。当您调用dotnet时,dotnet test cli使用此解决方法。”(https://github.com/Microsoft/vstest/issues/1503#issuecomment-410732193

因此,我的理解是很好,您使用dotnet msbuild /t:VSTest /p:MSBUILDENSURESTDOUTFORTASKPROCESSES=1也没什么不同。