匯入型別程式庫做為組件
COM 型別定義通常位於型別程式庫中。反之,符合 CLS 的編譯器則是在組件中產生型別中繼資料。這兩種型別資訊的來源有相當大的差異。
注意事項 |
---|
請盡可能使用要併入 Managed 程式碼的 COM 元件作者所發行的主要 Iinterop 組件。主要 Iinterop 組件中的型別已經為您匯入了,隨時可以從 Managed 程式碼啟動和呼叫。如需產生和使用主要 Interop 組件的詳細資訊,請參閱主要 Interop 組件的相關內容。 |
這個主題是描述從型別程式庫產生中繼資料的技術。產生的組件即稱為 Interop 組件。
產生中繼資料
COM 型別程式庫可以是單獨的 TLB 檔案,例如:Loanlib.tlb。而有些型別程式庫則會嵌入在 DLL 或 EXE 檔案的資源區段中。型別程式庫資訊的其他來源為 OLB 和 OCX 檔案。
找到包含目標 COM 型別實作的型別程式庫後,您可以使用下列選項,產生包含型別中繼資料 (Metadata) 的 Interop 組件:
Visual Studio 2005
Visual Studio 2005 會自動將型別程式庫中的 COM 型別轉換為組件中的中繼資料 (Metadata)。如需相關說明,請參閱 HOW TO:將參考加入至型別程式庫。
-
型別程式庫匯入工具提供命令列選項,可以調整產生的 Interop 檔案的中繼資料 (Metadata)、從現有型別程式庫匯入型別,並產生 Interop 組件 (Assembly) 和命名空間。如需相關說明,請參閱 HOW TO:從型別程式庫產生 Interop 組件。
-
TypeLibConverter 類別 (在 System.Runtime.InteropServices 命名空間中) 提供將型別程式庫中的 Coclass 和介面轉換成組件內中繼資料的方法。這個 API 會產生與 Tlbimp.exe 一樣的中繼資料輸出。不過,與 Tlbimp.exe 的不同之處在於,TypeLibConverter 類別可以將記憶體中型別程式庫轉換為中繼資料。
自訂包裝函式
當型別程式庫無法使用或不正確時,另一種選擇就是在 Managed 原始程式碼中建立類別或介面的重複定義。然後您可以用針對 Runtime 為目標的編譯器編譯這個原始程式碼,以產生組件中的中繼資料。
若要以手動方式定義 COM 型別,您必須擁有下列項目的存取權:
要定義的 Coclass 和介面的精確描述。
能夠產生適當 .NET Framework 類別定義的編譯器,例如 C# 編譯器。
型別程式庫轉換為組件的轉換規則 (Rule) 知識。
撰寫自訂包裝函式是您不常會用到的進階技術。如需產生自訂包裝函式的詳細資訊,請參閱自訂標準包裝函式。
如需 COM Interop 匯入處理序的詳細資訊,請參閱型別程式庫至組件轉換的摘要。
請參閱
工作
HOW TO:將參考加入至型別程式庫
HOW TO:從型別程式庫產生 Interop 組件
參考
型別程式庫匯入工具 (TlbImp.exe)
TypeLibConverter Class
概念
將 COM 元件公開給 .NET Framework
自訂標準包裝函式
在 Managed 程式碼中使用 COM 型別
編譯 Interop 專案
部署 Interop 應用程式