C# 注册COM+组件步骤

作者在 2006-09-24 07:06:00 发布以下内容

1) 在建立C#工程之后必须要给类一个强名称。
要创建强名称,可以使用 sn 工具。此命令行工具有许多选项,在命令提示符处键入 sn /? 可以查看所有选项。对程序集签名所需的选项是“-k”,它将创建一个密钥文件。默认情况下,该文件使用 .snk 作为扩展名。例如,要创建一个名为 MyCom.snk 的密钥文件,可以使用以下命令行:
 sn -k MyCom.snk
然后在工程中引用这个强名称
方法如下:
(1):注释掉AssemblyInfo.cs中的[assembly: AssemblyKeyFile("")]和[assembly: AssemblyKeyName("")]
(2): 在组件类中写入
using System.Data.OleDb;//引用ADO.net命名空间
using System.Data;//引用数据空间
using System.Runtime.InteropServices;//为了调用GUID
                        System.EnterpriseServices命名空间包涵所有COM+的类型库所以在编写COM+组件的时候一定要用到System.EnterpriseServices命名空间,这个命名空间在引用中.net页下可以找到
      using System.EnterpriseServices;//引用COM+名命空间
            using System.Runtime.CompilerServices;//运行时编译服务器
      using System.Reflection;//用些全局属性取得强名属性
[assembly: ApplicationName("myCom")]
                 //强名文件名和文件属性。用sn.exe生成,用法 sn -k mycom.snk
      [assembly: AssemblyKeyFileAttribute("mycom.snk")]
[assembly: AssemblyKeyName("mycom.snk")]
   (3)组件类的写法
组件类的写法有二种一种是以前的那种
一种是基于接口编程的例如
namespace myCom//把所有代码写到相应的命名空间内
{
//每一个接口一个GUID号
[Guid("549047DE-9F3B-4781-A1F6-F3C852091FC9")]
//接口类型ComInterfaceType.InterfaceIsDual接示接口需要双重公开给COM+
//这个属性是接口的属性
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
//定义接口
public interface Add

{
接口内的方法返回布尔值有一个整型参数
bool AddData(int d);

bool AddDataM(int d);
}
       //实现这个接口
//事务属性表示需要新事务
//这个属性用来记录类是否支持事务有车个选项同VB中类的属性相同
 [Transaction(TransactionOption.RequiresNew )]
//在类中实现这个接口必须要继承System.EnterpriseServices;命名空间的ServicedComponent类
//在后面继承前面所定义的接口如果有多个可以用“,”分开
 public class myClass:ServicedComponent,Add
 {
//  public myCom.myClass   error =new ErrorsLibrary.Class1();

  //定认字符变量用来存放数据库连接字符串
  private static string strConnect ="Provider=MSDAORA.1;Password=erpii;User ID=erpii;Data Source=erpii;Persist Security Info=True";
  //创建这个连接
  private OleDbConnection conConnection = new OleDbConnection ( strConnect ) ;
   
   

  //实现接口中的查询方法
  public bool AddData(int id)
  {
   try
   {

    //string StrSql="insert into    TEST1   values( '" + id + "')";
    string StrSql=" insert into    test_d  values( '" + id + "',"
     +"'" + id + "',"
     + "'" + id + "',"
     + "'" + id + "')";
    //     string StrSql="DELETE FROM TEST1";
    //找开连接
    conConnection.Open(); // 打开数据连接
    //执行查询
    OleDbCommand cmd = new OleDbCommand ( StrSql , conConnection ) ;
    cmd.ExecuteNonQuery ();
    conConnection.Close ();

    //ContextUtil.SetComplete() ;
    return true;
   }
   catch (Exception e)
&

(编程)Work | 阅读 1629 次
文章评论,共0条
游客请输入验证码
浏览317350次