程式集註冊工具讀取程式集中的中繼資料,並將所需的項添加到註冊表中。註冊表允許 COM 客戶程式以透明方式建立 .NET Framework 類。類一經註冊,任何 COM 客戶程式都可以使用它,就好像該類是一個 COM 類別。類僅在安裝程式集時註冊一次。程式集中的類執行個體直到被實際註冊時,才能從 COM 中建立。 regasm assemblyFile [options]
參數 參數 說明 assemblyFile 要向 COM 註冊的程式集。
選項 說明 /codebase 在註冊表中建立一個 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 選項只為託管類發出登錄機碼。此選項不為 TypeLibID 或 InterfaceID 發出登錄機碼。 指定 /tlb 選項時,Regasm.exe 產生並註冊一個類型庫,對在程式集中找到類型進行描述。Regasm.exe 將產生的類型庫放到當前的工作目錄中或為輸出檔案指定的目錄中。為引用其他程式集的程式集組建類型庫可能導致同時產生幾個類型庫。可使用類型庫向開發工具(如 Visual Studio 2005)提供類型資訊。如果正在註冊的程式集是由類型庫匯入程式 (Tlbimp.exe) 產生的,則不應使用 /tlb 選項。如果程式集是從類型庫匯入的,則不能從它匯出類型庫。除了類型庫匯出程式 (Tlbexp.exe) 不能註冊它產生的類型庫外,使用 /tlb 選項同使用 Tlbexp.exe 和 Regasm.exe 的效果相同。如果使用 /tlb 選項註冊某個類型庫,則可將 /tlb 選項和 /unregister 選項一起使用,以登出該類型庫。將兩個選項一起使用將登出類型庫和介面項,這樣可較大程度地清理註冊表。 當您註冊一個程式集供 COM 使用時,Regasm.exe 會在本機電腦的註冊表中添加一些項。更具體地說就是,它建立與版本相關的登錄機碼,這些項允許在一台電腦上並行運行同一程式集的多個版本。第一次註冊程式集時,會為該程式集建立一個頂級項並為這個程式集版本建立一個唯一的子項。每次註冊該程式集的新版本時,Regasm.exe 都為新版本建立一個子項。 例如,假設您要註冊一個版本為 1.0.0.0 的託管組件 myComp.dll 供 COM 使用。後來,您又註冊版本為 2.0.0.0 的 myComp.dll。您確定電腦上的所有 COM 用戶端應用程式都要使用 2.0.0.0 版本的 myComp.dll,並且決定登出 myComponent.dll 版本 1.0.0.0。此註冊表方案允許您登出 myComp.dll 版本 1.0.0.0,這是因為登出操作只移除 1.0.0.0 版本子項。 使用 Regasm.exe 註冊程式集之後,可以將該程式集安裝在全域組件快取中,以便可以從任何 COM 用戶端啟用它。如果程式集僅準備由單個應用程式啟用,則可以將它放到該應用程式的目錄中。 下面的命令註冊 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 好了,接下來我們就可以在自己的基於目前COM技術的代碼中方便的使用上面我們使用C#編寫的.NET組件了。在這裡,我們使用VB6.0編寫一個小小的測試代碼,在開始之前我們需要在VB的Integration Environment中使用菜單中的“引用”選項,選擇我們剛才產生的類型庫檔案ClassLibrary1.tlb。 VB測試的代碼如下: Private Sub Form_Load() Dim test As New ClassLibrary1.hello Dim str As String str = test.say("dddd") MsgBox str End Sub
|