11

system32目录中,我看到了一个.OCX带有相应文件的.OCA文件。

我曾以为.OCA文件仅由 Visual Basic 使用。因此它们对于程序执行是不必要的并且可以被删除吗?

.OCA如果它们是不必要的,为什么文件夹中system32首先会有一个?

4

6 回答 6

19

.OCAfiles 用作其相应.OCX文件的扩展类型库信息的缓存。

如果您删除了.OCAVB 识别和使用的控件的文件,VB 将.OCA在您加载需要该控件的项目时重新创建该文件。娱乐过程需要一点时间,但不会受到任何惩罚。

最后审查:1996 年 4 月 4 日

文章编号:Q149429

概要 对于 Visual Basic 使用的每个自定义控件文件 (.OCX),都有一个具有相同文件名的随附 .OCA 文件。例如,GRAPH16.OCX 附带一个名为 GRAPH16.OCA 的 .OCA 文件。.OCA 文件是一个二进制文件,它既可用作扩展类型库文件,又可用作自定义控制文件的缓存。

更多信息

类型库是另一个文件中的文件或组件,其中包含公开对象、属性和方法的 OLE 自动化标准描述。Visual Basic 中使用的自定义控件的实际工作类型库是控件本身的类型库和包装该控件的框架提供的附加属性的组合。

控件的一些属性由框架提供,一些由控件本身提供。以编程方式,来自框架和控件的属性都显示为控件的属性。

为了使这些属性出现,Visual Basic 在控件加载到工具箱时创建一个扩展类型库。因为读取控件的类型库和创建扩展类型库的过程非常耗时,Visual Basic 将扩展类型库信息缓存到 OCA 文件中。

如果删除 Visual Basic 识别的控件的 OCA 文件,则在加载需要该控件的项目时,Visual Basic 将重新创建 .OCA 文件。这种重新创建过程会带来时间损失。

( http://support.microsoft.com/kb/149429 )

因此,在部署应用程序时不必担心包括它们。

于 2010-10-29T19:22:01.400 回答
2

很抱歉复活了一个僵尸线程,但我想总结一下以确保我理解这一点。仅在程序编译期间需要 OCA 文件,如果缺少该文件,VB 将创建所需的文件,因此丢失的只是编译期间的时间。除非你的编程真的很草率,而另一个自制的 dll 或 ocx 需要特定的 oca。如果一个 oca 是随产品一起提供的,它应该能够被安全地删除。

于 2011-05-19T19:41:14.230 回答
1

不,它们不是执行所必需的,但它们是程序正常运行所必需的(如果程序首先需要该文件)。

于 2010-11-02T01:57:03.877 回答
1

它们永远不需要与完成的程序一起部署才能运行。

于 2010-11-02T02:20:49.043 回答
1

这可能是一个愚蠢的回答尝试,但您可以简单地重命名文件并查看应用程序是否退出工作。如果是这样,这些文件是必需的。

DNA 科学也差不多:
移除一个基因,看看是什么停止了“工作”。事实上,这个基因与那个身体部位或其他任何东西有关/必要。

于 2010-11-09T00:42:27.440 回答
0

回复:不,它们不是执行所必需的,但它们是程序正常运行所必需的(如果程序首先需要文件)。

由于执行和运行意味着同一件事 - 你的意思是:它不需要运行但它需要它才能正常运行?或者,它不需要执行,但它需要正确执行?

我怀疑 *.OCA 文件不是必需的,除非使用 VB 编译程序,如果在加载项目时它们不存在,那么 VB 将自动创建任何丢失的 OCA 文件,以加快未来的加载或编译操作在 VB 中。

我刚刚从我的系统中删除了每个 OCA 文件(当我使用克隆的虚拟机执行此操作时,我是一个勇敢的人)。然后我重新启动并运行我的软件,它工作得很好,我的整个系统上没有任何 OCA 文件。现在下次加载/编译我的程序可能需要更长的时间,因为 vb 将重新生成 OCA 文件,但我使用的是具有 16Gb RAM 和 SSD 的 i7,所以谁在乎!

于 2018-10-30T23:47:41.717 回答