我有一些用.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.'
我试图:
有可能吗?如果可以,我应该怎么做。 在下面的link中似乎有可能-我只是不明白如何。
答案 0 :(得分:0)
您不能这样做。
.NET Core可以引用.NET标准DLL
.NET Framework可以引用.NET标准DLL
.NET Core无法引用.NET Framework DLL(反之亦然)。
例如,如果您有一个.NET Standard Project,则不能引用.NET Framework 和。.net Core框架。
是一个或另一个。
为进一步说明这一点,我们有一个共享BusinessLogic的项目,该项目是.NET Standard 2.0库。
我们在其他两个项目a.NET Core 2.1和.NET Standard 4.7中引用了该项目。
直接将.NET Core或.NET Framework项目引用到该共享.NET Standard库时,事情出了错。
答案 1 :(得分:0)
有可能吗?
不,不是。
因此无法将两个分别针对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的版本,则从理论上讲应该可以使用,除非有一些极端情况。