我有几个需要从C#项目访问的ActiveX组件。
我可以通过Visual Studio的添加引用对话框导入它们,这也将自动生成包装类。 (即ABCLib
和AxABCLib
)
我知道我可以通过在每个单独的OCX文件上运行TLBIMP /primary
手动生成主互操作程序集,但除非我通过Visual Studio用户界面执行此操作,否则无法找到生成ActiveX包装程序的方法。
是否有一个命令行版本可以在.NET SDK中生成ActiveX包装器?
我想从手动从TLBIMP获得的PIA生成AxABCLib
版本。 (即设置名称空间,输出dll文件名等)是否可能?
答案 0 :(得分:7)
哦......在查看TLBIMP所属的文件夹后找到它。
它被称为AxImp
。
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\AxImp.exe
基本上,在您自己的自定义命名空间中生成PIA DLL:
注册您的OCX
regsvr32 abc.ocx
通过运行
为您生成强名称密钥对 sn -k
运行TLBIMP并指定所需的命名空间
tlbimp abc.ocx /primary /keyfile:abc.snk /out:abc.dll /namespace:MyNamespace
在ocx上运行AXIMP并使用rcw
开关使用您自己手动生成的PIA DLL。
aximp abc.ocx /source /rcw:abc.dll
应该这样做。
然而,导入古代TLB存在一些问题。我不知道如何解决这个问题。