阻止 IDE 自动添加使用单位

Stop the IDE from adding uses units automatically

我正在将 Lazarus 项目移动到 Delphi 西雅图。

Lazarus 项目依赖于 40 多个单元(包括控件)并有多个应用程序。

在所有项目的使用条款中,他们使用了以下内容:

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBCtrls, {$I OurLibrary.inc};    

他们将这 40 多个单位包含在 $I OurLibrary.inc.

由于其中一些单元是控件,所以我在 Delphi 中注册了它们。

但是,如果我保存项目或构建/编译它,Delphi 会再次在使用部分添加单位。

  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBCtrls, uOurEdit, {$I OurLibrary.inc}; 

在这种情况下,单位 uOurEdit 再次添加,即使它位于 $I OurLibrary.inc

如果我手动删除它并重新编译项目它 运行s。 当我切换回设计器模式并尝试 运行 时,同样的事情不断发生 - 它再次添加了 uOurEdit。

一旦你删除了一个单元,Lazarus 就不会再添加它。 Delphi 这样做。

有没有办法告诉 Delphi 停止读取单位或完全停止自动添加单位?

IDE 认为您的代码的某些部分在其控制之下。这包括大部分 DPR 文件、表单或数据模块声明的默认 published 部分,以及单元 interface 部分的 uses 子句。最好不要在这上面打IDE。你终究会输。

我不建议在 uses 子句中使用 include 指令。正如您已经注意到的,IDE 不会读取包含的文件来确定单元列表。表单设计器会自动添加它认为需要的单位,而且没有办法阻止它。

由于 IDE 会在使用时自动添加控件的单位,因此您应该能够安全地将它们从包含文件中删除。

您还可以考虑将单位列表移至 implementation 部分的 uses 子句。 IDE 没有碰到那个。

我同意使用包含文件不是一个好主意,但实际上有一种方法可以阻止 IDE 自动添加这些单元。

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBCtrl,
  {$IFDEF DUMMY}
  // add those units here which you don't want to automatically add
  // the IDE won't add them but they won't be part of the uses assuming
  // DUMMY is undefined
  uOurEdit,
  {$ENDIF}
  // Here comes the rest of the units
  {$I OurLibrary.inc};

这可能对您不起作用,因为无论如何您都必须手动添加 uOurEdit,因此最好听从 Rob 的建议。但是,此技术可用于停止 IDE 自动添加单位。