Team Foundation Server 中的增量构建问题
Incremental Builds issue in Team Foundation Server
当我们进行 TFS 构建时,我们能否更改构建输出,使输出仅限于更改,从而减少部署负载?示例:
- 当我构建解决方案时,我应该只获取更改后的 dll 而不是全部(包括 Microsoft 和其他从未更改过的第 3 方 dll。
在 TFS 2015 中配置 CI 解决方案,并取消选中清理选项,因为 TFS 2015/2017 始终交付所有文件 - 更改和未更改,但我只需要更改。这个技巧不能解决问题:
Build (TFS Build), only what is changed
关注了其他几个来源。
应用这些技巧将 PropertyGroup 定义下几乎没有设置(IncrementalBuild =True
、ForceGet=False
、SkipInitilizeWorksplace=True
、SkipClean=True
)的项目更新到 TFSBuild.proj 文件.
但问题仍然存在,我们无法在构建文件夹中生成仅更改的二进制文件,所有文件始终存在。
请帮助我实现所需的构建输出。
增量构建仅重建不依赖于已更改文件的程序集。但它确实复制了所有项目输出(依赖它的后续项目可能依赖于这些程序集和文件)。
这会导致增量构建速度更快,但不会"only deliver the changed files"。它始终交付所有文件,无论它们是否已更改。最重要的是,你可以有多个代理,每个代理可以有多个工作文件夹,增量构建可以使用其中任何一个作为增量构建的基础,不能保证更改的文件在你以前的构建和当前的构建之间一.
您必须自己实现此功能,它从来不是 MsBuild 或 TFS Build 的一部分。这将涉及查询 TFS 以获取最后一个放置文件夹并在 运行 增量构建之后执行比较。然后只复制更改的文件和删除文件的日志。
PS:TFSBuild.proj 类型构建非常 已弃用。它们已被 TFS 2010 中的 XAML 版本超越,并从那时起被视为 "legacy"。随后,新的 VSTS/Azure DevOps 构建系统超越了它们,该系统弃用了 XAML 构建。在旧版 XAML 工作流程中执行 TFSBuild.proj 项目时,大多数与源代码管理交互的属性将被忽略。相反,XAML 代理负责在将控制权传递给 MsBuild 之前获取源代码。这些新的 VSTS/Azure Devops 构建任务现在也获得了对基于 Git 的源代码控制存储库的 YAML 支持。
当我们进行 TFS 构建时,我们能否更改构建输出,使输出仅限于更改,从而减少部署负载?示例:
- 当我构建解决方案时,我应该只获取更改后的 dll 而不是全部(包括 Microsoft 和其他从未更改过的第 3 方 dll。
在 TFS 2015 中配置 CI 解决方案,并取消选中清理选项,因为 TFS 2015/2017 始终交付所有文件 - 更改和未更改,但我只需要更改。这个技巧不能解决问题:
Build (TFS Build), only what is changed
关注了其他几个来源。
应用这些技巧将 PropertyGroup 定义下几乎没有设置(IncrementalBuild =True
、ForceGet=False
、SkipInitilizeWorksplace=True
、SkipClean=True
)的项目更新到 TFSBuild.proj 文件.
但问题仍然存在,我们无法在构建文件夹中生成仅更改的二进制文件,所有文件始终存在。
请帮助我实现所需的构建输出。
增量构建仅重建不依赖于已更改文件的程序集。但它确实复制了所有项目输出(依赖它的后续项目可能依赖于这些程序集和文件)。
这会导致增量构建速度更快,但不会"only deliver the changed files"。它始终交付所有文件,无论它们是否已更改。最重要的是,你可以有多个代理,每个代理可以有多个工作文件夹,增量构建可以使用其中任何一个作为增量构建的基础,不能保证更改的文件在你以前的构建和当前的构建之间一.
您必须自己实现此功能,它从来不是 MsBuild 或 TFS Build 的一部分。这将涉及查询 TFS 以获取最后一个放置文件夹并在 运行 增量构建之后执行比较。然后只复制更改的文件和删除文件的日志。
PS:TFSBuild.proj 类型构建非常 已弃用。它们已被 TFS 2010 中的 XAML 版本超越,并从那时起被视为 "legacy"。随后,新的 VSTS/Azure DevOps 构建系统超越了它们,该系统弃用了 XAML 构建。在旧版 XAML 工作流程中执行 TFSBuild.proj 项目时,大多数与源代码管理交互的属性将被忽略。相反,XAML 代理负责在将控制权传递给 MsBuild 之前获取源代码。这些新的 VSTS/Azure Devops 构建任务现在也获得了对基于 Git 的源代码控制存储库的 YAML 支持。