在对 PowerShell 脚本的 AfterBuild 调用中引用自定义 msbuild 参数

Reference custom msbuild parameter in AfterBuild call to PowerShell script

这是我想要实现的目标:我想要多个 TFS 构建配置,其中定义变量,我们称之为 foo,我需要能够将其作为参数传递给 PowerShell成功构建后执行的脚本。每个构建配置都会为 foo.

定义不同的值

我知道这在 TFS 2013 中非常简单,它允许您指定在成功构建后执行的脚本。不幸的是,我目前正在使用 TFS 2012,我没有升级的天赋。

我能想到的达到预期效果的最简单方法是在构建配置的 MSBuild Arguments 部分传递一个参数(/p:foo=myValue?)并在 [= 中的任务中使用该参数13=] 项目的 .csproj 文件中的部分。

我的问题基本上是这样的:<Target Name="AfterBuild"> 部分调用命令 myscript.ps1 "myValue"?

的内容

如果您想变得非常酷,您可以自己将 "execute this after the run" 选项添加到 TFS 2012 的构建过程中(也许它甚至可以从 TFS 2013 构建模板中移植?)。不过,这可能比它值得付出的努力更多。

无论如何回答你的问题,你正在寻找 Exec 任务:

<Target Name="AfterBuild">
    <Exec Command="powershell.exe myscript.ps1 $(foo)" />
</Target>

您可能必须指定 powershell.exe 的完整路径,我还没有测试过。

对于遇到相同要求的其他人,这就是我最终得到的结果。它将执行名为 MyScript.ps1 的构建中包含的 Powershell 脚本,允许构建输出路径包含空格,并以 /p:foo=myValue 形式在 TFS 构建配置的 MS Build Arguments 部分中传递参数集].

<Target Name="AfterBuild">
    <Exec Command="powershell.exe -NonInteractive -executionpolicy Unrestricted &quot;&amp; '$(TargetDir)MyScript.ps1' '$(foo)'&quot;" />
</Target>