精品主页 | 软件下载 | 系统下载 | 精品导航| 精彩图片 | 转帖工具 | 版主申请 | 影视下载
发新话题
打印

用.NET2.0编写COM组件供VB调用

用.NET2.0编写COM组件供VB调用

  


                  用.NET2.0编写COM组件供VB调用


这个提法不太合理,个人觉得。只是工程部门原来的程序都是跑在VB上,调用的dll为ATL COM组件; 而现在的新功能开发都建立在.net2003上,于是便出现了 如题所述 的情况,怎样在.NET2.0中编写COM组件供VB调用??



  1.定义接口

  Com是通过抛出接口让外部应用调用的,每个接口、组件都有一个Guid,在.Net中开发Com组件也不例外。

  [Guid(“0bb13346-7e9d-4aba-9ff2-862e0105489a”)]

  public interface IMyService

  {

  //定义接口方法或者属性,每个方法或属性都有一个DISPID属性,供VBScript等使用

  

   [DispId( 1 )]

   void Method1( args … );

  }





  2.实现接口的派生类

   //Guid属性定义组件的Guid

   //ProgID定义Com组件的ProgID

   [Guid(

  "ba0a3019-f0d8-4406-8116-f80d5515c686[/img]   ProgId("ClassNamespace.MyService"),

   ClassInterface(

  ClassInterfaceType.None)]

   public class

  MyService : IMyService

   {

   …… //实现代码部分

   }





  3.将.Net装配件转换为公有装配件

   (1)创建强名字

   sn –k mykey.snk

   并将强名字拷贝到工程目录下面

   在AssembyInfo.cs修改对应的配置

   [assembly: AssemblyKeyFile(“../../mykey.snk”)]





  (2)导出类型库

   为了在VB中使用,必须使用tlbexp.exe导出Com类型库。

tlbexp SisCalLib.dll /out:SisCalLib.tlb


 (3注册装配件

   RegAsm MyService.dll



(4)将装配件加入GAC

   gacutil -i MyService.dll

   注意:该步骤不是必须的。

  



(5)在AssembyInfo.cs修改COM对外可见性配置



// 将 ComVisible 设置为 false 使此程序集中的类型

// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,

// 则将该类型上的 ComVisible 属性设置为 true。

[assembly: ComVisible(true)]



// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID

[assembly: Guid("e011ed16-93a3-41aa-8375-399fa259b935")]



经过上面的工作,就将一个.NET装配件转化为COM组件。



4.在VB中调用生成的COM组件(dll)



1)工程->引用



2)创建对象调用

TOP

发新话题