可靠地从MSBuild中定位mstest.exe

3
有一些关于这个问题的疑问, 但是没有一个对我来说有效的答案。问题是:
有没有一种方法可以在msbuild项目中确定mstest.exe的位置,而不硬编码路径或使用$(VSxxComnTools)或$(VSINSTALLDIR)变量?
后者的原因是,因为这需要在仅安装了VS测试代理而没有完整VS的构建服务器(非TFS,但是Bamboo或TeamCity)上运行。
附加信息:当然,这也必须适用于安装了msbuild、c#编译器和mstest的每台机器,因为每个人都应该能够从github检出项目,调用msbuild,一切应该正常运行。
3个回答

3

您可以使用

$(MSBuildProgramFiles32)\Microsoft Visual Studio 11.0\Common7\Ide

假设您在所有资产上使用相同的版本,即2012年版。当然,您可以在项目本身中轻松创建其他版本的备用方案。
请参考使用msbuild中的32位“Program Files”目录

1

这并不是一种优雅的方式,但是可靠地查找主机上最新安装的MSTest.exe的方法是

<MSTestPath Condition="'$(MSTestPath)'=='' And Exists('$(MSBuildProgramFiles32)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe')">$(MSBuildProgramFiles32)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe</MSTestPath>
<MSTestPath Condition="'$(MSTestPath)'=='' And Exists('$(MSBuildProgramFiles32)\Microsoft Visual Studio 13.0\Common7\IDE\MSTest.exe')">$(MSBuildProgramFiles32)\Microsoft Visual Studio 13.0\Common7\IDE\MSTest.exe</MSTestPath>
<MSTestPath Condition="'$(MSTestPath)'=='' And Exists('$(MSBuildProgramFiles32)\Microsoft Visual Studio 12.0\Common7\IDE\MSTest.exe')">$(MSBuildProgramFiles32)\Microsoft Visual Studio 12.0\Common7\IDE\MSTest.exe</MSTestPath>
<MSTestPath Condition="'$(MSTestPath)'=='' And Exists('$(MSBuildProgramFiles32)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe')">$(MSBuildProgramFiles32)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe</MSTestPath>
<MSTestPath Condition="'$(MSTestPath)'=='' And Exists('$(MSBuildProgramFiles32)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe')">$(MSBuildProgramFiles32)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe</MSTestPath>
<MSTestPath Condition="'$(MSTestPath)'=='' And Exists('$(MSBuildProgramFiles32)\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe')">$(MSBuildProgramFiles32)\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe</MSTestPath>

0

你可以添加一个机器环境变量,指向它并在 msbuild 中引用它。因此,如果你添加了变量 MSTEST_HOME,你可以在 msbuild 中使用 $(MSTEST_HOME)。


我可以这样做,但这会使其他人无法从GitHub上获取项目并构建和测试它。因此,这对我来说不是一个有效的选择。 - Sebastian P.R. Gingter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接