Note
此指引針對 .NET 框架專屬。 對於現代 .NET COM Interop,請使用原始碼產生的 COM Interop 或 System.Runtime.InteropServices.ComWrappers API。 欲了解更多資訊,請參閱 COM 互操作概述 及 COM 來源產生。
有兩種方式可產生主要 Interop 組件:
使用 Windows SDK 提供的型別程式庫匯入工具 (Tlbimp.exe)。
產生主要 Interop 組件最直接的方法是使用型別程式庫匯入工具 (Tlbimp.exe)。 Tlbimp.exe 會提供下列保護措施:
- 在為任何巢狀型別程式庫參考建立新的 Interop 組件之前,會先檢查是否已有其他已註冊的主要 Interop 組件。
- 如果您未指定容器或檔案名稱,來指定主要 Interop 組件的強式名稱,則無法發出主要 Interop 組件。
- 如果您省略相依組件的參考,則無法發出主要 Interop 組件。
- 如果您新增對非主要 Interop 組件之相依組件的參考,則無法產生主要 Interop 組件。
使用與 Common Language Specification (CLS) 相容的語言,例如 C#,在原始程式碼中手動建立主要 Interop 組件。 無法使用類型程式庫時,這個方法就很有用。
您必須擁有一組密碼編譯金鑰組,才能使用強式名稱為組件簽署。 如需詳細資料,請參閱建立金鑰組。
用 Tlbimp.exe 產生一個主要互操作組件
在命令提示字元中,輸入:
tlbimptlbfile/primary /keyfile:filename/out:assemblyname
在這個命令中,tlbfile 是含有 COM 類型程式庫的檔案,filename 是含有金鑰組的容器或檔案名稱,而 assemblyname 則是要簽署為強式名稱的組件名稱。
主要互通操作組件只能參考其他主要互通操作組件。 如果您的組件參考了來自第三方 COM 類型程式庫的類型,則您必須先從發佈者取得主要 Interop 組件,才能產生您自己的主要 Interop 組件。 如果您是發佈者,則必須先為相依的型別程式庫產生主要 Interop 組件,然後才能產生參考該程式庫的主要 Interop 組件。
當安裝在目前目錄中時,其版本號碼與原始類型程式庫不同的相依主要 Interop 組件將無法被發現。 您必須在 Windows 登錄中登錄相依的主要 Interop 組件,或使用 /reference 選項,以確定 Tlbimp.exe 能找到相依的 DLL。
您也可以包裝類型程式庫的多個版本。 如需操作說明,請參閱如何:包裝型別程式庫的多個版本。
範例
下列範例會匯入 COM 類型程式庫 LibUtil.tlb,並使用金鑰檔案 LibUtil.dll 將組件 CompanyA.snk 簽署為強式名稱。 藉由略過特定命名空間名稱,此範例會產生預設的命名空間 LibUtil。
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /out:LibUtil.dll
如需更具描述性的名稱 (使用 VendorName.LibraryName 命名指導方針),下列範例會覆寫預設組件檔案名稱和命名空間名稱。
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /namespace:CompanyA.LibUtil /out:CompanyA.LibUtil.dll
下列範例會匯入 MyLib.tlb,它參考 CompanyA.LibUtil.dll 並使用金鑰檔案 CompanyB.MyLib.dll 將組件 CompanyB.snk 簽署為強式名稱。 命名空間 CompanyB.MyLib 會覆寫預設命名空間名稱。
tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll