Msbuild 使用$(BuildAgentId)时团队生成TF10122错误

Msbuild 使用$(BuildAgentId)时团队生成TF10122错误,msbuild,build-automation,tfsbuild,Msbuild,Build Automation,Tfsbuild,我正在尝试将此生成代理文件夹用于生成定义 $(SystemDrive)\Builds\$(BuildAgentId)\VPB 。。。但是我得到了以下错误 TF10122:路径“c:\Builds\$(BuildAgentId)\VPB”在以下位置包含“$” 路径组件的开头。请删除“$”并重试 我需要包括一些东西来表示代理,因为我在构建服务器上有两个构建代理 我试图缩短路径,因为InstallShield的合并模块路径名太长(子文件夹太多,并且在所有模块的末尾都添加了GUID) 知道这为什么不起作

我正在尝试将此生成代理文件夹用于生成定义

$(SystemDrive)\Builds\$(BuildAgentId)\VPB

。。。但是我得到了以下错误

TF10122:路径“c:\Builds\$(BuildAgentId)\VPB”在以下位置包含“$” 路径组件的开头。请删除“$”并重试

我需要包括一些东西来表示代理,因为我在构建服务器上有两个构建代理

我试图缩短路径,因为InstallShield的合并模块路径名太长(子文件夹太多,并且在所有模块的末尾都添加了GUID)


知道这为什么不起作用吗?

确保正确设置了生成定义和生成代理工作目录


您是要在TFS生成中使用它,还是要与MSbuild一起使用它?如果您是在TFS中执行此操作,您可以简单地使用变量
BuildDirectory
,该变量在构建到“C:\Builds\123\VPB”AFAIK时解析,这仍然会导致工作区与多个构建代理发生冲突。不,不应该-因为
$(BuildAgentId)
在运行时解析为实际ID&TFSBuild在
BuildDirectory
中保持这一点。我可以调整代理中的路径以使用定义ID,但我更感兴趣的是为什么这个变量不起作用。通过将代理设置为使用类似$(SystemDrive)\$(BuildAgentId)\$(BuildDefinitionPath)的路径它确保不会出现工作空间映射问题或映射到同一位置的其他构建。这就是为什么在构建定义工作空间中使用$(sourcedir)也很重要的原因。希望这有帮助。我想尝试使用build agent ID变量只在build agent上有效?我找不到任何明确的文档说明什么变量在哪里被允许。您可以使用两种类型的令牌目录令牌或环境变量。环境变量基于登录的用户帐户。例如,您已经配置了Team Foundation Bu建d服务,在一个称为BuudVScCART的帐户下运行。将$(HomeDrive)\Builds指定为运行Windows Server 2008的生成计算机上生成代理的工作目录。因此,生成代理通常将使用近似于以下位置的物理目录作为其工作目录:C:\Builds。问题的关键是,我希望使用一个变量(在刚刚链接的页面上列出),从“Team Foundation构建变量:您可以在构建代理工作目录……中使用以下变量”部分开始,在生成定义->工作空间->构建代理文件夹值中,它不起作用。显然,这些变量对于“生成代理属性”对话框之外的任何其他生成代理模块都不可用。