【问题标题】:Need help to understand why COM is missing in "Reference Manager"需要帮助了解为什么“参考管理器”中缺少 COM
【发布时间】:2019-02-23 23:52:35
【问题描述】:

我对 COM 没有太多经验。

我有一个引用 2 个 COM 的项目 AxAXISMEDIACONTROLLibAXISMEDIACONTROLLib

当我手动删除 AxAXISMEDIACONTROLLib 时,我无法从“参考管理器”中将其添加回来,因为它没有显示在那里。唯一的 COM 是 AXISMEDIACONTROLLib

如果AxAXISMEDIACONTROLLib 未显示在“参考管理器”中,有人可以帮助理解或指导如何首先添加它吗?

【问题讨论】:

  • AxAXISMEDIACONTROLLib 很可能已注册,而另一个未注册:blogs.msdn.microsoft.com/jigarme/2008/04/28/…
  • 我相信该列表显示了已注册的组件。您可以随时使用浏览按钮手动查找和添加您的 DLL。
  • 奇怪的是,当我删除引用然后恢复更改(我使用的是 SVN)时,删除的 AxAXISMEDIACONTROLLib 引用显示在项目中,但不在 Reference Manager 中。我可以成功构建项目。当我右键单击参考并检查路径时,它是...\obj\Release\AxInterop.AXISMEDIACONTROLLib.dll。当我删除 obj 文件夹时,它会再次重新创建。所以,它确实有参考,但我找不到在哪里。
  • 所以,如果你说它没有注册,那么AxInterop.AXISMEDIACONTROLLib.dll 是如何进入..ojb\Release 文件夹的。请帮我理解。
  • 它是一个 ActiveX 控件(注意 ax 前缀)。不仅仅是一个库,也是一个可以放在表单上的控件。右键单击工具箱 > 选择项目 > COM 组件选项卡。

标签: c# visual-studio visual-studio-2012 com


【解决方案1】:

当您添加 COM 引用时,.NET 将为您创建一个互操作包装器。互操作类型可以嵌入到目标程序集中,也可以放入自己的程序集中 (AxInterop.AXISMEDIACONTROLLib.dll)。

如果您在“解决方案资源管理器”窗口中选择程序集引用 AxAXISMEDIACONTROLLib 并按 F4 查看属性,您很可能会看到 Embed Interop Types 属性设置为 False。这会导致 Copy Local 属性变为可编辑,并在编译时生成 Interop 程序集。

【讨论】:

  • 但我在任何地方都找不到任何 AxInterop.AXISMEDIACONTROLLib.dll。甚至不在可以在这里下载的安装文件夹drive.google.com/open?id=1VqsP4iHO-ID3g44LkXcRJVAewmz4XUkA
  • 所以,我不明白它是如何作为参考添加的
  • @theateist:没有添加。它是由编译过程为您制作的。顺便说一句很酷的昵称... :-)
  • 很抱歉,如果我打开示例项目并转到Project->References,我可以看到有AxAXISMEDIACONTROLLib, AXISMEDIACONTROLLib, System, System.Data,... 引用。 System, System.Data我知道怎么添加,但是他们是怎么添加AxAXISMEDIACONTROLLib引用的?
  • @theateist:我有根据的猜测是该引用是在编译后添加的,然后签入。如果您使用文本编辑器查看项目文件的源代码,您会在那里找到它。试试这个:将项目下载到新的工作文件夹中。打开它,但不要编译代码。看看参考资料。 Interop 上可能会有一个黄色的三角形图标。编译项目后,三角形将消失。我相信你不需要参考。删除它并编译项目。它应该可以正常工作。如果它给你错误,然后手动更正参考。
猜你喜欢
  • 1970-01-01
  • 2013-09-07
  • 2018-10-10
  • 2019-03-26
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 2014-04-29
  • 2020-09-08
相关资源
最近更新 更多