【问题标题】:msbuild for visual studio 2008 projects用于 Visual Studio 2008 项目的 msbuild
【发布时间】:2018-01-08 13:15:23
【问题描述】:

我们有一个相对较大的 C++ 应用程序,它有很多依赖项。在我们运行 msbuild 4.0.30319 的构建服务器上,使用 msbuild 进行增量构建时,我们不断收到链接器错误和失败。

在进一步调查之后,似乎确实没有在构建应用程序之前拾取和构建依赖库。

我的问题如下: 是否有构建此类具有依赖项的 C++ 项目的最佳实践?如果是,对于使用 VS2008 构建的 C++ 应用程序,使用 MSBUILD 进行增量构建的正确方法是什么?

【问题讨论】:

  • 恕我直言,构建服务器应该进行完整构建,而不是增量构建。开发人员可以在他们的工作站上进行增量构建。执行完整的构建可以让您对可交付成果更有信心。
  • 嗨,Thomas,我们确实做了完整的构建。事实上,我们既做增量也做完整。感谢您的输入,但我更感兴趣 msbuild 如何处理增量构建的构建依赖关系以及它是否支持它
  • 你设置好依赖了吗?右键单击 Solution Explorer 上的解决方案 (.sln) 并选择 Project Dependencies...

标签: c++ visual-studio visual-studio-2008 msbuild


【解决方案1】:

正如 Thomas 评论“构建服务器应该进行完整构建,而不是增量构建。

默认情况下,当您在构建服务器上创建新的构建定义时,它每次都会为您进行干净的构建。也就是说,在构建之间,前一个构建中的所有源代码与编译的输出一起被删除,然后源代码被重新下载,构建,你就可以开始了。这是默认设置的充分理由 - 这是最安全的选项。如果您的构建脚本完全弄乱了源目录中的文件(可能将构建号烘焙到 AssemblyInfo 文件等中),那么您希望获得一个干净的工作区以确保您回到已知的良好状态。

但是,如果您想在构建服务器中启用增量构建,例如 TFS,您可以参考Incremental Builds in Team Foundation Server 了解更多详细信息。

但我更感兴趣的是 msbuild 如何处理增量构建的构建依赖关系以及它是否支持它

项目之间的依赖关系可能会导致构建不一致。 Visual Studio 确实尊重项目到项目的引用,并在引用项目之前构建引用项目。但是,如果多个项目具有共享引用,则该引用仅构建一次并“缓存”以备下次引用。此外,一个构建上的错误和异常不会影响其他构建的运行,这可能取决于失败的构建。更多信息请参考Managed Incremental Build

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多