建立新的應用程式或元件時,最好建立 .NET Framework 元件。 不過,Visual Basic 也可讓您輕鬆地將 .NET Framework 元件公開至 COM。 這可讓您為需要 COM 元件的舊版應用程式套件提供新的元件。 本逐步解說示範如何使用 Visual Basic 將 .NET Framework 物件公開為 COM 物件,無論使用和不使用 COM 類別範本。
公開 COM 物件最簡單的方式是使用 COM 類別範本。 此範本會建立新的類別,然後設定您的專案使用互操作層作為 COM 物件生成類別,並將其註冊至操作系統。
備註
雖然您也可以將 Visual Basic 中建立的類別公開為 COM 物件,以供 Unmanaged 程式代碼使用,但它不是真正的 COM 物件,而且無法供 Visual Basic 使用。 如需詳細資訊,請參閱 .NET Framework 應用程式中的 COM 互作性。
備註
您的電腦可能會在下列指示中顯示某些 Visual Studio 使用者介面元素的不同名稱或位置。 您擁有的 Visual Studio 版本,以及您所使用的設定會決定這些元素。 如需詳細資訊,請參閱 個人化 IDE。
若要使用 COM 類別範本建立 COM 物件
單擊 [新增專案],從 [檔案] 功能表開啟新的 Windows 應用程式專案。
在 [項目類型] 字段下的 [新增專案] 對話框中,檢查是否已選取 Windows。 從 [範本] 清單中選取 [類別庫],然後按兩下 [確定]。 顯示新的專案。
從專案選單中選取新增項目。 [ 新增專案 ] 對話框隨即顯示。
從 [範本] 清單中選取 [COM 類別],然後按兩下[新增]。 Visual Basic 會新增類別,並設定 COM Interop 的新專案。
將屬性、方法和事件等程式代碼新增至 COM 類別。
從 [建置] 選單中選取 [Build ClassLibrary1]。 Visual Basic 會建置組件,並將 COM 對象註冊到操作系統。
建立不含 COM 類別範本的 COM 物件
您也可以手動建立 COM 類別,而不是使用 COM 類別範本。 此程序在您從命令列工作或希望對 COM 物件的定義方式有更多控制時會很有幫助。
若要設定專案以產生 COM 物件
單擊 [新增專案],從 [檔案] 功能表開啟新的 Windows 應用程式專案。
在 [項目類型] 字段下的 [新增專案] 對話框中,檢查是否已選取 Windows。 從 [範本] 清單中選取 [類別庫],然後按兩下 [確定]。 顯示新的專案。
在 [方案總管] 中,以滑鼠右鍵按下您的專案,然後按兩下 [ 屬性]。 [ 項目設計工具 ] 隨即顯示。
按一下 [編譯] 索引標籤。
選取 [ 註冊 COM Interop] 複選框。
若要在您的類別中設定程式碼,以建立 COM 物件
在 方案總覽 中,按兩下 Class1.vb 以顯示其程式碼。
將類別重新命名為
ComClass1
。將下列常數新增至
ComClass1
。 他們會儲存 COM 對象必須擁有的全域唯一標識碼 (GUID) 常數。Public Const ClassId As String = "" Public Const InterfaceId As String = "" Public Const EventsId As String = ""
在 工具 選單上,按一下 建立 Guid。 在 [ 建立 GUID] 對話框中,按兩下 [ 登錄格式 ],然後按下 [ 複製]。 按兩下 [結束]。
將空的
ClassId
字串替換為 GUID,並去除 GUID 開頭和結尾的大括號。 例如,如果 Guidgen 提供的 GUID 是"{2C8B0AEE-02C9-486e-B809-C780A11530FE}"
,則您的程式代碼應該如下所示。Public Const ClassId As String = "2C8B0AEE-02C9-486e-B809-C780A11530FE"
針對
InterfaceId
和EventsId
常數重複上述步驟,如下列範例所示。Public Const InterfaceId As String = "3D8B5BA4-FB8C-5ff8-8468-11BF6BD5CF91" Public Const EventsId As String = "2B691787-6ED7-401e-90A4-B3B9C0360E31"
備註
請確定 GUID 是新的和唯一的;否則,您的 COM 元件可能會與其他 COM 元件衝突。
將
ComClass
屬性新增至ComClass1
,並指定類別標識碼、介面識別碼和事件標識碼的 GUID,如下列範例所示:<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> Public Class ComClass1
COM 類別必須具有無
Public Sub New()
參數建構函式,否則類別將無法正確註冊。 將無參數建構函式新增至 類別:Public Sub New() MyBase.New() End Sub
將屬性、方法和事件新增至 類別,並以語句結尾
End Class
。 從 [建置] 功能選取 [建置方案]。 Visual Basic 會建置組件,並將 COM 對象註冊到操作系統。備註
其他 Visual Basic 應用程式無法使用您使用 Visual Basic 產生的 COM 物件,因為它們不是真正的 COM 物件。 嘗試加入這類 COM 對象的參考將會引發錯誤。 如需詳細資訊,請參閱 .NET Framework 應用程式中的 COM 互作性。