【发布时间】:2015-04-28 14:32:18
【问题描述】:
在 TFS2013 构建中,在构建定义的构建后路径中,我调用了一个 PowerShell 脚本,该脚本需要获取之前构建的解决方案的路径。
但是环境变量中没有提供 SolutionPath 变量,我们不能在定义构建的构建后参数中传递这个变量。
在不修改构建模板的情况下,您有什么建议吗?
谢谢。
【问题讨论】:
在 TFS2013 构建中,在构建定义的构建后路径中,我调用了一个 PowerShell 脚本,该脚本需要获取之前构建的解决方案的路径。
但是环境变量中没有提供 SolutionPath 变量,我们不能在定义构建的构建后参数中传递这个变量。
在不修改构建模板的情况下,您有什么建议吗?
谢谢。
【问题讨论】:
在我看来, tfbuild 中没有 SolutionPath 变量的原因是因为没有任何义务在构建过程中只构建一个解决方案。
为了在解决方案完成构建后运行脚本,您可以添加 After..sln.targets 并指定要执行的任务(msbuild 内的powershell task)
http://sedodream.com/2010/10/22/MSBuildExtendingTheSolutionBuild.aspx
MSBuild - Project-specific targets for solution does not work
另一个选项是:如果您想要根文件夹下的相对路径,您可以在脚本中使用 $env:TF_BUILD_SOURCESDIRECTORY,这将引导您进入构建的 \src 文件夹
Get-ChildItem $env:TF_BUILD_SOURCESDIRECTORY | Where-Object FullName -Like "*.sln" | foreach {$_.FullName}
【讨论】: