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上运行。
答案 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不支持的任何类,就可以保证安全。
答案 3 :(得分:0)
由于.Net不具备.net classic的所有功能。您可以使用任何DLL,从经典版本到较新版本,婴儿,我还使用C#中的VB库,反之亦然。
但是,只要库不调用任何不受支持的API或已终止支持或已关闭的API就是一个问题。