| 订阅 | 在线投稿
分享
 
 
 

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

来源:互联网网民  宽屏版  评论
2006-09-15 06:27:58

这个提法不太合理,个人觉得。只是工程部门原来的程序都是跑在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" ) ,

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

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
  这个提法不太合理,个人觉得。只是工程部门原来的程序都是跑在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" ) ,    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)创建对象调用
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有