如何使用 Visual Studio Release Management 2013 Release 4.0 的自定义 powershell 脚本从组件访问 tfs 变量

How to access tfs variables from a component using a custom powershell script for Visual Studio Release Management 2013 Release 4.0

我的 Visual Studio 2013 Release Management Client/Server 版本是 4.0 版。我正在使用 ReleaseTfvcTemplate.12.xaml 模板。使用基于 AGENT 的发布模板时,有没有办法从发布管理组件(部署者配置)访问系统变量?当我尝试传递 $applicationPath 或 $(applicationPath) 或 $(ApplicationPath).

时,我得到 NULL

这是我在 RM 中部署具有自定义 powershell 部署脚本的组件的状态:

  1. 我可以成功排队发布构建
  2. 构建输出已正确复制到 \servername\BuildDrop\
  3. 我有一个基于 AGENT(不是 VNEXT)的 RM 模板,它在构建完成时被触发
  4. 构建正确触发 RM 模板发布构建
  5. 此 RM 模板有一个通过自定义 powershell 脚本部署的组件
  6. powershell 脚本需要 builddrop 位置的完整绝对路径才能执行其工作(powershell 脚本所做的与讨论无关) 示例:在我的 RM 组件部署配置中,我需要传递 TFS 构建放置位置而无需对其进行硬编码
  7. 基于 the MSDN documentation 有一个系统变量 $applicationPath 由 RM 水化但仅当使用基于 VNEXT 的模板时,而不是基于代理的模板
  8. 根据已接受的 Whosebug 回答 与从基于代理的 RM 模板访问系统变量相关,MSDN 文档似乎没有说明全部情况,我应该能够在我的组件部署配置(见下文)

正如 Graham 在评论中提到的,构建输出被复制到本地,它是您执行 Powershell 时的工作目录。

您也可以使用它来访问构建放置位置:$(PackageLocation) http://incyclesoftware.zendesk.com/entries/24422737-Deployment-Metadata

刚从 Donovan Brown 找到最新的 post:http://donovanbrown.com/post/What-are-the-System-variables-for-PS-DSC-deployments-in-Release-Management.aspx