成人一对一视频交友

NET 5.0 RC2发布,正式版本将在。NET Conf大会在11月。

elbert
elbert

今天(10月13日),我们发布了。NET 5.0版本候选2 (RC2),这是正式发布之前的最后一个RC版本。NET 5.0在11月。RC2是一个“在线”版本,这意味着您可以在生产环境中使用它。与此同时,我们正在寻找任何丢失的关键错误报告,这些报告应该在最终发布之前得到修复。

我们今天还发布了ASP.NET核心和英孚核心的RC2版本。

可以下载。适用于Windows、macOS和Linux的. net 5.0版:

设置和二进制包

容器图像

快速安装程序

发行说明

已知问题

GitHub问题跟踪

你需要最新的Visual Studio预览版(包括针对Mac的Visual Studio)才能使用。 NET 5.0。

那个。NET 5.0包含了很多改进,尤其是单文件应用,更小的容器映像,更强大的JsonSerializer API,一整套可空引用类型注释,新的Target Framework名称,以及对Windows ARM64的支持。在。NET库,GC和JIT,性能有了很大的提高。我们在ARM64的性能上花了很多功夫,它的吞吐量更好,二进制文件更小。NET 5.0包含新的语言版本:C# 9.0和F# 5.0。您可以查看一些示例。NET 5.0以便您可以自己尝试这些功能。

今天是伟大的一天,因为我们将启动2020年[emailprotected]内部会议。将有许多来自世界各地的演讲者。NET团队,以及来自服务团队的开发人员和架构师,他们依赖。NET来带动微软云,分享他们的胜利和挑战。我的演讲(不出所料)是“有什么新鲜事。 NET 5.0”。我的发言会很简单,会涵盖我在。NET 5.0博文!这将是一场精彩的演讲。更重要的是,这次会议是我们解释为什么微软团队应该采用的机会。NET 5.0一发布。据我所知,至少有一个大型团队负责RC1的生产。微软官方。 NET网站一直在运行。NET 5.0从预览版1开始,现在正在运行RC2。微软团队本周向我们展示的案例将与我在所有这些案例中向您展示的案例非常相似。NET 5.0博文。NET 5.0是一个很棒的版本,会从根本上改善你的应用。

说到会议,请记住日期。NET Conf 2020。今年, NET 5.0将于。NET Conf 2020!请前来庆祝并了解新版。我们还将庆祝我们的10周年纪念日,我们正在努力创造更多的惊喜,这值得你期待。

正如我为。 NET 5.0预览版8和。NET 5.0 RC1,我选择了一些函数来深入介绍它们,让你知道如何在实际情况下使用它们。本文重点介绍C# 9模式匹配、Windows ARM64和ClickOnce。

C# 9 模式匹配

模式匹配是C# 7.0中增加的一个语言特性。让Mads再介绍一下这个概念,这是他第一次介绍这个特性的时候说的话:

C# 7.0引入了模式的概念。抽象地说,模式是一个语法元素,可以检验一个值是否有一定的形状。当它具有一定的形状时,就可以从值中提取信息。

这是一个非常好的描述和完美的措辞。

C#团队在C# 7、C# 8和C# 9的每个版本中都添加了新的模式。在本文中,您将看到这些语言版本中的每一种模式,但是我们将关注C# 9中的新模式。

C# 9中的三种新模式是:

关系模式,使用关系运算符,如和=。

逻辑模式,使用关键字和,或,否。一个简单的例子是foo不为null。当您想要比较一个模式中的多种事物时,这种模式最有用。

简单类型模式,只使用一种类型,不使用其他语法进行匹配。

我是英国广播公司夏洛克系列的忠实粉丝。我写了一个小程序来决定给定的角色是否应该访问系列中的某些东西。很简单,这个应用的编写有两个局限:对时间线和剧中人物的忠诚,这是一个很好的示范。如果是,我怀疑我在第二个约束中失败的最多。在一个特定的应用程序中(尤其是这样一个小应用程序),你会发现比人们预期的更广泛的模式和风格。

