做文案策划有些网站可看,北京企业建设网站,腾讯云cdn加速wordpress,新手怎么用DW建设一个网站原文#xff1a;http://dwz.win/ThX作者#xff1a;Richard翻译#xff1a;精致码农-王亮说明#xff1a;1. 本译文舍弃了少许我实在不知道如何翻译但又不是很重要的语句。2. 本文有不少超链接#xff0c;由于微信公众号和头条平台外链会被剔除 URL 地址#xff0c;所以原… 原文http://dwz.win/ThX作者Richard翻译精致码农-王亮说明1. 本译文舍弃了少许我实在不知道如何翻译但又不是很重要的语句。2. 本文有不少超链接由于微信公众号和头条平台外链会被剔除 URL 地址所以原来本是超链接的内容会显示为纯文本如果你需要这些信息可以移步到我的知乎和博客园阅读搜索“精致码农”可找到我。今天10月13日我们发布了 .NET 5.0 候选版本 2RC2它是 11 月 .NET 5.0 正式版发布前的最后一个 RC 版本。RC2 是一个“上线”版本表示你可以在生产环境中使用它。与此同时我们正在找寻任何遗漏的关键 Bug 报告这些 Bug 应该在最终发布前得到修复。我们今天也发布了 ASP.NET Core 和 EF Core 的 RC2 版本。你可以下载适用于 Windows、macOS 和 Linux 的 .NET 5.0 版本安装程序和二进制包容器镜像快速安装程序发布说明已知问题GitHub Issue 跟踪你需要最新的预览版 Visual Studio (包括 Visual Studio for Mac) 才能使用 .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 年 .NETMicrosoft 内部会议的序幕。届时将有许多来自 .NET 团队的演讲者也有来自服务团队的开发人员和架构师他们依靠 .NET 来驱动微软云分享他们的胜利也分享他们的挑战。我的演讲不出所料是“.NET 5.0 中有什么新内容”。我的演讲将很简单会涵盖我的 .NET 5.0 博文所讲到的内容这将是一场精彩的演讲。更重要的是这次会议是我们的机会让我们说明为什么微软团队应该在 .NET 5.0 发布后尽快采用它。我所知道的至少有一个大型团队正在生产中运行 RC1。微软官方.NET网站 从 Preview 1 开始就一直在运行.NET 5.0现在正在运行 RC2。本周微软团队向我们展示的案例会与我在所有这些 .NET 5.0 博客文章中向你展示的案例非常相似。.NET 5.0 是一个伟大的版本它将从根本上改善你的应用程序。说到会议请记住 .NET Conf 2020 的日期译注11月10日至12日。今年.NET 5.0 将在 .NET Conf 2020 上发布请来庆祝并了解新版本。我们还将庆祝我们的 10 周年纪念日我们正在努力创造更多的惊喜值得你的期待。就像我为 .NET 5.0 Preview 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 中三个新模式是关系模式使用关系运算符如 和 。逻辑模式使用关键字 and、or、not。一个简短的例子是 foo is not null。当你想在一个模式中比较多个事物时这种类型的模式是最有用的。简单类型模式只使用一个类型而不使用其他语法进行匹配。我是 BBC 夏洛克系列的忠实粉丝。我写了一个小程序可以决定一个给定的角色是否应该访问该系列中的某个内容。很简单这个应用的编写有两个限制条件忠于剧中的时间线和人物这是一个很好的模式演示。如果有的话我怀疑我在第二个约束条件上最失败。在一个特定的应用程序中尤其是这样一个小应用程序你会发现一套比人们预期的更广泛的模式和风格。当我在使用模式时我有时想做一些与我所熟悉的模式实现稍微不同的事情但不知道如何扩展该模式来满足我的目标。鉴于这个示例我希望你能发现更多的方法也许你以前不知道这些可以扩展你熟悉的模式的技巧。应用内有两个 switch 表达式让我们从两个中较小的一个开始。public static bool IsAccessOKAskMycroft(Person person) person switch
{// Type patternOpenCaseFile f when f.Name Jim Moriarty true,// Simple type patternMycroft true,_ false,
};前两种模式是类型模式。第一个模式是 C# 8 就支持的。第二种--Mycroft--是新的简单类型模式的一个例子。在 C# 8 中这个模式需要一个标识符就像第一个模式一样或者至少需要一个弃元比如 Mycroft _。在 C# 9 中不再需要标识符。是的 Mycroft 是应用程序中的一个类型。在我向你展示另一个 switch 表达式之前让我们再简单一点。下面的 if 语句演示了一个逻辑模式是两个使用 is 的类型模式实例。if (user is Mycroft m m.CaresAbout is not object)
{Console.WriteLine(Mycroft dissapoints us again.);
}这里不知道 user 变量的类型所以测试它是不是 Mycroft 类型如果是则分配给 m。同时判断 Mycroft 对象上的一个属性是否是一个 object 类型。另一种 switch 表达式则要宽泛得多。public static bool IsAccessOkOfficial(Person user, Content content, int season) (user, content, season) switch
{// Tuple property patterns({Type: Child}, {Type: ChildsPlay}, _) true,({Type: Child}, _, _) false,(_ , {Type: Public}, _) true,({Type: Monarch}, {Type: ForHerEyesOnly}, _) true,// Tuple type patterns(OpenCaseFile f, {Type: ChildsPlay}, 4) when f.Name Sherlock Holmes true,// Property and type patterns{Item1: OpenCaseFile {Type: var type}, Item2: {Name: var name}}when type PoorlyDefined name.Contains(Sherrinford) season 3 true,// Tuple and type patterns(OpenCaseFile, var c, 4) when c.Name.Contains(Sherrinford) true,// Tuple, Type, Property and logical patterns(OpenCaseFile {RiskLevel: 50 and 100 }, {Type: StateSecret}, 3) true,_ false,
};唯一真正有趣的模式是最后一个模式在弃元-之前它测试 Risklevel 是否 50 且 100。有很多次我都想用这种形式的逻辑模式语法写一个 if 语句而不需要重复一个变量名。这个逻辑模式也可以用下面的方式来代替并且会更接近这篇 C# 9 博文中演示的语法它们是等价的。(OpenCaseFile {RiskLevel: var riskLevel}, {Type: StateSecret}, 3) when riskLevel switch
{50 and 100 true,_ false
}我远不是一个语言专家Jared Parsons 和 Andy Gocke 在本文这一部分给了我很多帮助谢谢我的关键绊脚石是一个元组的 switch。有时位置模式很不方便你只想使用元组的一部分。这就是属性模式的作用你可以在下面的代码中看到。{Item1: OpenCaseFile {Type: var type}, Item2: {Name: var name}}when type PoorlyDefined name.Contains(Sherrinford) season 3 true,这里面有相当多的问题。关键的一点是这里测试的是元组属性而不是按位置匹配元组。这种方法提供了更多的灵活性。你可以在一个给定的 switch 表达式中自由地混合这些方法。希望这能帮助一些人至少对我有帮助。如果你对这个应用的功能很好奇我已经把程序的输出保存在 app gist 中。你也可以自己运行这个程序。它需要 .NET 5.0 RC2 才能运行。ClickOnce多年来ClickOnce 一直是一个流行的 .NET 部署选项。现在它已支持为 .NET Core 3.1 和 .NET 5.0 Windows 应用程序。当我们在 .NET Core 3.0 中添加了 Windows Forms 和 WPF 支持时我们就知道很多人会希望使用 ClickOnce 来部署应用程序。在过去的一年里.NET 和 Visual Studio 团队共同合作在命令行和 Visual Studio 中启用了 ClickOnce 发布。我们从项目一开始就有两个目标在 Visual Studio 中实现熟悉的 ClickOnce 体验。使用 MSBuild 或 Mage 工具通过命令行流程为 ClickOnce 发布启用现代 CI/CD。用图片向你展示体验是最简单的。我们先从 Visual Studio 的体验开始它是以项目发布为中心的。我们目前支持的主要部署模式是框架依赖型应用。很容易采取依赖 .NET 桌面运行时就是包含 WPF 和 Windows Forms 的那个。如果需要的话你的 ClickOnce 安装程序将在用户机器上安装 .NET 运行时。我们还打算支持独立的和单文件的应用程序。你可能会想知道你是否还能利用 ClickOnce 的离线和更新功能。是的你可以。包括相同的安装位置和清单签署功能。如果你有严格的签名要求你会喜欢上这个新的体验。现在让我们切换到 Mage 的命令行体验。Mage 最大的变化是它现在是一个 .NET 工具发布在 NuGet 上。这意味着你不需要在你的机器上安装任何特殊的东西。你只需要 .NET 5.0 SDK然后你就可以把 Mage 作为一个 .NET 工具来安装。你也可以用它来发布 .NET 框架的应用程序不过SHA1 签名和部分信任支持已经被移除。Mage 的安装命令如下dotnet tool install -g Microsoft.DotNet.Mage用以下命令配置并发布示例应用程序下面一条命令将启动ClickOnce应用程序然后出现熟悉的 ClickOnce 安装对话框安装应用后会启动应用重新构建并重新发布应用程序后用户将看到一个更新对话框更新后的应用程序将被启动。注意Mage .NET 工具的名称将从 mage.net 改为 dotnet-mageNuGet 包名将保持不变。这个围绕 ClickOnce 发布和安装的快速指南应该会让你对如何使用 ClickOnce 有一个好的认识。我们的意图是与使用现有 .NET 框架的 ClickOnce 支持有一样的体验。如果你发现我们没有达到这个目标请告诉我们。ClickOnce 浏览器集成与 .NET Framework 相同在 Edge 和 Internet Explorer 中得到支持。如果支持其他浏览器对你的用户有多重要也请告诉我们。Windows Arm64MSI 安装程序现在可以用于 Windows Arm64你可以从下面的 .NET 5.0 SDK 安装程序图片中看到。为了进一步证明这一点我在 Arm64 机器上运行 dotnet-runtimeinfo 工具来演示配置。C:\Users\richdotnet tool install -g dotnet-runtimeinfo
You can invoke the tool using the following command: dotnet-runtimeinfo
Tool dotnet-runtimeinfo (version 1.0.2) was successfully installed.C:\Users\richdotnet-runtimeinfo
**.NET information
Version: 5.0.0
FrameworkDescription: .NET 5.0.0-rc.2.20475.5
Libraries version: 5.0.0-rc.2.20475.5
Libraries hash: c5a3f49c88d3d907a56ec8d18f783426de5144e9**Environment information
OSDescription: Microsoft Windows 10.0.18362
OSVersion: Microsoft Windows NT 10.0.18362.0
OSArchitecture: Arm64
ProcessorCount: 8.NET 5.0 SDK 目前不包含 Windows Arm64 上的 Windows 桌面组件--Windows Forms 和 WPF。这一迟来的变化最初是在 .NET 5.0 Preview 8 的帖子中分享的。我们希望在 5.0 服务更新中为 Windows Arm64 添加 Windows 桌面包我们目前还没有确定具体的日期。目前Windows Arm64 上支持 SDK、控制台和 ASP .NET Core 应用程序。结束我们现在非常接近完成 5.0 这个版本并已将其传递出去以供广泛的生产使用。我们相信它已经准备好了。它在微软的生产环境中使用已经给我们带来了很大的信心。我们期待你有机会在自己的环境中真正使用 .NET 5.0。我们已经很久没有分享我们的社交媒体了敬请关注我们的 dotnet 维护信息TwitterFacebook-精致码农带你洞悉编程与架构↑长按图片识别二维码关注不要错过网海相遇的缘分