0

我正在构建一个包含许多 Web 应用程序项目的代码库,并且我们在构建期间为我们的构建商店生成 webdeploy 包。

由于 NTFS 中 260 个字符长度的路径限制,由于 webdeploy 在用于构建包的目录内产生了重复的文件夹结构,我的构建失败,这实际上使路径中用于文件夹的字符数增加了一倍。对于包含项目名称和构建标签的构建工作区,这可能会很长。

为了解决第一个问题,我使用 _PackageTempDir=C:\TfsTmp\Pkg\ 重定向了包构建目录,这要感谢我的个人英雄 Sayed Ibrahim Hashimi 的提示。这很好用,现在构建成功完成。但是,这将我们限制为每个构建代理一次构建,因为所有代理都会尝试使用相同的硬编码路径。

为了解决这个问题,我想使用 $(BuildAgentId) 变量来定义构建代理工作区,但我不知道如何在构建过程模板中取消引用这个变量。当我尝试时,我只是在我的构建服务器上出现文件夹结构,如 C:\TfsTmp[$(BuildAgentId)]\Pkg 或 C:\TfsTmp\$(BuildAgentId)\Pkg 或类似的。

这个变量是否无法从 BPT 内部访问?有没有更好的方法来区分这些文件夹?有没有更好的方法来解决我在构建 webdeploy 包时的原始问题?

4

1 回答 1

2

在“Run On Agent”范围内应该可以访问 BuildAgent 信息。查看 IBuildAgent 和 IBuildDetail 以获得一个想法。

您可能能够从代理的 URI 中获取代理 ID。我还没有对此进行测试,但这是一个开始。

String agentId = LinkingUtilities.DecodeUri(buildAgent.Uri.AbsoluteUri).ToolSpecificId;
于 2013-10-04T07:19:00.440 回答