在 TFS 15RC1 构建服务器中使用 devenv.exe 构建项目

Build project using devenv.exe in TFS 15RC1 Build Server

我无法理解如何从 TFS 构建服务器使用 devenv.exe。

没有使用devenv的默认步骤,所以我尝试使用PowerShell脚本执行devenv.exe带参数。构建过程中没有错误,但我看到构建结果文件没有更新。 如果我在代理机器上手动执行脚本,则构建成功通过。那是我的脚本:

$process = [System.Diagnostics.Process]::Start( "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe", "/Rebuild ""MyConfig"" ""C:\agent\agent\_work\s\MyProject.sln"" /Project ""C:\agent\agent\_work\s\MyProject\MyProject.dwproj""") 
$process.WaitForExit()

如你所见,我没有为源路径使用变量,但如果脚本可以运行,我会使用它。

我还得说,我找不到任何有错误的日志。也许我不知道在哪里可以找到它们?

所以,

  1. 我在 powershell 脚本中做错了什么?
  2. 在 TFS 构建服务器中使用 devenv.exe 构建项目的最佳做法是什么?

PS 我们正在使用 TFS 15 RC1(版本 15.103.25603.0)。

目前,没有此内置功能支持在 vNext 构建任务中直接使用 devenv.exe。但似乎会在不久的将来出现:

That is not something we are working on right now, but it is something that we would take a pull request for.

chrisrpatterson commented on Jan 8

We want an input on the existing Visual Studio Build task that says use devenv (defaults to false). If true, it takes the variant path running code similar to above.

bryanmacfarlane commented on Jan 22

Source from GitHUB:

您可以尝试使用 pull requestjmacnett 提供的创建自定义构建任务的方法。

我发现仅当代理 运行 作为服务时它不起作用。当我以交互模式启动代理时,我的任务开始正常工作。为什么? - 我不知道。

$argumentList = ("`"$solnPath`" /$solnCmdSwitch $solnConfigName")

如果是项目则添加以下内容

$argumentList += (" /project `"$projPath`" /projectconfig $projConfigName")

查看额外的反引号