环境:VS2010,WinForm:
以VC下的dsoframer.ocx为例
1. 首先用AxImp.exe将ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件,这样才能在WinForm中使用。
AxImp.exe路径:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\
AxImp.exe能够把一个VC dll转换成两个.Net DLL,在C#项目中引用Ax开头那个。
注意:.Net DLL应具有强名称,所以要准备两个密钥文件,供AxImp.exe给生成的DLL签名用。
签名工具:sn.exe
sn.exe路径:\Program Files\Microsoft SDKs\Windows\v7.0A\bin
cmd中执行:sn -k d:\key1.snk
sn -k d:\key2.snk
aximp D:\dsoframer.ocx /keyfile:D:\key1.snk D:\key2.snk
生成了DSOFramer.dll 和AxDSOFramer.dll,C#项目中添加对AxDSOFramer.dll的引用。(两个DLL文件都需要,要放在一起)
2.注册DLL
三个DLL:dsoframer.ocx 、DSOFramer.dll 和AxDSOFramer.dll都需要注册。
dsoframer.ocx 用regsvr32.exe注册,DSOFramer.dll 和AxDSOFramer.dll用.net 下的RegAsm.exe进行注册,并用gacutil.exe将其添加进全局程序集缓冲。
gacutil.exe位置:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\
RegAsm.exe位置:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\
注意:
1.注册用的gacutil和RegAsm的版本要和你项目的运行库版本一致。比如你设置了项目的运行库为.net 2,那么你就要找主版本号为2的gacutil和RegAsm。
2.在64位windows上,你要把三个DLL全放进SysWOW64,并使用这个文件夹里的cmd.exe进行注册。
注册代码
regsvr32 /s \dsoframer.ocx
gacutil /i DSOFramer.dll
regasm DSOFramer.dll
gacutil /i AxDSOFramer.dll
regasm AxDSOFramer.dll