淺析C#編寫COM組件的幾種方法
我們將介紹C#編寫COM組件的幾種方法,并通過代碼講解的相識,對.NET中的C#編寫COM組件進(jìn)行詳細(xì)的介紹。包括生成.NET程序集,注冊并創(chuàng)建一個程序庫等等。
- Encrypt( string pToEncrypt,string sKey ) //加密
- Decrypt( string pToDecrypt,string sKey ) //解密
然后你這樣寫代碼:
- using System;
- using System.Runtime.InteropServices;
- namespace 名稱空間
- {
- // 首先建立接口,這個是Com必須使用的
- [Guid( "61BB24CB-4C2C-40f8-9E13-1AC5E558D56A" )]
- public interface IEncrypt
- {
- string Encrypt( string pToEncrypt,string sKey );
- string Decrypt( string pToDecrypt,string sKey );
- }
- // 寫接口的實現(xiàn)
- [Guid( "CB52E990-185E-4448-A7E8-C88ECAD563AB" )]
- public class 類名稱 : IEncrypt
- {
- public string Encrypt( string pToEncrypt,string sKey )
- {
- // 復(fù)制FAQ加密代碼
- }
- public string Decrypt( string pToDecrypt,string sKey )
- {
- // 復(fù)制FAQ解密代碼
- }
- }
- }
然后用vs.net打包成.dll類庫文件,假設(shè)名稱為MyEncrypt.dll
然后用如下工具
regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb
這個.tlb文件就是類型庫,可以由vb6和vc++6引用.
注意上面的guid是使用vs.net工具菜單里面的創(chuàng)建guid工具生成的.
還要注意,vs.net自動生成的assemblyinfo.cs文件中必須添加強(qiáng)名稱和版本號,因為Com組件需要版本號,不要改動版本號,也不要用vs.net自動的1.*這樣的版本號,最好使用
1.1.1.1這樣的固定版本,而且必須一次添加,不能多次添加.
步驟
一 生成.net程序集:
首先你把http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=35935的代碼復(fù)制.
然后你復(fù)制這個代碼
- using System;
- using System.IO;
- using System.Text;
- using System.Runtime.InteropServices;
- using System.Security.Cryptography;
- namespace Csic
- {
- // 首先建立接口,這個是Com必須使用的
- [Guid( "61BB24CB-4C2C-40f8-9E13-1AC5E558D56A" )]
- public interface IEncrypt
- {
- string Encrypt( string pToEncrypt,string sKey );
- string Decrypt( string pToDecrypt,string sKey );
- }
- // 寫接口的實現(xiàn)
- [Guid( "CB52E990-185E-4448-A7E8-C88ECAD563AB" )]
- public class Crypt : IEncrypt
- {
- public string Encrypt( string pToEncrypt,string sKey )
- {
- // 復(fù)制FAQ加密代碼
- }
- public string Decrypt( string pToDecrypt,string sKey )
- {
- // 復(fù)制FAQ解密代碼
- }
- }
- }
把上面的文件保存成vs.net項目的一個類庫工程.
然后使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符
在命令行內(nèi)打下
- cd c:\ <回車>
- sn -k myKey.snk<回車>
就在C盤根目錄下生成一個名叫myKey.snk的強(qiáng)名稱文件,然后關(guān)閉提示符窗口.
在vs.net的那個類庫工程自動生成的AssemblyInfo.cs文件內(nèi)把
- [assembly: AssemblyKeyFile( "" )]
改成
- [assembly: AssemblyKeyFile( @"C:\myKey.snk" )]
把[assembly: AssemblyVersion( "1.0.*" )]
改成
- [assembly: AssemblyVersion( "1.0.0.0" )] // 注意:這時你的Com組件版本為1.0.0.0版
然后按Shift + Ctrl + B鍵生成dll庫(使用Release模式),假設(shè)是Csic.Crypt.dll.
這時候,程序集就建立成功了.
二、注冊該程序集并創(chuàng)建一個類型庫
仍然使用開始菜單中的Vistual Studio .Net命令提示符
進(jìn)入你的項目目錄,假設(shè)為D:\myProject\bin\Release
在對話框中輸入
- d:<回車>
- cd myproject\bin\release<回車>
然后輸入 dir 命令可以看見Csic.Crypt.dll文件
然后輸入:regasm /tlb Csic.Crypt.tlb Csic.Crypt.dll<回車>
然后就在這個目錄下生成了Csic.Crypt.tlb類型庫文件.不要關(guān)閉此提示符窗口.
這時候,這個.dll的.net程序集就變成一個標(biāo)準(zhǔn)的Com組件了,但是還不能用,必須讓它變成全局Com組件.
這個regasm 實用程序?qū)?chuàng)建一個類型庫并在 Windows 注冊表中對其進(jìn)行注冊,以使 PhysServer2.dll 中的類對 COM 客戶端可用 .
三、 將程序集添加到全局程序集緩存中
進(jìn)入提示符窗口,輸入
- gacutil /I Csic.Crypt.dll<回車>
這時,你的這個dll就被復(fù)制到全局程序集緩存中了.也就是說無論在這個電腦的哪個硬盤上都可以使用此dll組件了.
四、C#編寫COM組件使用方法
asp內(nèi)的使用方法
- set obj = Server.CreateObject( "Csic.Crypt" )
- dim str1
- str1 = obj.Encrypt( "要加密內(nèi)容","密碼" ) // 加密
- dim str2
- str2 = obj.Decrypt( "要解密內(nèi)容","密碼" ) // 解密
【編輯推薦】