【问题标题】:TFS 2017 - how build/deliver only changed files?TFS 2017 - 如何仅构建/交付更改的文件?
【发布时间】:2023-04-07 21:09:02
【问题描述】:

我正在使用 TFS 2017,关于标题,我找到了一个术语:增量构建 - 但是,我找不到在哪里设置它。我试图在“构建参数”(/p:IncrementalBuild=true) 中添加增量参数,但总是出现错误,表明这是错误的参数。 是否可以仅交付(或构建和交付)更改的文件?

【问题讨论】:

    标签: version-control


    【解决方案1】:

    假设我是如何解决这个问题的(如果有人有类似的问题):

    由于 TFS 2017 始终交付所有文件 - 已更改和未更改,但我只需要更改,因此我解决了以下问题:

    由于传输到 Artifact 的文件保留时间戳(未更改的文件具有 last_edited 时间戳,并且已编辑的文件具有新的当前时间戳)我决定创建 FIXED Artifact 目录(不取决于构建版本,但始终相同)。然后我编写了 PowerShell 脚本(作为第一个发布步骤),它删除了时间戳为

    干杯! :)

    【讨论】:

    • 我喜欢你的解决方案。它非常聪明。虽然我认为有一个漏洞,那就是当您将现有文件添加到项目中时(例如现有字体或具有旧日期的图像)。
    • 这听起来很酷,但是当 PR 耗时过长时会发生什么?并且它会一次又一次地触发相同的构建,比如说,一个星期?
    • 我看到这种方法的主要问题是删除的文件存在于以前的部署中,但在新部署中不再需要。
    【解决方案2】:

    如果您想进行增量构建。当您添加 Visual Studio Build / MSBuild 任务 来构建项目时,只需取消选中 Clean 选项。因此,它将同步源代码,并且仅从第二次构建时获取更改的文件。看 Build task Arguments了解详情。

    Clean Option :如果您想使其成为增量构建,请设置为 False。此设置可能会减少您的构建时间, 特别是如果您的代码库很大。这个选项没有实用性 除非您还将 Clean repository 设置为 False,否则效果。

    如果要重建代码项目中的所有代码,请设置为 True。 这相当于 MSBuild /target:clean argument

    假设您只想将更改的文件传送到特定位置,您可以添加复制文件步骤将更改的文件复制到该位置。

    【讨论】:

    • 感谢安迪-MSFT!我现在就试试。
    • @J.Ops 您是否通过解决方案解决了您的问题?有更新吗?
    • Andy-MSFT,我没有按照您提供的方式解决这个问题 - TFS 始终交付所有文件 - 已更改和未更改。昨晚我解决了这个问题:由于传输到 Artifact 的文件保留时间戳(未更改的文件具有 last_edited 时间戳,并且已编辑的文件具有新的当前时间戳)我决定创建 FIXED Artifact 目录(不取决于构建版本,但始终相同)并编写 PowerShell 脚本,该脚本删除所有时间戳
    • 现在工件文件夹仅包含已编辑的文件(及其目录 -> 未更改的文件结构)。发布步骤现在将仅交付已编辑的文件(也就是说,工件中的所有文件)。
    • @AndyLi-MSFT 3 年后有什么进一步的方向吗?我能找到的最接近的是这篇文章:oshamrai.wordpress.com/2020/01/31/…,它有帮助,但仍然不适合一般网站,好的旧 html 内容。提前谢谢。
    猜你喜欢
    • 2018-08-22
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 2018-12-28
    • 2014-10-22
    相关资源
    最近更新 更多