关于c#:在标准.net控制台应用程序中使用.net Core dll

Using .Net Core dll in standard .net Console app

我已经使用.NET Core 2.1在VS 2017中建立了一个类库。
现在,我想在.NET Framework 4.6.2内置的标准控制台应用程序中使用该dll。

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

Unhandled Exception: System.IO.FileLoadException: Could not load file
or assembly 'System.Runtime, Version=4.2.1.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The
located assembly's manifest definition does not match the assembly
reference. (Exception from HRESULT: 0x80131040) at
Marketo_Console.Program.Main(String[] args)

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


How to resolve this?

你不能。 至少不是直接。

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

因此,无法将两个分别针对Full Framework和Core的程序集组合在一起。 不在Core中,也不在完整框架中。 (您也许可以找到hacks并"到处都是,但是对我来说这是可行的"解决方案,但是对于特定的用例,它们是非常脆弱的例外)。

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

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