从msbuild可靠地找到mstest.exe

时间:2013-01-17 17:59:49

标签: msbuild location mstest

这里有一些关于此的问题,但没有一个有效(对我而言)答案。问题是:

有没有办法在msbuild项目中确定mstest.exe的位置,而不用硬编码路径或使用$(VSxxComnTools)或$(VSINSTALLDIR)变量?

后者的原因是,因为这需要在只安装了VS测试代理而不是完整VS的构建服务器(非TFS,但Bamboo或TeamCity)上运行。

附加信息:当然,这也必须适用于安装了msbuild,c#编译器和mstest的所有其他机器,因为每个人都应该能够从github检出项目,调用msbuild,一切都应该顺利运行

3 个答案:

答案 0 :(得分:3)

您可以使用

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

这假设您在所有资产上使用相同版本即2012年的skus。当然,您可以轻松地为项目本身的其他版本创建回退。

参考Use 32bit "Program Files" directory in msbuild

答案 1 :(得分:0)

你可以添加一个指向它的机器环境变量并在msbuild中引用它吗?那么如果添加了var MSTEST_HOME,你可以在msbuild中使用$(MSTEST_HOME)吗?

答案 2 :(得分:0)

它不优雅,但找到主机上安装的最新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>