2011-06-30 42 views
1

我有一個項目帶有標記爲ComVisible(true)的單個接口。如果我構建項目,則會收到警告MSB3214:「」不包含任何可以爲COM Interop註冊的類型。註冊具有COM可見接口的Interop程序集的程序集僅給出警告MSB3214

但是,如果我創建一個空類,給它一個默認的構造函數並用ComVisible(true)標記它,我不會收到警告MSB3214。我看到註冊的類,但我沒有看到我的註冊表中的界面。

我缺少什麼?

回答

2

這是設計,儘管Jays鏈接。 Regasm.exe只爲實現接口的具體類寫入註冊表項。 ProgID和CLSID鍵。 COM確實有接口註冊(HKCR \ Interfaces),但只有代理註冊在那裏。 .NET沒有創建代理的機制。

僅與的程序集接口聲明僅用於創建類型庫,允許其他項目實現它們。創建類型庫不是問題,請使用Tlbexp.exe

+0

建議的替代方案那麼,這是否意味着我可以使用Tlbexp註冊表類型庫? –

+0

也不需要註冊不包含具體COM類的類型庫。你真的想做什麼? –

+0

我有從C++調用的接口。我試圖讓這些接口由具體的類來實現,而不管它們是否暴露給COM。我結束了只是將接口放入我的COM包裝DLL>再次感謝。 –

0

看起來可能是一個Visual Studio 2008的臭蟲在2008年7月報道:VS creates no type library for a project containing solely C# interfaces (MSB3214)

沒有列出任何變通辦法。

在響應數據2009年9月微軟,他們(大概)能夠解決這個問題:

我們能夠解決這個問題和 錯誤將在未來 發行的該產品是可用。

(假設他指的是錯誤修復將在下一版本)

我找不到任何證據的錯誤是固定的。

+0

感謝您的回覆。讓我調查由Hans P. –

相關問題