这个提法不太合理,个人觉得。只是工程部门原来的程序都是跑在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)创建对象调用
使用.NET2.0编写COM组件供VB调用
来源:商务互联
作者:佚名
时间:2008-04-01
点击:
0
最新评论共有 0 位网友发表了评论
查看所有评论
发表评论
- 栏目列表
-
热点关注
- 一个vb.net的用户登陆页面
- 在VB.NET中利用Split和Rep
- 用VB.NET设定当前工作路径
- VB.NET中让Textbox只能输
- VB.NET结构化异常处理基础
- 用VB.NET设计各种形状的窗
- VB.NET中LISTVIEW排序
- 在 VB.NET 中写注册表程序
- 一段显示下载进度条的下载
- VB.NET读取INI文件设置信
- VB.NET中HOOK功能的应用(
- 在VB.NET中如何确定两个日
- VB.NET中层次数据绑定Tree
- 掌握VB中的ADO数据对象编
- VB.NET 2002 与 VB.NET 20
- 浅议Visual Basic.NET中HO
- 在vb中实现超连接的方法!
- 使用.NET2.0编写COM组件供
- .NET下基于API封装的Direc
- 完整的VB.NET的语法解析程

