在.NET Core 2.0中引用.NET Framework 4 dll

时间:2018-10-08 13:08:21

标签: c# dll .net-core

我有一些用.Net框架4.0编写的dll,当我将其引用到用.NET core 2.0编写的项目时,我无法运行我的程序。 / p>

尽管我的IDE(vs 2017)可以在运行时Im正确识别从该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.'

我试图:

  1. 将我的设置更改为任何CPU,如我在帖子here上看到的
  2. 试图清理重建我的项目。

有可能吗?如果可以,我应该怎么做。 在下面的link中似乎有可能-我只是不明白如何。

3 个答案:

答案 0 :(得分:0)

您不能这样做。

.NET Core可以引用.NET标准DLL
.NET Framework可以引用.NET标准DLL

.NET Core无法引用.NET Framework DLL(反之亦然)。

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

enter image description here

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

直接将.NET Core或.NET Framework项目引用到该共享.NET Standard库时,事情出了错。

答案 1 :(得分:0)

  

有可能吗?

不,不是。

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

因此无法将两个分别针对Full Framework和Core的程序集组合在一起。不在Core中,也不在完整框架中。

如果您需要一个可以同时访问的共享库,则需要以.NET标准为目标,以便能够被完整框架和Core使用。

答案 2 :(得分:-3)

总结:

它不起作用,因为该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的版本,则从理论上讲应该可以使用,除非有一些极端情况。