2011-05-16 328 views
0

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

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

登记回复为成功和该项目中下MX命令类别组件类别列出。以下是我在课堂中使用的COM GUID部分代码。

#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更新开发计算机上(5.2),或者是有什么错我的DLL/TLB注册方法?

感谢您的帮助!

UPDATE:

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

回答

1

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

C:\Windows\Microsoft.NET\Framework64\v2.0.50727 
            ^^ 

请注意,我假设你已经(通过选择AnyCPU为平台)编译的代码为MSIL。如果你编译它的目标是32-bit,那么你需要改变它。

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

+0

目标CPU被设置为AnyCPU。我试过你的“Framework64”路径。它注册了它,但是当我在组件类别中查找它时没有列出它,而“框架”路径选项没有在组件类别中列出它。测试计算机在C:驱动器(“Program Files”和“Program Files(x86)”下有两个Program Files文件夹ArcGIS软件位于Program Files(x86)文件夹下 – artwork21 2011-05-16 14:43:41

+0

@ artwork21 ArcGIS软件为32在这种情况下,我的答案不适用,因为这是一个常见问题,所以我将它留在这里。 – 2011-05-16 14:46:30

+0

我应该在开发人员计算机上执行Windows更新以将Service Pack升级到5.2吗?谢谢! – artwork21 2011-05-16 14:56:08