原文地址:https://devblogs.microsoft.com/dotnet/announcing-the-net-framework-4-8/
我们很高兴地宣布今天发布.NET Framework 4.8。它包含在Windows 10 2019 May更新中。.NET Framework 4.8也可以在Windows 7+和Windows Server 2008 R2 +上使用。
您可以从我们的 .NET下载站点安装.NET 4.8 。要构建面向.NET Framework 4.8的应用程序,可以下载.NET 4.8开发人员包。如果您只想要.NET 4.8运行时,可以尝试:
- .NET 4.8 Web安装程序 - 在安装期间需要Internet连接
- .NET 4.8脱机安装程序 - 可以在以后以断开连接状态下载和安装
.NET Framework 4.8包含更新的工具集以及几个方面的改进:
- [运行时] JIT和NGEN改进
- [BCL] 更新了ZLib
- [BCL] 降低FIPS对密码学的影响
- [WinForms] 辅助功能增强功能
- [WCF] 服务行为增强功能
- [WPF] 高DPI增强,UIAutomation改进
您可以在.NET Framework 4.8发行说明中看到完整的改进列表 。 .NET 4.8也更新了参考源。
支持的Windows版本
Windows客户端版本: Windows 10版本1903,Windows 10版本1809,Windows 10版本1803,Windows 10版本1709,Windows 10版本1703,Windows 10版本1607,Windows 8.1,Windows 7 SP1
Windows Server版本: Windows Server 2019,Windows Server版本1803,Windows Server 2016,Windows Server 2012,Windows Server 2012 R2,Windows Server 2008 R2 SP1
.NET Framework 4.8中的新功能
运行时 - JIT改进
.NET 4.8中的JIT基于.NET Core 2.1。现在,.NET Framework中提供了所有错误修复和.NET Core 2.1中许多基于代码生成的性能优化。
运行时 - NGEN的改进
.NET Framework中的NGEN映像不再包含可写和可执行部分。这减少了可用于通过修改将要执行的内存来执行任意代码的攻击的表面区域。
虽然在运行时内存中仍然存在可写和可执行数据,但此更改会删除从NGEN映像映射的数据,从而允许它们在不允许图像中的可执行/可写部分的受限环境中运行。
运行时 - 所有程序集的反恶意软件扫描
在以前版本的.NET Framework中,Windows Defender或第三方反恶意软件会自动扫描从磁盘加载的所有程序集以查找恶意软件。但是,从其他地方加载的程序集(例如使用Assembly.Load(byte []))将不会被扫描,并且可能会检测到未检测到的病毒。
Windows 10上的.NET Framework 4.8会触发Windows Defender和许多其他实现反恶意软件扫描接口的反恶意软件解决方案对这些程序集的扫描。我们希望这会使恶意软件更难以在.NET程序中伪装自己。
BCL - 更新了ZLib
从.NET Framework 4.5开始,我们使用 clrcompression.dll中http://zlib.net的ZLib本机版本(用于数据压缩的本机外部压缩库) ,以便为deflate算法提供实现。在.NET Framework 4.8中,我们将clrcompression.dll更新为使用版本1.2.11,其中包括几个关键的改进和修复。
BCL - 降低FIPS对密码学的影响
.NET Framework 2.0+具有加密提供程序类,例如SHA256Managed,当在“FIPS模式”下配置系统加密库时会抛出CryptographicException。抛出这些异常是因为托管版本未经过FIPS(联邦信息处理标准)140-2认证(JIT和NGEN映像生成都会使证书无效),这与系统加密库不同。很少有开发人员将他们的开发机器置于“FIPS模式”,导致这些异常在生产(或客户系统)中引发。.NET Framework还使用“FIPS模式”设置来阻止加密算法,这些加密算法不被FIPS规则视为已批准的算法。
对于为.NET Framework 4.8构建的应用程序,将不再抛出这些异常(默认情况下)。相反,SHA256Managed类(以及其他托管加密类)会将加密操作重定向到系统加密库。此策略更改有效地消除了开发人员环境与运行代码的生产环境之间可能存在的混淆差异,并使本机组件和托管组件在相同的加密策略下运行。
针对.NET Framework 4.8的应用程序将自动切换到较新的宽松策略,并且在“FIPS模式”下不再会看到从MD5Cng,MD5CryptoServiceProvider,RC2CryptoServiceProvider,RIPEMD160Managed和RijndaelManaged引发的异常。依赖于先前版本的异常的应用程序可以通过将AppContext开关“Switch.System.Security.Cryptography.UseLegacyFipsThrow”设置为“true”来返回到先前的行为。
Windows窗体 - 辅助功能增强功能
在.NET Framework 4.8中,WinForms添加了三个新功能,使开发人员能够编写更易于访问的应用程序。添加的功能旨在使视障用户的应用程序数据通信更加健壮。当用户通过键盘导航时,我们添加了对ToolTips的支持,我们已将LiveRegions和Notification Events添加到许多常用控件中。
要启用这些功能,您的应用程序需要在App.config文件中启用以下AppContextSwitches:
Windows窗体 - UIA LiveRegions支持标签和StatusStrips
UIA Live Regions允许应用程序开发人员通知屏幕阅读器控件的文本更改,该控件位于用户工作的位置之外。这将派上用场的示例可以是显示连接状态的StatusStrip。如果删除连接并且状态发生更改,开发人员可能希望通知屏幕阅读器此更改。Windows Forms已为Label控件和StatusStrip控件实现了UIA LiveRegions。
在Label控件中使用LiveRegion的示例:
讲述者现在将宣布“准备就绪”,无论用户在何处与应用程序进行交互。
您还可以将UserControl实现为Live区域:
Windows窗体 - UIA通知事件
在Windows 10 Fall Creators Update中,Windows引入了一种新方法,让应用程序通知Narrator内容已更改,而Narra