首页 > 解决方案 > 在标准 .net 控制台应用程序中使用 .Net Core dll

问题描述

我使用 .NET Core 2.1 在 VS 2017 中构建了一个类库。现在,我想在 .NET 框架 4.6.2 中构建的标准控制台应用程序中使用该 dll。

当我在控制台应用程序中引用 .NET Core dll 时,我收到此错误:

未处理的异常:System.IO.FileLoadException:无法加载文件或程序集“System.Runtime,版本=4.2.1.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)在 Marketo_Console.Program.Main(String[] args)

如何解决这个问题?如何在标准控制台应用程序中使用 .NET Core dll?

标签: c#.netdll.net-core

解决方案


如何解决这个问题?

你不能。至少不是直接的。

  • .NET Core 可以运行面向 .NET Core 本身或 .NET Standard 的程序集
  • .NET Framework 可以运行面向 .NET Framework 本身或 .NET Standard 的程序集

因此,无法将两个分别针对 Full Framework 和 Core 的程序集放在一起。不在核心中,也不在完整框架中。(您也许可以在各处找到黑客和“但对我来说这是可行的”解决方案,但对于它们的特定用例来说,它们是超级脆弱的例外)。

可以将 .NET Core 程序集的目标框架切换到 .NET Framework 或 .NET Standard,或者您可以提供多个目标框架来构建支持 .NET Core完整框架的 Nuget 包。

但是,如果您需要一个 .NET Core 程序集一个 .NET Framework 应用程序,则不能以这种方式一起使用它们。


推荐阅读