2011-05-16 358 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