我正在对多年前在VB6中编写的古老应用程序进行一些维护。在某些时候,它几乎没有任何变化迁移到VB.NET。我不知道他们是如何或为何成功的。
源代码管理中的项目包含对Interop.MSHierarchicalFlexGridLib
和AXInterop.MSHierarchicalFlexGridLib
的引用以及警告“<The system cannot find the reference specified>
”。该项目包含超过102个错误(如果您是Visual Studio 2008的新手,则是错误列表中显示的最大错误数)。
我删除了这两个损坏的引用,并添加了对Microsoft Hierarchical Flex Grid 6.0 COM控件的引用。这更正了对MSHierarchicalFlexGridLib.MSHFlexGrid
的所有引用,将错误数降低到64.其余错误是未解析的AxMSHierarchicalFlexGridLib
命名空间引用的结果,几乎完全在Designer代码中。起初我认为这可能只是一些Import
技巧(重命名命名空间),但控件的名称也以“Ax”(AxMSHierarchicalFlexGridLib.AxMSHFlexGrid
)为前缀。我猜“Ax”只是代表“Active X”并且指的是完全相同的控件,但在我去大部分Designer代码中更改60多个引用之前,我想学习更多。到目前为止,我的谷歌已经失败了。
问题:
AxMSHierarchicalFlexGridLib.AxMSHFlexGrid
是否相同
MSHierarchicalFlexGridLib.MSHFlexGrid
如果它是相同的,为什么Designer会更改名称,是否可以安全地查找 - 替换对重命名的命名空间的所有引用? (另外,对AXInterop.MSHierarchicalFlexGridLib
的第二次引用来自何处?)
如果它不相同,我错过了COM控件的名称是什么?
另一个奖励问题:
源代码管理中的项目似乎只包含对interops的引用,而不是对COM对象的引用。我可以相信,一个不知道自己在做什么的人设法闯进了“工作”的东西,但为了以防万一...... Visual Studio的许多自动化向导,工具等可能有什么办法介入?我想确保不再重复这种情况。
由于
P.S。我只是从头开始重写这个项目,但是单独的frmMain代码文件(我不敢说“Class”)包含近17,000行,所以这项工作需要的时间比我允许花费的时间多。
答案 0 :(得分:1)
如评论所述,名称以AxInterop开头的程序集通常由Aximp.exe工具自动生成。它创建了一个从Winform的AxHost类派生的控件,并支持在表单上删除ActiveX控件。
考虑到MSHFlexGrid(一个VB6控件)的年龄,您可能希望将DLL签入源代码控制中,这样您就不会再次丢失它。