3

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

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

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

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

4

3 回答 3

3

你可以使用

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

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

请参阅在 msbuild 中使用 32 位“程序文件”目录

于 2013-01-31T05:00:48.640 回答
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>
于 2016-04-15T02:41:56.670 回答
0

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

于 2013-01-21T13:48:18.480 回答