为我的代码设置了一个文件夹结构,如下所示:
MyCodeFolder
-SolutionFileOne.sln
-ProjectFolder1
-ProjectFolder2
-ProjectFolder3
-SolutionFileTwo.sln
-ProjectFolderA
-ProjectFolderB
-ProjectFolderC
-ProjectFolderCommon
方案一包含项目1、2、3和Common,方案二包含项目A、B、C和Common。
当我创建我的TFS构建时,我遇到了一个问题。如果我只是在工作文件夹中添加MyCodeFolder,那么两个构建都将成功,但是对项目2的签入将启动解决方案2的构建,反之亦然。
如果我只映射解决方案需要的文件夹,构建失败,我猜这是由于我没有包含映射到解决方案文件所在的文件夹(MyCodeFolder)。
有没有办法在不改变文件结构的情况下解决这个问题?
TFS构建中的持续集成触发器将在任何时候该构建工作区中的一个项目被更改时将新构建排在队列中。工作区映射只能包含文件夹——你不能在文件夹中包含 exclude(又名"cloak")单个文件。
你可以做的是设置你的构建工作区使用整个/MyCodeFolder文件夹。然后,在SolutionFileOne的构建中。你可以隐藏ProjectFolderA、ProjectFolderB和ProjectFolderC。在SolutionFileTwo的构建中。你可以隐藏ProjectFolder1、ProjectFolder2和ProjectFolder3。
这只是部分解决方案。当有人更改解决方案文件时,或者当ProjectFolderCommon文件夹中的任何内容更改时,两个构建仍然会启动。由于您不能隐藏解决方案文件本身,因此在不更改文件结构的情况下,无法避免在解决方案文件签入时启动两个构建。