Regasm.exe (組件登錄工具)
組件註冊工具會讀取組件內的中繼資料,並將必要的項目加入至登錄,這樣可讓 COM 用戶端順利地建立 .NET Framework 類別。 註冊類別之後,任何 COM 用戶端都可以將它當做 COM 類別使用。 類別只會在安裝組件時註冊一次。 在實際註冊類別之後,才能從 COM 建立組件內類別的執行個體。
若要執行此工具,請使用 Visual Studio 開發人員命令提示字元或 Visual Studio Developer PowerShell。
語法
regasm assemblyFile [options]
參數
參數 | 描述 |
---|---|
assemblyFile | 要向 COM 註冊的組件。 |
選項 | 描述 |
---|---|
/codebase |
在登錄中建立一個程式碼基底項目。 Codebase 專案會指定未安裝在全域程式集緩存中的元件檔案路徑。 如果您後續將註冊的元件安裝到全域程式集緩存中,請勿指定此選項。 強烈建議您使用 選項指定的 /codebase assemblyFile 自變數為強名稱元件。 |
/registered |
指定這個工具只會參考已註冊的類型程式庫。 |
/asmpath:directory |
指定包含組件參考的目錄。 必須搭配 /regfile 選項使用。 |
/nologo |
隱藏 Microsoft 程式啟始資訊顯示。 |
/regfile [: regFile] |
產生組件的指定 .reg 檔,其中包含所需的登錄項目。 指定這個選項並不會變更登錄。 您無法搭配 /u 或 /tlb 選項使用此選項。 |
/silent 或 /s |
隱藏顯示成功訊息。 |
/tlb [: typeLibFile] |
從指定的組件中產生類型程式庫,其中包含組件內所定義之可存取類型的定義。 |
/unregister 或 /u |
移除註冊 assemblyFile 中所找到的可建立類別。 省略這個選項會造成 Regasm.exe 註冊組件中可建立的類別。 |
/verbose |
指定詳細資訊模式;會以 選項指定 /tlb 時,顯示需要產生類型連結庫之任何參考元件的清單。 |
/? 或 /help |
顯示工具的命令語法和選項。 |
注意
Regasm.exe 命令列選項不區分大小寫。 您只需要提供足夠的選項資訊,就可唯一識別該選項。 例如, /n
相當於 /nologo
,且 /t: outfile.tlb
相當於 /tlb: outfile.tlb
。
備註
您可以使用 /regfile
選項來產生包含登錄專案的.reg檔案,而不是直接對登錄進行變更。 您可以使用登錄編輯程式工具 (Regedit.exe) 匯入 .reg 檔,藉此更新電腦上的登錄。 .reg檔案不包含任何可由使用者定義緩存器函式建立的登錄更新。 選項 /regfile
只會發出Managed類別的登錄專案。 此選項不會發出 TypeLibID
或 InterfaceID
專案。
當您指定 /tlb
選項時,Regasm.exe產生並註冊類型庫,描述元件中找到的類型。 Regasm.exe 會將產生的類型程式庫放入目前的工作目錄中,或是為輸出檔指定的目錄中。 為參考其他組件的組件產生類型程式庫可能導致一次產生多個類型程式庫。 您可以使用型別程式庫提供型別資訊給 Visual Studio 這類開發工具。 如果您要註冊的元件是由類型連結庫匯入工具 (Tlbimp.exe) 產生,請勿使用 /tlb
選項。 您無法從原本自類型程式庫匯入的組件匯出類型程式庫。 /tlb
使用 選項的效果與使用類型庫導出工具(Tlbexp.exe)和Regasm.exe相同,但Tlbexp.exe不會註冊它所產生的類型庫。 如果您使用 /tlb
選項來註冊類型庫,您可以使用 /tlb
選項來 /unregister
取消註冊類型庫的選項。 這兩個選項一起使用時,將會移除類型程式庫和介面項目的註冊,因而大幅清除登錄。
當您註冊 COM 要使用的組件時,Regasm.exe 會將項目加入至本機電腦上的登錄。 更精確地說,它會建立與版本相關的登錄機碼,允許相同組件的多個版本在電腦上並存執行。 第一次註冊元件時,會為元件建立一個最上層索引鍵,並針對特定版本建立唯一的子機碼。 每次您註冊新的組件版本時,Regasm.exe 就會為這個新的版本建立一個子機碼。
例如,假設您註冊 Managed 元件 myComp.dll 1.0.0.0 版以供 COM 使用。 稍後您又註冊 myComp.dll 2.0.0.0 版。 您決定讓電腦上的所有 COM 用戶端應用程式都使用 myComp.dll 2.0.0.0 版,並決定移除 myComponent.dll 1.0.0.0 版的註冊。 這項登錄配置可讓您移除 myComp.dll 1.0.0.0 版的註冊,因為只會移除 1.0.0.0 版的子機碼。
使用 Regasm.exe 註冊組件之後,您可以將它安裝在全域組件快取中,以便可以從任何 COM 用戶端將它啟用。 如果組件將只會由單一應用程式啟用,您可以將它放置到該應用程式的目錄中。 /codebase
使用 選項是使用全域程式集緩存的替代方案;不過,註冊期間元件的位置會以全域方式記錄,如果移動元件,啟用將會失敗。 如果無法透過 探查找到元件,此選項 /codebase
會在載入自內容中載入元件,其中包含中 Assembly.LoadFrom記載的其他考慮。
範例
下列命令會註冊所有包含在 myTest.dll
中的公用類別。
regasm myTest.dll
下列命令會產生 myTest.reg
檔案,該檔案中包含所有必要的登錄項目。 這個命令不會更新登錄。
regasm myTest.dll /regfile:myTest.reg
下列命令會註冊包含在 myTest.dll
檔中的所有公用類別,並且產生和註冊 myTest.tlb
類型程式庫,其中包含所有在 myTest.dll
中定義之公用類型的定義。
regasm myTest.dll /tlb:myTest.tlb