2011-11-02 51 views
0

在团队构建2010(tfs)中有没有将构建工作区下的项目与触发构建的项目分离?在tfs中触发构建的筛选器项目

我想能够在我的工作区中指定项目的一个子集作为更改时触发构建的项目。目前工作区的活动路径中的任何更改都会触发构建。

+2

为什么这些项目在构建的工作区中,如果对它们的更改不应触发构建? –

+0

他们在那里,因为有构建所需的输出,我只是想不让他们触发构建的灵活性。具有这种灵活性可以防止更改Local.Testsettings或解决方案文件触发使用该解决方案或测试设置的每个* build配置。 –

+0

您有多个使用相同解决方案的构建配置?如果你改变了解决方案的一部分,你不想构建?在作为构建的一部分运行的单元测试中使用了Local.testsettings吗? –

回答

0

唯一的方法是从构建定义的工作区映射中删除这些项目。当然,这些项目仍然在您的分支和工作区中。

+0

但删除它们意味着我不能在构建权利中使用它们? –

+0

如果你不想构建它们,你在使用这些东西?如果检入对不需要构建的文件的更改,可以对CI构建定义使用'*** NO_CI ***'注释或绕过门控签入来检查构建定义中的门控检查。 –

1

您可以创建更多构建定义以仅构建特定项目。我有两套项目,框架和模块项目。我有两个CI构建定义,一个用于框架集,另一个用于模块。如果我更改了框架项目,则会触发框架构建,并将所有输出程序集签入TFS到BuildAssemblies文件夹中。此文件夹包含在模块构建定义工作区中,因为BuildAssemblies是从模块项目引用的。通常情况下,如果我更改BuildAssemblies内容模块构建应该被触发,但我检查了我的更改与*** NO_CI ***前缀不触发模块构建。

但这不是很好的设计。如果您更改了框架装配并通过此更改构建了中断模块,则在您手动触发模块构建之前,您不会了解它。为模块构建使用门控签入功能是没有意义的。

1

总的来说,我倾向于同意约翰桑德斯,仍然:
你可以让你不希望触发你的构建项目在你的源代码控制的独立位置。将它们从主解决方案中删除,因为项目&将它们添加为组件。

这样,你的第二个来源的任何变化都不会触发你的主构建 - 合并编译后的程序集。获益是后者可以在任何时候选择完成。

在你的情况下使用文件引用有几个缺点,主要是你不能直接调试编译的程序集。另见here

相关问题