【问题标题】:Incremental Builds issue in Team Foundation ServerTeam Foundation Server 中的增量构建问题
【发布时间】:2019-05-31 17:58:07
【问题描述】:

当我们进行 TFS 构建时,我们是否可以更改构建输出,使输出仅限于更改,从而减少部署负载?示例:

  • 当我构建解决方案时,我应该只获取已更改的 dll,而不是全部(包括 Microsoft 和其他从未更改过的第 3 方 dll。

在 TFS 2015 中配置 CI 解决方案,并取消选中清理选项,因为 TFS 2015/2017 始终交付所有文件 - 已更改和未更改,但我只需要更改。这个技巧不能解决问题:

Build (TFS Build), only what is changed

关注了其他几个来源。

应用这些技巧将 PropertyGroup 定义下的项目(IncrementalBuild =TrueForceGet=FalseSkipInitilizeWorksplace=TrueSkipClean=True)更新到 TFSBuild.proj 文件的末尾。

但问题仍然存在,我们无法在构建文件夹中生成仅更改的二进制文件,所有文件始终存在。

请帮助我实现所需的构建输出。

【问题讨论】:

    标签: tfs msbuild tfsbuild


    【解决方案1】:

    增量构建仅重建不依赖于已更改文件的程序集。但它确实复制了所有项目输出(依赖它的后续项目可能依赖于这些程序集和文件)。

    这会导致增量构建速度更快,但它并非“仅交付更改的文件”。它始终交付所有文件,无论它们是否已更改或未更改。最重要的是,您可以有多个代理,每个代理可以有多个工作文件夹,增量构建可以使用其中任何一个作为增量构建的基础,不能保证更改的文件在您之前的构建和当前构建之间一个。

    您必须自己实现此功能,它从未成为 MsBuild 或 TFS Build 的一部分。这将涉及在 TFS 中查询最后一个放置文件夹并在运行增量构建后执行比较。然后只复制更改的文件和已删除文件的日志。

    PS:TFSBuild.proj 类型的构建已非常弃用。它们已被 TFS 2010 中的 XAML 构建超越,自那时以来一直被视为“遗留”。它们随后被新的 VSTS/Azure DevOps 构建系统超越,该系统已弃用 XAML 构建。在旧版 XAML 工作流中执行 TFSBuild.proj 项目时,会忽略与源代码管理交互的大多数属性。相反,XAML 代理负责在将控制权传递给 MsBuild 之前获取源。这些新的 VSTS/Azure Devops 构建任务现在也获得了对基于 Git 的源代码控制存储库的 YAML 支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 2020-01-18
      • 2013-07-02
      • 2011-05-27
      • 2012-04-17
      • 2015-04-01
      相关资源
      最近更新 更多