在对 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 "& '$(TargetDir)MyScript.ps1' '$(foo)'"" />
</Target>
这是我想要实现的目标:我想要多个 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 "& '$(TargetDir)MyScript.ps1' '$(foo)'"" />
</Target>