【问题标题】:Is there a way to generate a COM interop assembly that targets .net standard or .net core?有没有办法生成针对 .net 标准或 .net 核心的 COM 互操作程序集?
【发布时间】:2021-06-02 23:48:55
【问题描述】:

由于 .NET Core 3.0 支持 COM,有没有办法创建面向 .NET Standard 或 .NET Core 3 的互操作 DLL?

我曾经通过Tlbimp.exe 创建这些面向 .NET 框架的互操作库。

【问题讨论】:

  • 他们计划如何推进这件事有点神秘。但是没有优先级,这仅适用于 Windows,并且由 tlbimp.exe 或 IDE 生成的互操作库可以正常工作。你试过了吗?
  • @HansPassant,自动生成的 dll 似乎针对 .NET 框架。当您直接针对此自动生成的 dll 时,它工作正常(似乎它们依赖于兼容性 shim 功能)。如果我将这个 dll 打包到一个 nuget 包中并引用它,那么事情就不起作用了。我认为如果我可以使互操作 dll 成为 .net 标准,那么事情可能会奏效。
  • 所以你问错了问题。

标签: .net-core com-interop .net-standard


【解决方案1】:

在开发人员命令提示符下,我运行如下命令:

TlbImp.exe COMOBJECT.dll

您说得对,生成的互操作文件似乎适用于 .NET 框架。我在生成的 DLL 上使用 ILSpy 看到了这一点。但是,当我将代码作为 .NET Core 3.1 运行时,我看不到任何加载到我的进程中的 .NET Framework 文件。我在 Studio 中从以下位置确认:Debug / Windows / Modules。这显示了我的调试过程中所有加载的 DLL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多