C#創建COM組件


1,Application Properties Setting

注:Target framework如果不是代碼需要,盡量選擇低版本,便於支持在更多版本的操作系統;

Output Type選擇Class Library,因為我們的目的是將一個封裝好的dll注冊到系統中。

2,Bulid Properties Setting

注:Platform target有兩種,x86 / x64,區別在於注冊時使用的工具和使用COM組件的軟件限制。舉個例子,如果你的vba程序要用到這個組件,而你的Excel是32位的,那么你就需要將Platform target設置成x86,否則將不能使用;反之如果你的Excel事64位的,就需要將Platform target設置成x64,這樣創建的組件才能被使用。

如果勾選了Register for COM interop,Microsoft Visual Studio 可以自動將Bulid好的dll注冊到系統中,但需要使用Administrator權限。

3,Signing Setting

注:這一步很關鍵,必須創建簽名。

4,Code

namespace MYASSEMBLY
{
    [ComVisible(true)]   
    [Guid("B5A98418-0781-4F75-6BE48A9CC278")]
    [ProgId("MYASSEMBLY.TestAssembly")]
    public class TestAssembly
    {
        public string GetData(data)
        {
            return data;
         }
    }
}

5,注冊。如果你已經在第3步選擇了Register for COM interop,在bulid完成之后,就已經自動注冊完成了。但如果我們需要把這個dll注冊到另外一台計算機上,那就要手動使用CMD命令注冊了。這里分為32位注冊和64位注冊兩種方式:

C:
cd "C:\Windows\Microsoft.NET\Framework\v2.0.20727"
regasm "D:\Project\MYASSEMBLY\MYASSEMBLY.dll"
cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"
gacutil /i "D:\Project\MYASSEMBLY\MYASSEMBLY.dll"
C:
cd "C:\Windows\Microsoft.NET\Framework64\v2.0.20727"
regasm "D:\Project\MYASSEMBLY\MYASSEMBLY.dll"
cd "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin"
gacutil /i "D:\Project\MYASSEMBLY\MYASSEMBLY.dll"

6,使用。用一個最簡單的vbs.script來測試。

dim obj
set obj = CreateObject("MYASSEMBLY.TestAssembly")
Msgbox obj.GetData("Hello")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM