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



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

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

我能想到的实现所需效果的最简单方法是在生成配置的 MSBuild 参数部分传递一个参数 ( /p:foo=myValue ?),并在项目的 .csproj 文件的 <Target Name="AfterBuild"> 部分中的任务中使用该参数。

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

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

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

如果你想非常酷,你可以自己将"运行后执行此"选项添加到 TFS 2012 中的生成过程中(也许它甚至可以从 TFS 2013 生成模板移植?)。不过,这可能比它值得付出更多的努力。

无论如何,要回答您的问题,您正在寻找执行任务:

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

您可能需要指定powershell.exe的完整路径,我还没有对此进行测试。

最新更新