2010-06-17 62 views
0

我已經將類型添加到我用於COM互操作的.NET類中。爲了讓它與我的VB6應用程序一起工作,我取消註冊DLL並重新註冊它(使用regasm)。然後我卸載並重新安裝到GAC(使用gacutil)。我是否需要強制GAC重新加載程序集?這可能嗎?

這些類型顯示在VB6對象資源管理器中,但是當我在VB6 IDE中運行該應用程序時,它在實例化新類型的行上發生錯誤:Automation Errror - The System cannot find the file specified

我想這個奇怪的,因爲我已經更新了GAC,所以我卸載的dll從GAC並得到了確切的同樣的錯誤,這似乎表明該DLL的舊版本已經在內存和需求被「重新加載」,以便新的DLL在內存中。這是可能的,如果是這樣,我需要做什麼?

回答

0

嘗試保存您的VB6項目,關閉IDE並重新打開您的項目。在這種情況下,這對我有效。

1

我懷疑regasm.exe正在爲您的對象添加COM條目,並在GAC之前將它們指向組件的位置。通常情況下,GAC無論在任何情況下都會贏得勝利,這應該沒有什麼不同。但是可能是是COM互操作的差異。

嘗試通過註冊表來查看COM條目指向COM接口的位置,並確保您的程序集位於該位置。

+0

我不確定我是否在註冊表的正確位置,但是當我在'CLSID'中查找相應的鍵時,沒有列出特定的DLL,而是一個名爲'InprocServer32'的鍵, '(Default)','Assembly','Class','RuntimeVersion'(這是v4.0.30319)和'ThreadingModel'的值。由於沒有指定DLL(因爲如果我已經使用了'/ codebase'選項和'regasm'),我假設它正在嘗試使用GAC中的文件,但因爲它看起來並不像文件GAC在更改時總是加載到內存中,但我不確定。 – 2010-06-17 15:13:42

相關問題