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

时间:2009-03-11 18:46:11

标签: c# .net com pinvoke

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

3 个答案:

答案 0 :(得分:35)

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

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

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

至少可以让你入门。如果将其部署在公司环境中或您可以控制的环境中,则可能只需要这些。

答案 1 :(得分:8)

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

玩得开心!

答案 2 :(得分:4)

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

编辑:如果你想使用64位

,这实际上要复杂得多