我试图将我的建筑配置从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
的内容,就像黑客一样。
答案 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
也没什么不同。