分类: C#/.net
2014-07-04 21:38:35
一、VB.net操作步骤:
1.安装InterOP Forms Tookits (适用于2005,2008)
安装之后visual studio的工具菜单上面会有一个Generate Interop Form Wrapper Classes子菜单;
在.net的新建项目下面(Visual Basic.net)会有两个VB6Interop forms模版,该工具只对VB.net语言有用;
一个模版是带完整.net窗体的组件,另一个是自定义组件,类似于OCX;
1)带完整.net窗体组件
新建-->项目-->VB6Interop forms Libaray,自动添加一个窗体InteropForm1,然后可以在窗体上添加各种控件,打开代码窗口,加入想VB6公开的各种属性、方法、事件;
这需要添加标签来说明
public sub New(byval flag as string)
me.new()
.......
end sub
public event SayHello as HelloEvent
public delegate sub HelloEvent()
定义完之后使用“工具”->"Generate Interop Form Wrapper Classes"菜单自动生成所有该种类的包装类,我们可以看到,对重载构造函数的包装名称改为了initialize;
点击生成,然后使用gacutil.exe /i 添加dll到全局程序集缓存,使用regasm 来注册程序集;
二、VB6.0引用
在VB6中首先要引用Microfost.Interop Form Tookits Library和该dll(如helloworld.dll);
如果带有事件,定义 dim withevents hello as helloworld.dll
set hello=new helloworld
hello.initialize("Stringparameter") 如果有重载构造函数的话;
注意:该控件不能在Form_Load事件中new ,另外,由于.net dll所生成窗体是由InteropToolbox 管理的,VB6不能确定它们何时关闭,因此需要在VB6中定义全局变量
public InterManager As New InteropToolbox
在开始的时候使用InterManager.EventMessenger.RaiseApplicationStartedupEvent,结束时使用InterManager.EventMessenger.RaiseApplicationShutdownEvent告诉 InteropToolbox .net组件的声明周期;
三、部署组件
使用.net的安装和部署项目,将VB下Exe程序(以及相关依赖项)加进来,同时将.net下dll加进来,设置dll的register属性为vsdraCOM(在安装期间注册程序集)
同时使用项目属性中的系统必备项(Prerequisites)将.net FrameWork以及Microsoft InteropForms Toolkit 2.0 加入,即可生成;
2.单独部署程序集
在.net安装项目下添加Gacutil.exe和regasm.exe,同时制定自定义操作gacutil /i 和regasm.exe 在安装时执行;同时添加系统必备项Microsoft InteropForms Toolkit;如果不创建安装文件,直接使用Gacutil.exe和regasm.exe命令即可,客户端同时需要安装Microsoft InteropForms Toolkit 2.0
还可以将.net FrameWork以及Microsoft InteropForms Toolkit 2.0 用msbuild.exe打包成setup文件然后在系统必备项(Prerequisites)中选择,效果与同时选中两项相同;
有关msbuild.exe的用法我也不是很了解,有各种XML配置,有兴趣的话请自行研究;
小结:
Microsoft InteropForms Toolkit 工具提供了制作VB可以调用的.net类型库和组件的便利途径,但是它只能用VB.net来开发,C#不能使用该工具,和用C#直接开发相比,VB客户端都不要安装.net框架,使用起来感觉工作量差别不大,关键在于开发者对各自的熟悉程度。