3

我有几个需要从 C# 项目访问的 ActiveX 组件。

我可以通过 Visual Studio 的添加引用对话框导入它们,该对话框还将自动生成包装器类。(即ABCLibAxABCLib

我知道我可以通过TLBIMP /primary在每个单独的 OCX 文件上运行来手动生成主互操作程序集,但我找不到生成 ActiveX 包装器的方法,除非我通过 Visual Studio 用户界面执行此操作。

是否有在 .NET SDK 中生成 ActiveX 包装器的命令行版本?

我想AxABCLib从手动从 TLBIMP 获得的 PIA 生成版本。(即设置命名空间、输出 dll 文件名等)有可能吗?

4

1 回答 1

7

哦……看了TLBIMP所属的文件夹后找到了。

它被称为AxImp

C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\AxImp.exe

所以基本上,要在您自己的自定义命名空间中生成 PIA DLL:

  1. 注册您的 OCX

    regsvr32 abc.ocx

  2. 通过运行为您的 ocx 生成一个强名称密钥对

    sn -k

  3. 运行 TLBIMP 并指定所需的命名空间

    tlbimp abc.ocx /primary /keyfile:abc.snk /out:abc.dll /namespace:MyNamespace

  4. 在 ocx 上运行 AXIMP 并使用rcw开关来使用您自己手动生成的 PIA DLL。

    aximp abc.ocx /source /rcw:abc.dll

那应该这样做。

然而,古代 TLB 的进口存在一些问题。我还不确定如何解决这个问题。

于 2009-01-15T09:25:15.857 回答