【问题标题】:TFS Build: projects rebuilt even if not changedTFS Build:即使没有更改,也会重建项目
【发布时间】:2016-05-05 13:46:09
【问题描述】:

我正在尝试通过 Team Build 系统 (TFS 2013) 自动化我们的主要项目构建 (C++)。 但是,我看到总是构建几个项目,即使没有发生代码更改,而在我的开发机器上使用 VS2013 不会发生这种情况。这会让人有些头疼,因为即使没有真正修改,也会始终生成二进制文件并将其发送给测试团队。

在构建输出中启用“诊断”冗长,我看到这两个项目表现出不同的行为。

在第一个项目中,日志显示所有 .cpp 文件都已重建,因为 .PCH 文件已被修改(尽管没有发生任何更改)。我可以尝试禁用 PCH,但如果可能的话,我真的会避免它。此外,不去寻找错误的根本原因会为一次又一次的错误表示敞开大门。

在第二个项目中,我们有一个生成 .h 文件的预构建步骤。但是,如果未检测到代码更改 (https://msdn.microsoft.com/en-us/library/42x5kfw4.aspx),则不应运行预构建步骤,这在我的开发机器上确实发生了。相反,在构建机器上,会执行预构建步骤,生成 .h,这会强制完全重新构建。

在团队构建设置中,我有“Clean workspace=false”、“Clean build=false”。我还在 MSBuild 设置中尝试了“/p:IncrementalBuild=True”,但这并没有解决问题。

注意 - 我在发帖前已经查看了 Visual Studio Rebuilds unmodified projectsVS2010 always rebuilds solution?

【问题讨论】:

    标签: c++ visual-studio-2013 tfsbuild


    【解决方案1】:

    根据您关于 project2 的信息,预构建步骤在构建代理上执行,而不是在您的本地计算机上执行。您的本地构建环境和构建代理环境必须有所不同。这可能是根本原因。

    建议您仔细检查并确保环境彼此相同。然后再试一次。

    【讨论】:

    • 显然构建环境应该是相同的。已经为此构建自动化任务创建了测试代理,因此应该没有旧的/损坏的东西,我尝试在两个环境中都删除/获取最新/干净的构建,但仍然得到相同的结果 - VS 构建的行为符合预期,TFS 构建重新编译了这两个项目。
    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2014-06-08
    • 2013-02-12
    相关资源
    最近更新 更多