TFS更改构建代理工作目录

时间:2011-10-18 19:11:19

标签: c# .net tfs tfs2010 tfsbuild

我遇到与described here相同的错误。我正在运行TFS Build中Windows的文件名限制。这个问题的答案建议重新定义构建代理工作目录。我不确定我是否应该这样做。我有几个问题......

  1. 更改构建代理工作目录会影响我,还是每个人都使用构建代理?

  2. 构建代理程序不是由我运行的,它位于由我们公司的其他部门控制的另一台计算机上。我可以进入“管理构建控制器”设置,我似乎能够做出这些改变,我只是害怕!

3 个答案:

答案 0 :(得分:5)

这里有几个选项,更改构建代理上的构建目录,在团队资源管理器中右键单击“构建”文件夹并选择管理构建代理。选择您的构建服务器并将构建文件夹更改为“e:\ b”(或者甚至是“e:\”,如果这是您使用该驱动器的全部内容)这将更改该构建服务器的构建工作目录。这将从工作目录中删除几个字符。

除此之外,您还可以将构建使用的工作区尽可能地映射到树下。即使您没有用完路径上的字符,这也是一个好主意,因为TFS使用工作区来确定为您的构建获取哪些代码。

e.g。如果您的工作区映射到$ / TeamProject = $(SourceDir),这意味着TFS将获取团队项目中的所有代码以进行构建。即使您只需要1个分支的1个解决方案

考虑像这样设置的团队项目

`$/TeamProject/DevBranch/Docs
                        /Source/Solutions/Solution1
                                         /Solution2
                                         /etc...
                        /More Stuff
              /MainBranch/[Same As Dev]
              /HotFixBranch/[Same As Dev]
              /ReleaseBranch/[Same As Dev]`

如果您的工作区映射到$ / TeamProject,那么当您真正想要的是来自dev分支的“solution2”文件夹中的代码时,您将从TFS获取所有内容。将映射更改为$/TeamProject/Devbranch/Source/Solutions/Solution2,您只需削减路径长度的大约60个字符。除此之外,您还可以加速构建,因为它只能获得所需的代码。

答案 1 :(得分:4)

每个使用该构建代理的构建任务都使用它,是的,它可能会影响多个人。如果您遇到路径限制,则应该更改工作目录。在你继续之前我会和部门里的其他人一起清除它,只是为了确保每个人都知道将要做什么。

答案 2 :(得分:2)

完整限定名称不得超过Windows 260个字符的MAX_PATH。实际上,各种工具使用不同的值。

超过256个字符的GAC e.g. does reject个文件名。使用文件名表示路径和文件名本身。 TFS基于Windows构建,因此TFS构建存在相同的限制。唯一可行的解​​决方案是使用尽可能短的工作空间目录来限制您将遇到的问题数量。您可以尝试替换工作空间目录,使其更短,但基本的文件系统限制不会消失。

是的,微软应该解决这个问题,但实际上很快就不可能。在构建期间使用的任何工具(MS和非MS)都将遇到相同的限制。当文件名太长时,工具最多会崩溃。在最糟糕的情况下,你会得到腐败的二进制文件而不会注意到。用C / C ++编写的所有应用程序用于文件名缓冲MAX_PATH + 1大小的缓冲区。即使Windows允许这样的文件名(有方法但......),几乎所有应用程序的缓冲区都太小而无法使用它们。

你并不孤单我们都受苦。从好的方面来说,这种限制确实可以防止挑剔架构师使用目标名称强制执行超过MAX_PATH的命名约定。