专栏首页汪宇杰博客.NET Core 2.2 正式发布

.NET Core 2.2 正式发布

我们很高兴地宣布.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提供程序的一部分公开的事件。这允许应用程序使用这些事件或使用传输机制将它们发送到遥测聚合服务。

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

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连接进行身份验证:

// 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 (微软美国)

翻译:汪宇杰

本文分享自微信公众号 - 汪宇杰博客(ediwangblog)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ASP.NET Core中GetService()和GetRequiredService()之间的区别

    上篇文章《在.NET Core 3.0中的WPF中使用IOC图文教程》中,我们尝试在WPF中应用.NET Core内置的IOC进行编程,在解析MainWindo...

    依乐祝
  • 微软发布ML.NET 1.0

    原文地址:https://devblogs.microsoft.com/dotnet/announcing-ml-net-1-0/

    张善友
  • .Net Core in Docker - 在容器内编译发布并运行

    Docker可以说是现在微服务,DevOps的基础,咱们.Net Core自然也得上Docker。.Net Core发布到Docker容器的教程网上也有不少,但...

    kklldog
  • win2003 64位系统IIS配置方法

    64位系统IIS配置方法,主要是在 32与64位下运行iis的一些常见问题与方法,推荐服务器配置者参考。1、因用模版安装ASP.NET 2.0需先卸载64位的....

    习惯说一说
  • .NET 机器学习生态调查

    机器学习是一种允许计算机使用现有数据预测未来行为、结果和趋势的数据科学方法。 使用机器学习,计算机可以在未显式编程的情况下进行学习。机器学习的预测可以使得应用和...

    张善友
  • 开源的类似于Apache ab的压力测试命令行工具SuperBenchmarker

    SuperBenchmarker 是ㄧ个开源的类似于Apache ab的压力测试命令行工具。可以在 .NET 4.52+ 或者 .NET Core 2.0+ 平...

    张善友
  • .NET Core 给使用.NET的公司所带来的机遇

    推广无可厚非,但是这种以标题党形式贬低.NET,让几十万的.NETer 蒙羞是一种无耻的操作,何况余晟 是一位小有名气的博主,这篇文章转发在朋友圈,光是这个标题...

    张善友
  • 机器学习 ML.NET 发布 1.0 RC

    ML.NET 是面向.NET开发人员的开源和跨平台机器学习框架(Windows,Linux,macOS),通过使用ML.NET,.NET开发人员可以利用他们现有...

    张善友
  • ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能

    微软发布了其最新版本的机器学习框架:ML.NET 0.11带来了新功能和突破性变化。

    张善友
  • .NET和Docker ,比翼双飞

    DockerCon 2019本周将在旧金山举行 ,DockerCon 是从业者、贡献者、维护者、开发者和容器生态系统学习、网络和创新的一站式活动。 .NET 团...

    张善友

扫码关注云+社区

领取腾讯云代金券