我可以从.NET 5项目中添加对.NET Framework DLL的引用吗?

时间:2019-05-07 17:48:12

标签: .net .net-5

Microsoft最近在Build 2019上宣布.NET的下一个主要版本将把.NET Core 3. *和.NET Framework 4. *统一为一个.NET平台,主要版本号为5。 / p>

我不太了解它,这是否意味着使用.NET 5可以添加对用两种.NET版本编写的库的引用?

例如,一个.NET 5项目引用了两个程序集,一个是针对.NET Core 3编译的,另一个针对.NET Framework 4.5的编译(在这种情况下,因为它引用了.NET Framework库,所以我认为它将只能在Windows上运行。

4 个答案:

答案 0 :(得分:1)

.NET 5具有与.NET Core当前相同的兼容性层。

这使您可以引用.NET Framework DLL,但要注意DLL可能不会在运行时加载或执行。如果它是一个逻辑库,则可能运行良好。如果减轻例如System.Web。这对于您没有源代码的第三方库特别有用。您可以使用The .NET Portability Analyzer检查此类库中是否使用了不受支持的API。

话虽如此,您应该尝试将现有的.NET Framework库更改为.NET Standard,或将多目标更改为bot .NET Framework和.NET Standard。

答案 1 :(得分:1)

这是一个很好的问题,我花了很多时间试图为自己回答。真正帮助我的一件事是意识到 .NET 5.0 实际上只是 .NET Core 的下一个版本。

这段 24:30 标记的视频确实很好地说明了这一点: https://youtu.be/4WJHCvwE2VM?t=1470

考虑到这一点,我们可以看到事情将继续像在 .NET Core 2.0 及更早版本中那样工作,如果您想使用经典的 .NET Framework 代码,那么您必须首先将该代码移动到 . NET 标准类库。

答案 2 :(得分:0)

与今天相同:您将可以引用.NET Standard库。 .NET 5并不包含经典框架的所有内容,因此无法直接引用.NET 4.x程序集。因此,开始在.NET Standard中编写库。

但是,在.NET Core 2.0中,Microsoft实现了兼容性垫片,该垫片允许将旧程序集中缺失的tpyes类型转发到新类型。只要您的库不使用.NET 5不支持的任何类,就可以保证安全。

有关更多信息,请参见此postthis

答案 3 :(得分:0)

由于.Net不具备.net classic的所有功能。您可以使用任何DLL,从经典版本到较新版本,婴儿,我还使用C#中的VB库,反之亦然。

但是,只要库不调用任何不受支持的API或已终止支持或已关闭的API就是一个问题。