在 TBIMP 编辑的 dll 之后手动生成 ActiveX 包装器?
我有几个需要从 C# 项目访问的 ActiveX 组件。
我可以通过 Visual Studio 的添加引用对话框导入它们,该对话框还将自动生成包装类。 (即 ABCLib
和 AxABCLib
)
我知道我可以通过在每个单独的 OCX 文件上运行 TLBIMP /primary
来手动生成主互操作程序集,但我除非我通过 Visual Studio 用户界面生成 ActiveX 包装器,否则无法找到生成 ActiveX 包装器的方法。
是否有在 .NET SDK 中生成 ActiveX 包装器的命令行版本?
我想从 TBIMP 手动获取的 PIA 生成 AxABCLib
版本。 (即设置命名空间、输出 dll 文件名等)可能吗?
I have several ActiveX components that needed to be accessed from a C# project.
I can import them via Visual Studio's add reference dialog, which will also automatically generate wrappers class. (i.e. ABCLib
and AxABCLib
)
I know that I can generate the primary interop assembly manually by running TLBIMP /primary
on each individual OCX file but I could not find a way to generate the ActiveX wrapper unless I do it via Visual Studio user interface.
Is there a command-line version that generate the ActiveX wrapper in the .NET SDK?
I want to generate the AxABCLib
version from the PIA I got from TLBIMP manually. (i.e. setting namespaces, output dll filenames etc.) Is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
哦...查看TLBIMP所在文件夹后找到了。
它称为
AxImp
。C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\AxImp.exe
所以基本上,要在您自己的自定义命名空间中生成 PIA DLL:
注册您的 OCX
regsvr32 abc.ocx
通过运行为您的 ocx 生成强名称密钥对
sn -k
运行 TBIMP 并指定所需的命名空间
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 存在一些问题。 我还不知道如何解决这个问题。
Oh... found it after looking at the folder where TLBIMP belongs.
It's called
AxImp
.C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\AxImp.exe
So basically, to generate a PIA DLL in your own customized namespace:
Register your OCX
regsvr32 abc.ocx
Generate a strong name key pair for you ocx by running
sn -k
Run TLBIMP and specify the desired namespace
tlbimp abc.ocx /primary /keyfile:abc.snk /out:abc.dll /namespace:MyNamespace
Run AXIMP on the ocx and use the
rcw
switch to use your own manully generated PIA DLL.aximp abc.ocx /source /rcw:abc.dll
That should do it.
There are however some problems with ancient TLBs being imported. I am not sure how to fix that yet.