前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET Core 2.2 正式发布

.NET Core 2.2 正式发布

作者头像
Edi Wang
发布2019-07-10 17:27:33
9640
发布2019-07-10 17:27:33
举报
文章被收录于专栏:汪宇杰博客

我们很高兴地宣布.NET Core 2.2版本。它包括对运行时诊断的改进、对 Windows 的 ARM32 和 SQL 客户端的 Azure Active Directory 的支持。此版本中最大的改进是 ASP.NET Core。

ASP.NET Core 2.2 以及 Entity Framework Core 2.2 也在今天发布。您可以在 Windows、MacOS 和 Linux 上下载并开始使用.NET Core 2.2。

.NET Core 2.2 SDK (includes the runtime)

https://dotnet.microsoft.com/download/dotnet-core/2.2

.NET Core 2.2 Runtime

https://dotnet.microsoft.com/download/dotnet-core/2.2

.NET Core 2.2 支持 Visual Studio 15.9Visual Studio for Mac 以及 Visual Studio Code

.NET Core 以及 ASP.NET Core 的Docker 镜像在 microsoft/dotnet

您可以在.NET Core 2.2 发行说明(https://github.com/dotnet/core/blob/master/release-notes/2.2/README.md)中看到相关说明、已知问题和变通办法。请在评论中报告你发现的任何问题,或在这里提交问题:https://github.com/dotnet/core/issues/2098

感谢为.NET Core 2.2 做出贡献的每一个人。您帮助.NET Core 成为更好的产品!

分层编译

分层编译是一项功能, 它使运行时能够更自适应地使用实时 (JIT) 编译器, 以便在启动时获得更好的性能并最大限度地提高吞吐量。它被添加为.NET Core 2.1中的可选的功能,然后在.NET Core 2.2 preview 2中默认启用。我们还没有完全准备好在默认情况下在最终的.NET Core 2.2 版本中启用它,因此我们将其切换回可选,就像.NET Core 2.1 一样。默认情况下, 它在.NET Core 3.0 中启用,我们希望它保留在该配置中。

运行时事件

通常需要监视运行时服务 (如当前进程的GC、JIT和线程池),以了解这些服务在运行应用程序时的行为。在 Windows 系统上,这通常使用 ETW 和监视当前进程的 ETW 事件来完成。虽然这可以继续很好地工作,但使用 ETW 并不总是方便的,也不总是可用的。比如您是在低全新环境中运行, 或者是在 Linux 或 MacOS上运行,都可能无法使用 ETW。

从.NET Core 2.2开始,现在可以用EventListener来使用CoreCLR 事件。这些事件描述了 GC、JIT、线程池和interop的行为。它们作为 Windows 上 CoreCLR ETW提供程序的一部分公开的事件。这允许应用程序使用这些事件或使用传输机制将它们发送到遥测聚合服务。

您可以在下面的代码示例中看到如何订阅事件:

代码语言:javascript
复制
internal sealed class SimpleEventListener : EventListener
{
   // Called whenever an EventSource is created.
   protected override void OnEventSourceCreated(EventSource eventSource)
   {
       // Watch for the .NET runtime EventSource and enable all of its events.
       if (eventSource.Name.Equals("Microsoft-Windows-DotNETRuntime"))
       {
               EnableEvents(eventSource, EventLevel.Verbose, (EventKeywords)(-1));
       }
   }
   // Called whenever an event is written.
   protected override void OnEventWritten(EventWrittenEventArgs eventData)
   {
       // Write the contents of the event to the console.
       Console.WriteLine($"ThreadID = {eventData.OSThreadId} ID = {eventData.EventId} Name = {eventData.EventName}");
       for (int i = 0; i < eventData.Payload.Count; i++)
       {
           string payloadString = eventData.Payload[i] != null ? eventData.Payload[i].ToString() : string.Empty;
           Console.WriteLine($"\tName = \"{eventData.PayloadNames[i]}\" Value = \"{payloadString}\"");
       }
       Console.WriteLine("\n");
   }
}

在SqlConnection中支持AccessToken

SQL Server 的 ADO.NET 提供程序 SqlClient 现在支持设置 AccessToken 属性以使用 Azure Active Directory 对 SQL Server连接进行身份验证。为了使用该功能, 您可以使用 Microsoft.IdentityModel.Clients.ActiveDirectory NuGet 的 Active Directory身份验证库获取访问令牌。

下面的示例演示如何使用 Azure AD对SQL Server连接进行身份验证:

代码语言:javascript
复制
// get access token using ADAL.NET
var authContext = new AuthenticationContext(authority);
var authResult = await authContext.AcquireTokenAsync(appUri, clientCredential);
// setup connection to SQL Server
var sqlConnection = new SqlConnection(connectionString);
sqlConnection.AccessToken = authResult.AccessToken;
await sqlConnection.OpenAsync();

有关详细信息,请参阅ADAL.NET(https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/wiki)和Azure Active Directory文档(https://docs.microsoft.com/azure/active-directory/develop).

在 Main之前注入代码

.NET Core 现在可以在通过Startup Hook在运行应用程序Main方法之前注入代码。Startup Hook使主机能够在部署应用程序后自定义应用程序的行为,而无需重新编译或更改应用程序。

我们希望托管供应商定义自定义配置和策略,包括可能影响Main入口点的加载行为的设置,如AssemblyLoadContext行为。钩子可用于设置跟踪或遥测注入、设置用于处理的回调或其他与环境相关的行为。钩子与程序入口点是分开的,因此不需要修改用户代码。

有关详细信息, 请参阅Host startup hook。(https://github.com/dotnet/core-setup/blob/master/Documentation/design-docs/host-startup-hook.md)

Windows ARM32

我们正在添加对 Windows ARM32 的支持,类似于我们在. net core 2.1 中添加的 Linux ARM32 支持。Windows 已经在Windows IoT Core里支持 ARM32有一段时间了。作为 Windows Server 2019 版本的一部分,还为 Nanoserver 添加了 ARM32支持。.NET Core既可用于Nanoserver,也可用于IoT Core。

ARM32的Nanoserver Docker镜像会在microsoft/dotnet中由Docker Hub提供

我们遇到了一个迟来的bug

它阻止了我们今天发布 Windows ARM32 的.NET Core 版本。我们预计这些版本将于2019年1月发布于.NET Core 2.2.1。

平台支持

.NET Core 2.2支持下列操作系统:

Windows Client: 7, 8.1, 10 (1607+)

Windows Server: 2008 R2 SP1+

macOS: 10.12+

RHEL: 6+

Fedora: 26+

Ubuntu: 16.04+

Debian: 9+

SLES: 12+

openSUSE: 42.3+

Alpine: 3.7+

芯片支持如下:

x64 on Windows, macOS, and Linux

x86 on Windows

ARM32 on Linux (Ubuntu 16.04+, Debian 9+)

ARM32 on Windows (1809+; 1月份可用)

结尾

.NET Core 2.2 包括产品的主要改进。请试试并告诉我们你的想法。此外,请务必查看 ASP.NET Core 2.2 和Entity Framework 2.2 中的改进。

原文:Rich Lander (微软美国)

翻译:汪宇杰

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 汪宇杰博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档