这是我想要实现的目标:我想要多个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 "& '$(TargetDir)MyScript.ps1' '$(foo)'"" />
</Target>
如果你想非常酷,你可以自己将"运行后执行此"选项添加到 TFS 2012 中的生成过程中(也许它甚至可以从 TFS 2013 生成模板移植?)。不过,这可能比它值得付出更多的努力。
无论如何,要回答您的问题,您正在寻找执行任务:
<Target Name="AfterBuild">
<Exec Command="powershell.exe myscript.ps1 $(foo)" />
</Target>
您可能需要指定powershell.exe
的完整路径,我还没有对此进行测试。