0

我有几个 ATL COM 服务,并希望它们中的每一个都有自己的命名空间,但位于一个基本命名空间下,就像 .NET 中的系统命名空间一样。

例如,如果 C# 项目要包含这些 COM 对象,则所有对象都将位于相同的基本命名空间下:

using MyCompanyName.Terminator;
using MyCompanyName.Superman;
using MyCompanyName.Thor;

...相反,我目前拥有的是:

using Terminator;
using Superman;
using Thor;

...这是我不想要的。我希望能够在该基础下拥有一个基本命名空间和子命名空间。我不知道在创建 ATL 服务时如何执行此操作以及我需要修改什么来执行此操作。是我在 IDL 文件中修改的内容吗?

4

1 回答 1

0

如果您的目标是托管客户端,则可以为它们提供命名空间!但是,由于 COM 与语言无关,因此您无法使用接口描述(类型库)提供命名空间。但是,无论何时创建托管包装程序集(实际上由客户端引用),它们都可以具有命名空间来寻址 RCW 对象。您要查找的关键字是Primary Interop Assemblies。这些是您作为原始库的供应商提供给客户参考的程序集。为了简化这一点:您正在做这项工作,当您添加对 COM 库的引用时,Visual Studio 会为您完成这项工作。您正在创建互操作程序集,客户没有引用类型库,而是您生成的程序集。使用tlbimp.exe工具可以使用/namespace参数将 RCW 类型封装在命名空间内。

于 2013-01-11T12:45:36.340 回答