2013-02-11 24 views
0

我有一個程序集通過ComVisible向COM公開一個接口和一個類。這個類被VB6應用程序使用。我可以在組件之間移動COM類嗎?

現在,由於一些重組,我希望這個類由不同的程序集提供。只要我保留Guid和ProgID,我可以將代碼移動到這個新程序集中,註冊它,並讓VB6應用程序找到該類,而無需重新編譯它?

回答

1

只要我保持GUID和程序id

要小心,有的GUID,複數。至少有一個用於接口類型,IID和一個用於實現接口CLSID的類。如果您支持事件或在程序集中有多個接口或類,則可以使用其他方法。如果你還註冊類型庫(Regasm.exe/tlb選項),那麼你也有一個用於類型庫TLBID的程序集本身的GUID。

得到這些錯誤中的任何一個,或依靠.NET自動生成它們,並且替換將不起作用。

確保替換的最好方法是相同的反編譯類型庫並比較它們的身份。從Visual Studio命令提示符中,如果您尚未使用Tlbexp.exe,請首先生成類型庫。然後運行Oleview.exe,File + View Typelib獲取類型庫的內容,反編譯爲IDL。將右窗格內容複製/粘貼到文本文件中。重複更換DLL並進行比較。不要擔心評論中的差異。

+0

謝謝你在tlbid上的提示,我錯過了,並提示使用OleView。我已經成功地部署了一個帶有COM類的新程序集,並且可以確認它是否有效。 – 2013-02-15 18:33:56

1

是的,我不明白爲什麼不...只要確保舊的程序集已正確註銷。

相關問題