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

时间:2015-04-16 14:43:16

标签: c# powershell visual-studio-2012 tfs msbuild

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

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

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

我的问题基本上是这样的:<Target Name="AfterBuild">部分调用命令<Target Name="AfterBuild">的内容是什么?

2 个答案:

答案 0 :(得分:2)

对于遇到同样要求的其他人来说,这就是我最终的结果。它将执行名为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>

答案 1 :(得分:1)

如果你想变得非常酷,你可以添加&#34;在跑步后执行此操作&#34;选择自己在TFS 2012中的构建过程(也许它甚至可以从TFS 2013构建模板中移植?)。尽管如此,这可能比它的价值更大。

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

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

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