【问题标题】:Why should you delete the 'obj' folder on every build?为什么要在每次构建时删除“obj”文件夹?
【发布时间】:2017-01-20 20:08:30
【问题描述】:

我是一个项目的新手,而且建设速度很慢。 现在,我将许多项目的下一步行动视为构建后事件:

 <PostBuildEvent>rd "$(ProjectDir)obj" /S /Q</PostBuildEvent>

我读到obj 文件夹会跟踪构建,因此增量构建可以更快,所以我认为这可能与它有关。

但是,我的团队中没有人知道为什么要这样做,删除这个文件夹,所以我有点犹豫是否要删除构建操作。

执行此操作的原因是什么?

【问题讨论】:

  • 你如何看待Christian的回答?您现在有什么问题吗?
  • @starain 看起来不错,但我希望有一些“真实”的东西可以从行动中受益,所以我可以决定是否需要“真实”的东西。
  • 我认为删除 obj 文件夹的原因是,您不想“启用”增量构建以确保每个文件都是最新的。

标签: visual-studio visual-studio-2015 msbuild


【解决方案1】:

我想到了几件事情(这些事情本身都值得怀疑):

  • 自定义构建步骤相同,或者 - 上帝保佑 - 其他需要它的项目(以便下一个构建成功)。
  • (被误导的)保留磁盘空间的尝试(因为在构建后所有“珍贵”都在“bin”中,您在技术上不需要“obj”)。
  • (被误导的)尝试实现“clean、clobber 等”-语义

您需要有关完整构建系统、其他项目等的更多信息,以便找出更多或更好的理由——如果有的话;-)

【讨论】:

    【解决方案2】:

    执行此类操作的唯一可能原因是MSBuild 实用程序的功能缺乏了解

    我相信目标需求(如果存在)可以通过其他方式实现,不会省略增量构建功能。

    尝试在您正在使用的 VCS 中找到该字符串的作者,如果作者不可用或无法回答问题,请警告您的同事并将其删除,看看会发生什么。

    【讨论】:

      【解决方案3】:

      Visual Studio 中存在一个错误,如果您使用项目文件中定义的 IntermediateOutputPath 移动 obj 目录,那么编译器仍然会以任何方式创建一个空的 obj 目录。我自己都做,但是用VS2010。如果 VS2015 已修复此问题,您可以将其删除。

      【讨论】:

      • 我使用了BaseIntermediateOutputPath(为每个配置和平台组合设置,靠近带有“”的行)并且能够将obj文件夹从默认位置移开(在上面根,包含解决方案文件的文件夹),没有 Visual Studio 2012 创建一个空的 obj 文件夹。
      猜你喜欢
      • 2021-01-11
      • 2017-01-28
      • 2019-08-04
      • 2021-06-20
      • 1970-01-01
      • 2018-08-05
      • 2011-09-28
      • 2019-04-14
      • 1970-01-01
      相关资源
      最近更新 更多