今天,发布了.NET 5.0 Preview5。主要对它进行了一小部分新功能和性能的改进。.NET 5.0 Preview 4包含了一些计划和.NET 5.0要交付的内容。
现在,大多数的功能都已经包含在里面,但是有许多功能还未到最终状态。预计这个版本在Preview 7中完善。
可以下载适用于Windows,macOS和Linux的.NET 5.0 Preview 5:
Windows and macOS installers
Binaries
Docker images
Snap installer
ASP.NET Core和EF Core也在今天发布了
我们需要使用Visual Studio 2019 16.7才能使用.NET 5.0。安装最新版本的C#扩展,以将.NET 5.0与Visual Studio Code结合使用。Mac的Visual Studio尚不支持.NET 5.0。
发布说明:
.NET 5.0 release notes
.NET 5.0 known issues
GitHub release
GitHub tracking issue
RyuJIT改进
对RyuJIT JIT编译器进行了以下改进
新的、更快的、可移植的tailcall helper实现。
ARM64硬件内部物理的实现进程
实现ASIMD Extract Insert ExtractVector64 ExtractVector128
实现 ASIMD widening, narrowing, saturating intrinsics
添加VectorTableList和TableVectorExtension内部函数
添加对ARM64内部函数的CreateScalarUnsafe()支持
ARM64对Vector64.Create()和Vector128.Create()的内在支持
使用arm64 intrinsic优化BitOperations.PopCount ()
在影响正则表达式编译的情况下改进了JIT的速度
使用新的硬件特性BSF/BSR改进英特尔架构性能
实现Vector{Size}.AllBitsSet
Native exports
曾要求为导出本机二进制文件启用导出功能,这些功能已在很长一段时间内调用.NET代码。这是一个很好的方案,现在通过.NET 5.0启用它。该功能的构建块是托管对UnmanagedCallersOnlyAttribute的API支持。
这个功能是创建更高级别体验的基础。团队的Aaron Robinson一直在从事.NET Native Exports项目,该项目为将.NET组件作为本机库发布提供了更完整的体验。目前正在寻求有关此功能的反馈,以帮助我们确定该方法是否应包含在产品中。
.NET本地导出项目使我们能够:
公开自定义的 native exports。
不需要像COM这样的高级互操作技术。
跨平台工作
现有的项目可以实现类似的方案,例如:
Unmanaged Exports
DllExport
[重大变化]删除.NET 5.0中内置的WinRT支持
注意:这个变化将出现在预览6中。这是一个早期的通知。
Windows Runtime(WinRT)是Windows中公开使用的新API的技术和ABI。您可以通过.NET代码调用这些API,类似于使用C ++的方法。在.NET Core 3.0中添加了对WinRT interop的支持,这是对Windows桌面客户端框架(Windows Forms和WPF)添加支持的一部分。
最近,一直在与Windows团队紧密合作,以更改和改进WinRT interop与.NET的协作方式。我们已用Windows团队在.NET 5.0中提供的C#/WinRT工具链替换了内置的WinRT支持。WinRT互操作中的此更改是一项重大更改,使用WinRT的.NET Core 3.x应用将需要重新编译。我们将在即将来临的预览中提供更多信息。
在.NET 5中的支持WinRT API中明确指出了这些好处:
WinRT互操作可以独立于.NET runtime进行开发和改进。
使WinRT互操作与为其他操作系统(如iOS和Android)提供的互操作系统对称。
可以利用许多其他。net特性(AOT, c#特性, IL linking)。
简化.NET运行时代码库(删除6万行代码)。
将System.DirectoryServices.Protocols扩展到Linux和macOS
添加对System.DirectoryServices.Protocols的跨平台支持。在Preview 5中,添加了对Linux的支持,并在Preview 6中添加了对macOS的支持。对Windows支持已经存在。
System.DirectoryServices.Protocols是比System.DirectoryServices更低级别的API,并且启用更多方案。System.DirectoryServices包含仅适用Windows的概念/实现,因此制作跨平台并不是一个很容易的事情。
这两个API都支持对目录服务服务器(如LDAP或Active Directory)进行控制和交互。
Alpine 3.12
本周,增加了对Alpine 3.12,.NET Core 3.1和.NET 5的支持。Alpine Linux的维护者于5月29日宣布发布Alpine 3.12。与过去相比,以更快,更可预测的方式增加对新Linux发行版的支持。
会发现他们已经开始使用一种新的发布模型来发布新发行版的问题。这就是我们对Alpine 3.12所做的。将来,我们计划更早地发布这些问题。例如,需要跟踪的下一个发行版可能是Ubuntu 20.10。尚未决定,但可能会在7月或8月发布该发行版的类似问题,以准备10月发行的新Ubuntu版本。
最后
感谢大家对.NET 5.0预览版的反馈以及您的早期反馈。正如文章的简介中所建议的那样,现在才发布大约一半。现在包括了大多数功能,但是我们希望在接下来的几个预览中会进行许多更改,以完成体验并消除仍然存在的粗糙边缘。
来源:https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-5/