注册dll / tlb

时间:2011-05-16 14:04:22

标签: visual-studio-2010 dll registry arcgis typelib

我正在尝试在测试计算机上注册基于GIS的dll,并且我在测试计算机上使用ArcGIS 9.3.1-ArcMap加载tlb文件时遇到问题。当我尝试加载tlb文件时,说“没有添加新对象”。我使用Visual Studio 2010创建了dll文件.tlb文件在我的开发人员计算机上正常加载。我正在使用cmd.exe命令在测试计算机上注册dll / tlb(见下文)。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe C:\Temp\My.dll /tlb:My.tlb/codebase

注册回复成功,该项目列在MX Commands类别下的Component Category中。下面是我在班上使用的COM GUIDs部分代码。

#Region "COM GUIDs"
    Public Const ClassId As String = "1bf94bdf-907c-4026-816f-50feb7a2a976"
    Public Const InterfaceId As String = "7ba8a4d5-d15c-4d95-a819-a3e7cbe84533"
    Public Const EventsId As String = "2ab51582-47e1-490c-899d-a80992c20fdf"
#End Region

开发者计算机的操作系统是:

Microsoft Windows XP 32位, 版本5.1 - Service Pack 3

测试计算机的操作系统是:

Microsoft Windows XP 64位, 版本5.2 - Service Pack 2

我是否需要在开发人员计算机上执行Windows Update(至5.2)或者我的dll / tlb注册方法是否有问题?

感谢您的帮助!

更新

测试计算机上的ArcGIS软件安装在C:\ Program Files(x86)位置。

1 个答案:

答案 0 :(得分:1)

我认为您需要在目标PC上使用64位版本的RegASM进行注册。你应该在:

找到它
C:\Windows\Microsoft.NET\Framework64\v2.0.50727
                                  ^^

请注意,我假设您已将代码编译为MSIL(通过选择AnyCPU作为平台)。如果您已将其编译为目标32-bit,则需要更改它。

这是因为64位进程无法找到32位版本的RegAsm执行的注册,反之亦然。