【问题标题】:Delphi 10.3.2 Build Fails to Find DFM filesDelphi 10.3.2 Build 找不到 DFM 文件
【发布时间】:2019-12-20 12:30:12
【问题描述】:

我正在使用并行虚拟机,最近我在 Dropbox 中的代码包含在虚拟机中。 Dropbox 有很多问题,如果你有很多文件,它真的很慢。由于 Parallels 很乐意从 HOST 共享文件夹,并且其中一个文件夹是 HOST Dropbox 文件夹,因此我开始使用该驱动器(基本上 \mac\Dropbox 映射为 W:)。一切顺利,VM 速度更快,我可以轻松访问 pas/dfm 文件。

但是,当我构建项目时,编译器抱怨它找不到 DFM 文件(例如 about.dfm、login.dfm 等)。各种 DFM 文件都在那里,编译器抱怨不同的 DFM 文件,即。一个构建它将是 login.dfm 和 about.dfm,下一个它会抱怨它找不到 Waiting.dfm。所有 DFM 文件都在那里,可以在 IDE 中轻松编辑。

除了不断尝试构建项目之外,我唯一能尝试的就是将项目的路径放入库中。这没什么区别。

在另一个项目中,编译器找不到项目资源 (res) 文件。当然,那个文件也在那里。

[dcc32 Error] E1026 File not found: 'EMPSecureInitialize.res'
[dcc32 Error] E1026 File not found: 'EMPSecureInitialize.res'

[dcc32 Error] E1026 File not found: 'About.dfm'
[dcc32 Error] E1026 File not found: 'Login.dfm'
[dcc32 Error] E1026 File not found: 'EMPSecureSlideShow.dfm'
[dcc32 Error] E1026 File not found: 'About.dfm'
[dcc32 Error] E1026 File not found: 'Login.dfm'
[dcc32 Error] E1026 File not found: 'EMPSecureSlideShow.dfm'

源代码在本地驱动器上的项目,构建没有问题。在网络(Parallels Host)驱动器上使用源的项目任意找不到 DFM 或 RES 文件。这些文件在使用 IDE 时总是很容易找到,即。单击“设计”并出现表单。

我可以理解这是否是一个一致的错误,但它不是 100% 可重复的,有时构建会按预期工作。编译器是否使用了某种奇怪的时序或路径构造?

【问题讨论】:

  • 您的场景中涉及的巨大组件太多,很难找出罪魁祸首。我不认为 DropBox 是托管源代码的合适平台。为什么不直接使用一些基于云的源代码控制,例如 GitHubBitBucket
  • @PeterWolf 当然还有其他选择,但是使用 Dropbox(在主机上)意味着我可以轻松访问文件(它们在主机上是本地的)并且有版本控制以及 SVN 存储库保存在那里。每次我启动我的开发机器时,这似乎是一个避免 Dropbox Thrashing 的简单解决方案(并且只需很少的更改)。无论如何,我同意你的观点,并会尝试其他一些云存储介质。
  • 通过映射驱动器一次可以打开的远程文件的数量可能存在某种限制。如果我记得,共享文件夹可以选择控制并发连接数。
  • 解决方案将从摆脱保管箱开始
  • 很抱歉问了一个明显的问题,但是当编译器抱怨它找不到 xxx.DFM 时,您是否检查过它与相应的 xxx.PAS 文件实际存在于同一文件夹中?我之所以问,是因为我不确定您所说的“各种 DFM 文件都在那里”是什么意思。

标签: delphi dfm


【解决方案1】:

虽然几乎不可能有人重现您的精确环境来重现此问题,但我有一种非常强烈的感觉,即一次可以打开的并发文件数量受到限制。至少在 Windows 上,当一个文件夹被共享时,它具有控制并发连接数的能力。

想象一下编译器是如何工作的。它需要快速打开大量文件以读取其内容并从中构建 DCU。首先,加载 PAS 文件。然后,那些依赖于附加文件(例如 DFM 或 RES 文件)的文件会被加载。然后将所有内容链接在一起以产生输出。编译器需要同时打开很多文件。

因此,可能有一种方法可以通过 Parallels 虚拟化来控制和增加同时打开的文件的数量。这似乎不是 Dropbox 的问题。

【讨论】:

  • 好吧,如果文件在同一个虚拟机和本地,它可以正常工作并且已经正常工作了很多年。此问题仅在使用共享 (Dropbox) 文件夹时出现。我尝试使用 OneDrive 文件夹重复相同的构建问题,即。以同样的方式由主机与虚拟机共享。它工作正常,没有找不到 DFM 或 RES 文件。 TBF 主机上的 Dropbox 文件要多得多,但在构建中没有被访问。构建环境被一个一个复制到另一个,并且是相同的。看起来像是 Dropbox 问题。
  • 对不起,杰瑞,但如果与当前打开文件数量的限制有任何关系,我确实会感到非常惊讶。它很容易测试:只需从命令行手动调用编译器并使用您选择的工具来查看打开文件的数量。我猜这是 DropBox 的怪癖。
  • @KevinBlack 如果 Dropbox 当前没有运行会怎样?
  • @JerryDodge 在主机上停止 Dropbox 存在问题。因为共享是使用 Parallels VM 配置->共享完成的,如果 Dropbox 没有在主机上运行,​​那么它不会将驱动器映射到来宾上。一个选项是自己映射驱动器,但即使共享,我也看不到来宾上的文件夹。随着 Dropbox 在主机上停止并通过 HOME 文件夹(如 Home:\Dropbox)访问,我仍然找不到 DFM 文件。所以这似乎是 Parallels 共享而不是 Dropbox 的问题。我很想简单地使用本地 onedrive 中的文件夹,这似乎可行。
  • @KevinBlack 这就是我所怀疑的。可能是 Dropbox 本身设置了一些限制。即使它被禁用,它的“规则”也会被遗忘。我不太熟悉通过 MacOS 进行共享,但我在 Windows 网络上进行了很多共享,包括映射的网络驱动器,并且遇到了与达到并发限制相关的问题。它甚至可能与 HDD 相关。
猜你喜欢
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
  • 2021-01-17
  • 2010-12-04
相关资源
最近更新 更多