0

我是 .NET 开发人员。我对引用在 .NET 中的工作方式有很好的理解,即如果您想在 AssemblyB.classB.MethodB 中使用 AssemblyA.ClassA.MethodA,那么您将在 Assembly A 中添加对 Assembly B 的引用。

我正在查看一个 VB6 应用程序,当我打开它时出现错误,即加载期间出现错误。请参阅 frmMain.log。我打开 frmMain.log,它说:“2142:控件 CommonDialog1 的类 MSComDlg.CommonDialog 不是加载的控件类。”。我使用 WinMerge 将故障项目中的源代码与项目的先前版本(没有问题)进行了比较。唯一的区别是错误项目在 client.vdp 文件中包含以下行:

Reference=*\G{08DBEFD7-6A19-4DCE-A533-5BDBB93683C8}#1.2#0#..\..\..\..\..\Windows\SysWOW64\Comdlg32.oca#Microsoft Common Dialog Control 6.0 (SP3)

删除此行似乎可以解决问题。为什么这能解决问题?


我使用 Winmerge 将昨天的项目修订版(没有问题)与今天的项目修订版(确实有问题)进行了比较。唯一的区别是 VBP 文件中原始帖子中的引用。

4

1 回答 1

1

我假设有人在另一台机器上安装了这个控件的开发版本,然后设置了对它的引用。当您尝试在您的机器上打开项目时,引用失败。或者控件被卸载。似乎该项目没有使用引用,并且可以安全地删除它,因为它仍然可以在没有引用的情况下编译。

但是,我已经看到 vb6 在这种情况下实际上从有问题的表单中删除了非许可控件。因此,您现在可能可以编译,因为表单缺少以前存在的组件。您是否检查过 .frm 和 .frx 文件的 frmMain 没有更改?

于 2013-09-05T20:47:41.983 回答