1

我们已经为我们的项目设置了 TFS 构建,但是在每次构建时,系统都会复制整个存储库,然后编译我们的解决方案。我们如何确保 TFS Build 只下载解决方案所需的文件,而不必手动隐藏每个不需要的目录?现在它下载超过 2GIG 的数据只是为了编译一个小于 100mb 的项目(源文件)。其他数据是自动构建不需要的测试数据库和文件。

编辑:一些进一步的调查让我对一些关键字进行搜索。这些帖子有帮助: Team Build - Get Workspace - 从特定路径获取最新信息,而不是所有内容

TFS 构建和工作区

不过仍在调查。欢迎任何意见。

编辑:一个选项是用我自己的扩展活动替换构建过程定义中的 CreateWorkspace。我希望发现有人已经这样做了.. 基本上你会使用 VersionControlServer 对象来下载必要的文件而不是整个工作区。

编辑 目前对此没有真正好的答案/解决方案。我提供了一些选项,响应的人提供了一些替代方案,但是您不能轻易更改 TFS 构建过程以仅下载作为解决方案一部分的数据而不是整个存储库。因此,在构建存储库时请注意。

4

2 回答 2

3

您希望将Build Definition映射设置为仅包含您要编译的源。这意味着您不必做cloak任何事情。

  • 编辑构建配置
  • 单击源设置(VS 2012),工作区(VS 2010)
  • 一个特定的映射示例如下所示:

StatusSource Control Folder                           Build Agent Folder                
Active$/Path/To/The/SolutionOrProjectFolder  $(SourceDir)\                        

这将使workspace此构建仅限于您希望构建的解决方案。因此,您的构建活动只能看到该目录下的 AssemblyInfo 文件。

如果由于源代码控制的设置方式而无法执行此操作,那么我建议您在Source Control.

于 2013-03-08T19:05:51.267 回答
2

如果您有多个构建代理,您应该限制构建定义可以运行的代理数量。这将停止将相同源的多个副本下载到构建机器上。

您已经在问题中回答的下一部分,通过将构建定义中的“清洁工作区”选项更改为,构建代理将仅下载当前构建和上次构建之间的变更集。

于 2013-03-08T13:47:59.570 回答