从C#访问COM对象的最佳方法

Ton*_*ony 33 .net c# com pinvoke

我打算使用作为COM对象公开的各种对象.为了使它们更容易使用,我想将它们包装为C#对象.对此最好的方法是什么?

Rob*_*t P 37

如果库已注册,则可以执行以下步骤以使Visual Studio为您生成互操作程序集:

  • 打开Visual Studio项目.
  • 右键单击"参考"(在解决方案资源管理器中的项目下),然后选择"添加参考".
  • 选择COM选项卡.(如果您没有看到这个,那么您的项目类型不支持COM.)
  • 选择要与之互操作的组件.
  • 选择"确定".

这将是一个或一组C#类,它们将所有COM接口包装为普通的C#类.然后你就像任何其他C#库一样使用它.如果引用的导入运行良好,您可以像任何其他引用一样探索它,并且方法/结构/类/常量应该显示在该命名空间和智能感知中.

至少,这会让你开始.如果将其部署在企业环境中或您可以控制的环境中,则可能就是您所需要的.

  • 我不知道。当我写这篇文章时,.net 远没有今天那么成熟。我怀疑有一些工具可以从命令行执行此操作。我建议在这里尝试一些技术:https://learn.microsoft.com/en-us/dotnet/framework/interop/how-to-create-com-wrappers (2认同)

小智 8

MSDN就此发表了一篇很好的文章,它解释了托管和非托管代码,并逐步指导您如何操作. http://msdn.microsoft.com/en-us/library/ms973800.aspx#

玩得开心!


Ste*_*eve 5

您(最初)可以仅导入参考。如果您需要更多控制(或从 VS 导入中获取错误),您可以在 Windows sdk 中使用 tlbimp。这将创建互操作程序集。您可以从元数据中获取类定义。

编辑:如果你想使用 64 位,这实际上要复杂得多