在 .NET core 2.0 中引用 .NET framework 4 dll

Gre*_*een 10 c# dll .net-core

我有一些用.Net框架编写的 dll,4.0当我将它引用到我用.NET core 2.0.

尽管我的 IDE(与 2017 相比)可以在运行时正确识别从该 dll 导入的对象,但我有以下异常:

System.BadImageFormatException: 'Could not load file or assembly 'A_dotnet_4.0_A, Version=10.0.0.0, Culture=neutral, PublicKeyToken=0ad20d08c672086a'. An attempt was made to load a program with an incorrect format.'
Run Code Online (Sandbox Code Playgroud)

我试过了:

  1. 正如我在此处的帖子中看到的那样,将我的设置更改为任何 CPU
  2. 试图清理重建我的项目。

甚至有可能吗?如果是这样,我该怎么做。在以下链接中似乎有可能 - 我只是不明白如何。

Hyp*_*ate 12

你不可以做这个。

.NET Core 可以引用 .NET Standard DLL
.NET Framework 可以引用 .NET Standard DLL

.NET Core 不能引用 .NET Framework DLL(反之亦然)。

例如,如果您有一个 .NET Standard 项目,则不能引用 .NET Framework.NET Core 框架。
这是一个或另一个。

在此处输入图片说明

为了进一步说明这一点,我们有一个共享 BusinessLogic 的项目,该项目是一个 .NET Standard 2.0 库。
我们在其他 2 个项目中引用了该项目:.NET Core 2.1 和 .NET Framework 4.7。

将 .NET Core 或 .NET Framework 项直接引用到该共享 .NET Standard 库时会出错。

  • “NET Core 无法引用 .NET Framework DLL(反之亦然)。” 似乎不是真的。根据 Green 发布的 Github 链接,您可以从 .NET Core 项目中引用 .NET Framework dll。AFAIK 它需要是实现 .NET 标准的 .NET Framework 版本,因此它需要是 .NET Framework 4.5 及更高版本。 (7认同)
  • 他的链接中的第二条评论:“这是我们希望在即将发布的 VS 更新中实现的功能。计划是让您引用 dll,但取决于 dll,它可能会或可能不会工作,具体取决于它所依赖的内容在。” (2认同)
  • @Hypenate 那是在 **2017 年 5 月**。查看 **Oct 6, 2017** 上的评论:“现在可以从 .NET Core 2.0 项目中实现这一点。我将关闭它。预计它会起作用,因此如果您遇到任何问题,请打开一个新问题与具体细节。” (2认同)

Bas*_*Bas -1

总之:

它不起作用,因为该 DLL 的 .NET Framework 版本太低。.NET Core 2.0 及更高版本支持引用其他 .NET Standard dll(因此 .NET Core 或 .NET Framework,或任何其他未来可能实现 .NET Standard 的库)。

.NET Framework 4.0 不实现 .NET Standard,因此它不会生成 .NET Standard 兼容的 dll:.NET Framework 仅从版本 4.5 及更高版本开始实现 .NET Standard。因此,如果您可以找到为 .NET Framework 4.5 编译的该 DLL 版本,理论上它应该可以工作,除非有一些边缘情况。