转: 在VB中调用.Net托管程序集

    技术2022-05-11  102

    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" ) ,   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)创建对象调用

     

    最新回复(0)