簡體   English   中英

在VB6應用程序中,ac#dll的CreateObject僅在IDE中“ActiveX組件無法創建對象”失敗

[英]In VB6 application, CreateObject for a c# dll fails with “ActiveX component can't create object” in IDE only

我有需要在VB6中使用的C#程序集。 我已經在以前的機器/操作系統上工作,但在我目前的Windows 10機器上,我無法在VB6 / VS6 IDE中調試時使用它。 每當我點擊時:

Set interop = CreateObject("BTR.Core.Interop.Activator")

我收到一個'ActiveX組件無法創建對象'。 錯誤。

如果我運行編譯的VB6應用程序,一切正常。 所以它必須是關於VB6 / VS6 IDE的某個權限問題。

我發現其他帖子提到確保使用32位版本的regasm並且我已經嘗試了regasmC:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\RegAsm.exe無濟於事。

因為它在我運行編譯的VB6應用程序時工作(並且由於應用程序和VB6應用程序都在以前的機器上工作),我認為這證明將我的C#dll暴露給COM的所有設置都是正確的,但我很高興挖掘如果有人認為這是相關的更多細節。

我看到的唯一可疑的事情就是這篇文章( 從.NET程序集創建對象時VB6中的后期綁定運行時錯誤 )討論了運行regasm后注冊表中應該包含的內容。 我的所有設置都在WOW6432NODE鍵中

HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\WOW6432Node\\CLSID\\{2942ED53-BBC4-311D-9840-1FE610885592}

所以不確定是否存在某種32/64位沖突或者是什么。 任何建議表示贊賞。

好吧,我找到了解決方案。 我不確定它是不是正確的。 但我發現其他類似於這個問題的帖子談到了用/tlb參數運行regasm來創建一個類型庫,然后在VB6中引用它。 當我將應用程序部署到另一台機器時,我不想擁有該引用,所以我忽略了這些建議。

最后,我決定嘗試使用該參數並引用類型庫,然后VB6 IDE調試工作。

但是奇怪的部分(對我來說很好)是,然后我刪除了引用,VB6 IDE繼續工作。 所以,不知何故,在我刪除引用后,在IDE中運行時,在VB6中添加引用確實能夠使其工作。

希望這可以幫助其他任何可能在新的Windows操作系統上維護VB6應用程序的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM