并非所有TFS Build类型文件都被复制

Joo*_*Lee 0 msbuild tfs tfsbuild

因为我有几个构建共享一些包含公共构建任务的程序集,所以我有一个TFSBuild.proj用于所有构建并根据构建导入不同的目标,如下所示:

<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">

  <Import Project="Build_1.targets" Condition="'$(BuildDefinition)'=='Build_1'" />
  <Import Project="Build_2.targets" Condition="'$(BuildDefinition)'=='Build_2'" />
  <Import Project="Build_3.targets" Condition="'$(BuildDefinition)'=='Build_3'" />
</Project>
Run Code Online (Sandbox Code Playgroud)

特定构建的每个目标都具有构建类型文件的常用内容,但在我的情况下,我还引用了在源代码管理中与TFSBuild.proj相同的文件夹中的一些任务.我想添加文件夹以包含一些测试构建目标,因为我的文件夹变得有点杂乱.以下说明了我的意思.

$(TFS project)\build\
               TFSBuild.proj
               Build_1.targets
               ...
               Assembly1.dll
               Assembly2.dll
               ...

               Folder\
                      Test_target_1.targets
                      ....
Run Code Online (Sandbox Code Playgroud)

但是,当我说明我的构建时,我发现Test_target_1.targets和Folder中的其他文件没有被复制到构建目录,而TFSBuild.proj和根级别的其他文件,就像它们的构建类型文件夹一样.被复制.这导致我的测试版本无法引用Folder中的文件,导致我的构建立即失败.换一种说法,

$(TFS project)\build\
               TFSBuild.proj
               Build_1.targets
               ...
               Assembly1.dll
               Assembly2.dll
               ...

               Folder\
                      (nothing here)
Run Code Online (Sandbox Code Playgroud)

我意识到最简单的解决方法是摆脱文件夹并将其所有内容移动到构建文件夹,但我真的想拥有文件夹,如果可能的话.感谢您的帮助.

Ros*_*ton 5

使用Team Build 2008,您需要更改构建计算机上的设置以使其下载构建文件夹中的子目录 - 将其添加到TFSBuildService.exe.config文件:

<!-- ConfigurationFolderRecursionType
     Set this value to Full to get the subdirectories of the BuildType folder.  We
     put the Agilent Custom targets and tasks in subdirectories.
     -->
<add key="ConfigurationFolderRecursionType" value="Full" />
Run Code Online (Sandbox Code Playgroud)

要添加它,您需要停止构建服务,编辑c:\ Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\TFSBuildService.exe.config,然后重新启动该服务.

唯一需要注意的是,您需要记住在任何未来的构建机器上执行此操作.但是如果你忘了那么问题就很明显了.

顺便提一下,此设置在2010年的构建选项中公开,这更方便一些.