当我使用模式时,有时我想做一些与熟悉的模式实现略有不同的事情,但我不知道如何扩展模式来满足我的目标。针对这个例子,希望你能找到更多的方法。可能你之前不知道这些可以扩展熟悉模式的技巧。

应用程序中有两个switch表达式,让我们从两个表达式中较小的一个开始。

公共静态bool IsAccessOKAskMycroft(Person Person)=Person开关

{

//类型模式

当f.Name==’吉姆莫里亚蒂’=true时,

//简单类型模式

Mycroft=真,

_=false,

};

前两种模式是类型模式。C# 8支持第一种模式。第二个——迈克罗夫特——是一个新的简单类型模式的例子。在C# 8中,这个模式需要一个标识符,就像第一个模式一样,或者至少需要一个丢弃,比如Mycroft _。在C# 9中,不再需要标识符。是的,Mycroft是应用程序中的一种类型。

在我给你看另一个开关表达式之前,让我们简单一点。下面的if语句演示了一个逻辑模式,它是使用is的两个类型模式实例。

如果(用户是Mycroft m m . CaresAbout不是对象)

{

控制台。WriteLine(‘Mycroft dissapoints再一次告诉我们,’);

{}

这里不知道用户变量的类型,所以测试一下是否是Mycroft类型,如果是,赋给m,同时判断Mycroft对象上的一个属性是否是对象类型。这里的目的不是为了演示逻辑模式的使用,而是实际上,使用is null也有同样的效果。

另一个开关表达式要宽泛得多。

公共静态博客访问权限(个人用户、内容内容、季内)

=(用户、内容、季节)开关

{

//元组属性模式

({Type: Child},{ Type: ChildsPlay },_)=true,

({Type: Child},_,_)=false,

(_,{Type: Public},_)=true,

({ Type: Monarch },{ Type: ForHerEyesOnly },_)=true,

//元组类型模式

(OpenCaseFile f,{ Type: ChildsPlay },4)当f.Name==’歇洛克福尔摩斯’=true时,

//属性和类型模式

{ item 1: open case file { type : var type },Item2: {Name: var name}}

当type==PoorlyDefined name时。包含(‘ Sherrinford ‘)季节=3=真,

//元组和类型模式

(OpenCaseFile,var c,4)当c . name . contains(‘ Sherinford ‘)=true时,

//元组、类型、属性和逻辑模式

(OpenCaseFile {RiskLevel: 50和100 },{ Type: StateSecret },3)=tru

e,

_=false,

};

唯一真正有趣的模式是最后一个模式(丢弃之前-),测试Risklevel是50还是100。很多时候,我想用这种形式的逻辑模式语法写一个if语句,不用重复变量名。这种逻辑模式也可以用下面的方法代替,会更接近这篇C# 9博文中演示的语法,而且是等价的。

(open case file { risk level : var risk level },{ Type: StateSecret },3)当风险级别切换时

{

50和100=真,

_=false

{}

我远不是语言专家。贾里德帕森斯(Jared Parsons)和安迪高克(Andy Gocke)在本文的这一部分给了我很多帮助。谢谢!我的主要绊脚石是元组开关。有时候位置模式不方便,你只想用元组的一部分。这就是属性模式的作用,正如您在下面的代码中看到的。

{ item 1: open case file { type : var type },Item2: {Name: var name}}

当type==PoorlyDefined name时。包含(‘ Sherrinford ‘)季节=3=真,

这里有不少问题。关键是我们这里测试的是元组属性,不是按位置匹配元组。这种方法提供了更多的灵活性。您可以在给定的开关表达式中自由混合这些方法。希望这对某些人有帮助,至少对我有帮助。

如果你对这个应用的功能很好奇,我已经把应用的输出保存在app gist了。你也可以自己运行这个程序。需要。NET 5.0 RC2运行。

ClickOnce

ClickOnce已经成为一种流行的。NET部署选项。它现在被支持为。NET Core 3.1和。 NET 5.0 Windows应用程序。当我们将Windows窗体和WPF支持添加到。NET Core 3.0,我们知道很多人愿意用ClickOnce部署应用。在过去的一年里。NET和Visual Studio团队合作,在命令行和Visual Studio中启用ClickOnce发布。

从项目一开始,我们就有两个目标:

在Visual Studio中实现熟悉的ClickOnce体验。使用MSBuild或Mage工具通过命令行过程为ClickOnce发布启用现代配置项/光盘。用图片给你展示体验是最简单的。

先说Visual Studio的体验,侧重于项目发布。

在这里插入图片描述

目前我们支持的主要部署模式是依赖框架的应用。很容易依赖。 NET桌面运行时(包含WPF和Windows窗体的运行时)。如有必要,您的ClickOnce安装程序将安装。NET运行时。我们还打算支持独立和单文件应用程序。在这里插入图片描述

你可能想知道你是否还能利用ClickOnce的离线和更新功能。可以。

在这里插入图片描述

包括相同的安装位置和列表签名功能。如果你有严格的签名要求,你会喜欢这种新体验。

现在,让我们切换到法师的命令行体验。

Mage最大的变化就是现在是. NET工具,发布在NuGet上。这意味着您不需要在您的机器上安装任何特殊的东西。你只需要。NET 5.0 SDK,然后就可以把Mage作为. NET工具安装了。也可以用它来发布。NET框架应用程序,但是,SHA1签名和部分信任支持已被删除。

法师安装命令如下:

dotnet工具安装-g微软。DotNet.Mage

使用以下命令配置并发布示例应用程序:

在这里插入图片描述

以下命令将启动ClickOnce应用程序:

在这里插入图片描述

然后出现熟悉的ClickOnce安装对话框:

在这里插入图片描述

安装应用程序后,将启动应用程序:在这里插入图片描述

在应用程序重建和重新发布后,用户将看到一个更新对话框:

在这里插入图片描述

将启动更新的应用程序。

注意:法师的名字。NET工具将从mage.net改为dotnet-mage,NuGet包名称不变。

这本关于ClickOnce分发和安装的快速指南应该会让您很好地理解如何使用ClickOnce。我们的意图是使用现有的获得与ClickOnce支持相同的体验。 NET框架。如果你发现我们没有达到这个目标,请告诉我们。

ClickOnce浏览器集成与。 NET框架,并且在边缘和Internet Explorer中受支持。如果您的用户支持其他浏览器很重要,请告诉我们。

Windows Arm64

MSI安装程序现在可以用于Windows Arm64,正如您从下面的。 NET 5.0 SDK安装程序。

在这里插入图片描述

为了进一步证明这一点,我在Arm64机器上运行了dotnet-runtimeinfo工具来演示配置。

C: \用户\richdotnet工具安装-g dotnet-runtimeinfo

您可以使用以下命令调用该工具

工具“dotnet-runtimeinfo”(版本“1.0.2”)已成功安装。

C: \用户\richdotnet-runtimeinfo

**。NET信息

版本: 5.0.0

框架描述: NET 5.0.0-rc.2.20475.5

库版本: 5.0.0-rc.2.20475.5

库有h : C5 a3 f 49 c 88 d3d 907 a 56 EC 8d 18 f 783426 de 5144 e 9

* *环境信息

操作系统描述:微软视窗10.0.18362

操作系统版本:微软视窗NT 10.0.18362.0

OSArchitecture: Arm64

处理器计数: 8

那个。 NET 5.0 SDK目前不包括Windows Arm64上的Windows桌面组件——Windows窗体和WPF。这一最新变化最初是在。NET 5.0预览版8。我们希望在5.0服务更新中将Windows桌面包添加到Windows Arm64中,但具体日期尚未确定。目前Windows Arm64支持SDK,控制台,ASP。NET核心应用程序。

结束

我们现在非常接近完成5.0的这个版本,并且已经分发出去供广泛的生产使用。我们相信它已经准备好了。它在微软生产环境中的使用给我们带来了极大的信心。我们希望您有机会真正使用。NET 5.0在你自己的环境中。

我们很久没有分享我们的社交媒体了,所以请关注我们的网络维护信息:

Twitter Facebook

elbert
品牌