当前位置:  开发笔记 > 前端 > 正文

TFSBuild.proj和导入外部目标

如何解决《TFSBuild.proj和导入外部目标》经验,为你挑选了1个好方法。

我们希望将重写的构建目标存储在外部文件中,并在TFSBuild.proj中包含该目标文件.我们有一个核心设置步骤,只需将导入行添加到向导创建的TFSBuild.proj即可获得这些额外步骤.


我们无法对任何文件进行导入,$(SolutionRoot)因为在验证Import语句时,尚未从存储库中获取源.看起来TFS正在拉下第TFSBuild.proj一个而没有任何其他文件.

即使我们添加条件导入,如果存在,也不会导入源代码管理中的版本.将导入已存在于磁盘上的先前版本.

我们可以放弃使用源代码存储这些构建目标,但它是第一个移出源代码树的依赖项,因此我们不愿意这样做.

有没有办法:

    告诉Team Build是否还有一些文件,以便Import正确评估这些语句?

    覆盖那些Team Build目标,比如AfterCompile除了Import

    最终在Team Build中运行构建目标,这些构建目标保留在它正在尝试构建的源代码下吗?

Martin Woodw.. 16

Team Build有一个"bootstrap"阶段,其中Team Build Configuration文件夹(带有TFSBuild.proj的文件夹)中的所有内容都是从版本控制下载的.这是在构建代理调用MSBuild.exe之前由构建代理执行的,告诉它运行TFSBuild.proj.

如果从SolutionRoot下移动目标文件并将其放在TFSBuild.proj文件旁边的配置文件夹中,则可以使用相对导入语句将其导入TFSBuild.proj文件,即


如果这些目标依赖于任何其他自定义MSBuild任务程序集,那么您也可以将它们放在与TFSBuild.proj文件相同的文件夹中,并且可以使用相对路径轻松地引用它们.

请注意,在TFS2008中,构建配置文件夹默认为$/TeamProject/TeamBuildTypes,但是它不必存在.它实际上可以存在于解决方案内的文件夹中 - 甚至可以是专用于Team Build的解决方案中的项目.这有几个优点,包括使构建的分支更容易.因此,我的构建通常位于如下文件夹中:

$/TeamProject/main/MySolution/TeamBuild

另请注意,默认情况下,在构建的引导阶段,构建代理仅下载构建配置文件夹中的文件,并且不会向下递归到任何子文件夹.如果您希望在引导阶段将文件包含在子文件夹中,则可以在构建代理程序计算机上的tfsbuildserver.exe.config文件的appSettings中设置以下属性(位于%ProgramFiles%\ Visual Studio 9.0\Common7\IDE中)\PrivateAssemblies)


请注意,如果您有多个构建代理,则必须记住在所有计算机上设置此设置,这会影响该构建代理执行的每个构建 - 所以最好只保留文件的根目录.如果可以,构建配置文件夹.

祝好运,

马丁.



1> Martin Woodw..:

Team Build有一个"bootstrap"阶段,其中Team Build Configuration文件夹(带有TFSBuild.proj的文件夹)中的所有内容都是从版本控制下载的.这是在构建代理调用MSBuild.exe之前由构建代理执行的,告诉它运行TFSBuild.proj.

如果从SolutionRoot下移动目标文件并将其放在TFSBuild.proj文件旁边的配置文件夹中,则可以使用相对导入语句将其导入TFSBuild.proj文件,即


如果这些目标依赖于任何其他自定义MSBuild任务程序集,那么您也可以将它们放在与TFSBuild.proj文件相同的文件夹中,并且可以使用相对路径轻松地引用它们.

请注意,在TFS2008中,构建配置文件夹默认为$/TeamProject/TeamBuildTypes,但是它不必存在.它实际上可以存在于解决方案内的文件夹中 - 甚至可以是专用于Team Build的解决方案中的项目.这有几个优点,包括使构建的分支更容易.因此,我的构建通常位于如下文件夹中:

$/TeamProject/main/MySolution/TeamBuild

另请注意,默认情况下,在构建的引导阶段,构建代理仅下载构建配置文件夹中的文件,并且不会向下递归到任何子文件夹.如果您希望在引导阶段将文件包含在子文件夹中,则可以在构建代理程序计算机上的tfsbuildserver.exe.config文件的appSettings中设置以下属性(位于%ProgramFiles%\ Visual Studio 9.0\Common7\IDE中)\PrivateAssemblies)


请注意,如果您有多个构建代理,则必须记住在所有计算机上设置此设置,这会影响该构建代理执行的每个构建 - 所以最好只保留文件的根目录.如果可以,构建配置文件夹.

祝好运,

马丁.


是否有可能在引导期间从其他文件夹路径下载TFS?我有一个Common.targets文件,其中包含我的TFSBuild.proj应该执行的所有自定义任务,但考虑到我有几个构建定义(每个定义一个文件夹),它位于与构建定义相同级别的单独文件夹中.当然,没有它,构建立即失败.
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有