2

在 TFS 2010 构建定义窗口中,“进程”下有两个必需项。它们是“要构建的配置”和“要构建的项目”。在要构建的项目下,它将允许我输入以下内容:

$/TeamProject/Area1/Area2/*

但是,这似乎并没有达到我的预期。构建失败,因为它正在寻找:

$/TeamProject/Area1/Area2/Sources/*

我试图通过这个实现的是构建该领域下的所有解决方案。例如,我有:

$/TeamProject/Area1/Area2/Solution1/Solution1.sln
$/TeamProject/Area1/Area2/Solution2/Solution2.sln
$/TeamProject/Area1/Area2/Solution3/Solution3.sln

还有比这更多的解决方案,这就是为什么我正在寻找一种方法来递归地构建指定路径下的所有解决方案。有没有办法在 TFS 2010 中做到这一点?

4

3 回答 3

3

您可以修改流程模板。使用匹配文件(我现在没有确切的命名)活动来扩展它。添加一个参数,将您在构建定义中设置的信息传递给 MacingFiles 活动。然后将 MatchingFiles 活动找到的文件传递给构建解决方案活动,而不是您在构建定义中输入的参数。

现在在构建定义中为要构建的解决方案添加一个虚拟解决方案(不再使用它)。

有关自定义构建过程模板的更多信息,请参阅构建自定义的博客文章系列。

于 2011-01-20T12:33:08.057 回答
0

FWIW,我有:“要构建的配置”空白,在“要构建的项目”下我通过省略号按钮添加了我的解决方案

于 2011-01-20T10:38:04.167 回答
0

我会为

$/TeamProject/Area1/Area2/Solution1/    
$/TeamProject/Area1/Area2/Solution2/    
$/TeamProject/Area1/Area2/Solution3/

然后在构建定义中输入要构建的三个项目

$/TeamProject/Area1/Area2/Solution1/Solution1.sln
$/TeamProject/Area1/Area2/Solution2/Solution2.sln
$/TeamProject/Area1/Area2/Solution3/Solution3.sln

您可以将要构建的配置保留为空白,或者如果您想要进行某个构建,您可以将其设置为(例如)类似 Debug|Mixed Platforms 的内容(检查您的配置管理器...查看您正在构建的解决方案什么是有效的)

或者,您可以只映射以下内容(取决于您在此文件夹中有多少,如果您有不想触发构建的解决方案 4+,请不要在此级别执行此操作)

$/TeamProject/Area1/Area2

并拥有一个包含解决方案 1、解决方案 2 和解决方案 3 的解决方案,然后构建它。

默认情况下,构建映射到的解决方案 1

$/TeamProject/Area1/Area2

在具有工作目录的构建代理上,该目录将类似于:

$(SystemDrive)\Builds\$(BuildAgentId)\$(BuildDefinitionPath)

你最终会在下面构建它

C:\Builds\1\Solution1\Binaries
C:\Builds\1\Solution1\Sources
C:\Builds\1\Solution1\TestResults

这就是为什么你要确保你的 OutDir 等都是正确的,而不是硬编码的!

如果您在构建时查看,您会看到构建代理填充 Sources 文件夹,并且它应该(如果配置正确)将所有输出放入 Binaries 文件夹(然后将它们复制到在 TFS 中构建默认值下配置的放置文件夹.

于 2011-01-20T11:15:59.060 回答