匯入型別程式庫做為組件

COM 型別定義通常位於型別程式庫中。反之,符合 CLS 的編譯器則是在組件中產生型別中繼資料。這兩種型別資訊的來源有相當大的差異。

Note注意事項

請盡可能使用要併入 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:將參考加入至型別程式庫

  • 型別程式庫匯入工具 (TlbImp.exe)

    型別程式庫匯入工具提供命令列選項,可以調整產生的 Interop 檔案的中繼資料 (Metadata)、從現有型別程式庫匯入型別,並產生 Interop 組件 (Assembly) 和命名空間。如需相關說明,請參閱 HOW TO:從型別程式庫產生 Interop 組件

  • TypeLibConverter 類別

    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 應用程式

其他資源

型別程式庫至組件轉換的摘要