爲了簡短起見,我已經構建了一個C#類庫,它既是COM-Visible又是COM Interop的註冊表。我編譯了這個庫,導致生成了.dll和.tlb文件。用於VB6應用程序的類庫的RegAsm
我有另一臺運行VB6應用程序的機器。因此,我將.dll和.tlb文件複製到機器上的C:/ Windows/system32文件夾中。然後,我用註冊這些文件如下:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm C:\Windows\system32\TestClass.dll /tlb:TestClass.tlb
文件已成功註冊後,我添加了一個項目引用從我的VB6應用程序內Test.tlb文件,然後我想在我的新的調用方法引用類如下:
Dim myObject As TestNamespace.TestClass
Set myObject = New TestNamespace.TestClass
MsgBox (myObject.TestMethod())
它不起作用,我收到一個-2147024894自動化錯誤。
我讀過,我不應該將dll安裝到像system32這樣的私人文件夾中。我應該無論是在GAC被註冊或者我應該在其他位置使用「/代碼庫」選項登錄:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm C:\TestClass.dll /tlb:TestClass.tlb /codebase
有沒有我不應該使用SYSTEM32任何理由?曾經在這個項目上工作過的開發人員已經將這個VB6項目使用的彙編文件放到了system32中,但似乎沒有任何問題。
當我在system32位置註冊我的dll時,出現自動化錯誤。當我在另一個位置(即C:/)註冊我的dll時,從VB6調用我的類庫的方法按預期工作。是什麼賦予了?
我應該提到,我們不會使用GAC來註冊任何DLL。就是那樣子。
任何幫助表示讚賞。
邁克
你嘗試/ codebase選項時註冊在system32文件夾中的DLL? – 2010-05-26 18:34:06