【问题标题】:How can I add a COM DLL reference in my .NET Core project based on beta8?如何在基于 beta8 的 .NET Core 项目中添加 COM DLL 引用?
【发布时间】:2017-09-29 14:14:52
【问题描述】:

我们有一个基于 dnx 1.0.0-beta8 版本的 .NET Core Web 项目。我正在尝试引用一个 COM DLL,我必须通过 regsvr32 在计算机上注册它。 .NET Core 项目是否允许您引用 COM DLL?

【问题讨论】:

  • 出于好奇,为什么 .NET Core 的发布版已经发布了,你使用的是 beta 版?
  • 我们正在将应用程序迁移到另一个基于 Java 的框架。因此,没有升级到稳定版本。

标签: .net-core dll com


【解决方案1】:

据我所知,所有当前发布的 .NET Core(1.1 及更低版本)和 .NET Standard(1.6 及更低版本)都无法添加 COM 引用,因为 .NET Core 是设计的是多平台的,COM 是 Windows 特有的功能。

不知道2.0会不会引入这个功能。

【讨论】:

  • 其实是可以的,但并不简单。第一个挂断是类型库导入器,需要通过运行它的框架版本来解决,使用 ildasm.exe 反编译互操作程序集并将 mscorlib 的程序集引用替换为 System.Runtime (.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A),.ver 4:1:0:0),与 ilasm.exe 重新组合在一起。编辑项目文件以添加<Reference>。在进行任何调用之前,Pinvoke CoInitializeEx() 以初始化 COM。似乎工作得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 2016-10-13
  • 2012-08-25
相关资源
最近更新 更多