查看: 99|回复: 0

.NET 6 之旅 (1)

[复制链接]

2

主题

4

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2023-4-9 21:41:41 | 显示全部楼层 |阅读模式
欢迎来到.NET 6! 微软流行框架的令人兴奋的新版本。 .NET 6是提供“一个.NET”愿景的下一个重要一步。 将统一所有.NET的愿景将用于移动,Web,IoT,游戏和更多目标的单个运行时间。

在第一章中,我们将查看.NET的版本操作以及其支持时间范围和发布时间表。 我们将介绍受支持的操作系统,拥有统一平台的含义以及如何使用命令行接口从.NET 6开始。
.NET 6
.NET 框架自 2000 年问世。多年来,它已经发展成为一个非常成熟、流行的框架,可以面向许多平台。 但是,由于 .NET 框架的构建方式,在这些不同平台之间共享代码并不是一件容易的事。 对于 .NET Core,Microsoft 希望从头开始使用 .NET Standard 作为在不同平台之间共享代码的方式。 他们采用了基类库的 API 表面并开始重新实现所有内容,使用现代技术和 API 来提高框架的性能。 .NET Standard 是作为接口创建的。 它公开了部分 BCL API; .NET Core 是该 .NET Standard 接口的实现。 因为 .NET Standard 是一种抽象,我们可以创建可以从各种类型的平台引用的 .NET Standard 类库,只要它们使用正确版本的 .NET Core。 这很快变得令人困惑,因为 .NET Core 3 使用的是 .NET Standard 2.1,而 .NET Standard 1.6 是 .NET Core 1.0。 统一所有 .NET 的下一步是 .NET 5。.NET 5,实际上是 .NET Core 4,是 .NET Core 成为经典 .NET Framework 的继任者的版本。 经典 .NET Framework 的最终版本是 4.8; 从那一刻起,.NET Core 就是框架的主要分支。 为了避免混淆,后来 .NET Core 被简单地重命名为 .NET,并接管了经典 .NET 框架的版本控制,因此 .NET 5. .NET Standard 也消失了; 从 .NET 5 开始,我们只有 .NET 5 类库,它们与 .NET 5 上的每个平台兼容。.NET 6 是统一平台的最后步骤之一,因为它统一了 Mono 和 .NET,实现了 “一个.NET”的梦想。

到目前为止,我们已经讨论了 .NET、.NET Core 和 .NET Framework。 这可能有点令人困惑,所以我将在本书中讨论不同类型的 .NET:
.NET:这是 .NET 5、.NET 6 和未来版本。 是统一发布。

.NET Core:这是不是 .NET Framework 的先前版本。

.NET Framework:结束于 4.8 版的经典 .NET 框架。
版本支持
首先,.NET 6是长期支持版本(LTS),这意味着它将收到未来3年的更新(直到和包括2024年)。 非LTS版本得到1年的支持,通常在下一个LTS版本发布后长达3个月。

那么,我们如何识别非LTS版本的LTS版本? 简单的。 每个奇数编号的版本(.NET 5,.NET 7等)都是非LTS释放,每个偶数编号的版本(.NET 6,.NET 8等)将是LTS版本(图1-1-1-1-1-1 )。 当前的发行版Cadence Microsoft为.NET设置了每年11月左右的新版本。 该释放的节奏是用.NET 5引入的。



.NET的发布时间表(来源:Microsoft)

为什么这很重要? 如果您正在启动一个新的软件项目,重要的是要知道基础框架不会引起任何安全风险。 没有任何软件不含错误,因此在任何软件的一生中都会出现错误和安全风险; .NET也不例外。 使用.NET版本编写软件,该版本将在未来几年接收补丁和更新,可确保对框架中的漏洞和错误进行修补,而不是潜在地使您的应用程序崩溃或攻击脆弱。

这是否意味着我们可以忘记奇数的发行版,因为它们仅受到大约一年的支持? 不一定,这完全取决于您正在开发的软件周围的上下文。 如果您要构建在下一个.NET LTS版本时仍将处于积极开发中的软件,则可以在积压中很容易将其包含在降落后升级到下一个版本。 如果您要构建将在当前非LTS时间范围内交付的软件,并且该软件没有计划,请确保您的客户知道支持。 因此,像往常一样,它取决于。 幸运的是,升级到下一个版本通常不是很困难。 如果您担任顾问角色,请为您的客户设定正确的期望。
不会仅仅因为它是最新版本而跳上最新版本的.NET,请务必检查支持状态,在适用时通知您的客户并做出明智的决定。
一个统一的平台

从一开始,.NET核心本来应该是跨平台和横idiom。 它的目的是将一堆单独的基于.NET的技术融合在一起。 在.NET核心之前,我们可以执行不同的应用程序样式,但并非所有这些都是.NET的一部分,例如,Mono,基于Linux和Unix的Systems的开源.NET实现,而Xamarin(本机移动) .NET解决方案基于单声道。

.NET Core 3通过将Windows演示基金会(WPF)和Windows表单(Winforms)支持添加到框架中,将.NET的统一转移到了高档。 .NET 5通过添加单声道扩展了这项工作; 关于Mono的工作将.NET带入WebAssembly世界。 Blazor WebAssembly是此统一的第一个结果。 使用Blazor WebAssembly,我们使用Mono在浏览器中运行了本机.NET。 有关大麻的更多信息,请参见本书的第5章。 .NET 6通过将Xamarin作为.NET的一部分而不是单独的框架来提供完全实现的统一视力。


Xamarin不再是看起来像.NET的移动平台。 现在,它是使用.NET类库和.NET SDK工具来提供出色的开发人员体验的框架的一部分。 一个快速的例子是能够使用dotnet新iOS或dotnet新的android,然后使用dotnet build或dotnet运行。 结果,您会看到在物理设备或模拟器上创建,编译和运行的移动项目。 这是通过将Mono带入.NET的工作的结果,该工作重回.NET 5。

我们将在本书的MAUI章节中深入研究Xamarin。
路线图
Microsoft决定公开开发.NET,这是他们自从.NET核心以来所做的事情。 这意味着每个人都可以看到.NET 6和未来版本的积压。 甚至还有一个基于大风的Web应用程序,显示了建议的内容,正在进行的内容以及完成的内容。 该网站可以在https://themesof.net/上找到,并且由于所有内容都发生在公开赛中,因此Blazor Web应用程序的源代码可在https://github.com/terrajobst/themesof.net上找到。

.NET团队使用GitHub和GitHub问题,董事会和里程碑来跟踪他们的工作。 尽管GitHub问题不是很敏捷,尤其是与Azure Devops或Jira等工具相比,他们已经确定了四类问题。 使用标签对问题进行分类。 根据其网站,这四个标签如下:
1 主题:将跨越项目租赁的顶级/总体目标。 主题通常会有一个相关的文档来描述这些目标。
2 史诗:这是相关用户故事的更高级别的分组; 它可以跨越整个版本。 例如,“企业具有获取和部署.NET 6.0的一流经验。”
3 用户故事:从最终用户的角度出发的功能的解释。 其目的是阐明软件功能将如何为客户提供价值。 一旦实施,它将为整体史诗造成价值。 例如,“作为IT Pro,我可以轻松访问空气盖上环境中的.NET Core Installer发布信息和脚本,因此我可以使用它来确定需要部署哪些更新。”
4 问题:这些都是其他工作项目。 这些可能是错误,功能或开发人员任务。 我们将其保留给工程团队/区域老板如何以及是否要使用它们。
支持的操作系统
由于.NET是一个跨平台框架,因此有许多操作系统支持。 从Windows到Linux,MacOS,Android,iOS和TVOS的支持范围。 表1-2列出了支持.NET 6的Windows的不同版本。










命令行接口
自.NET CORE以来,.NET带有强大的命令线接口(CLI)工具系统。 使用.NET命令行,我们可以做一些事情,例如创建一个新项目,安装工具和模板,运行测试,编译等等。 尽管大多数CLI命令很少手动使用,但我们可以使用它们来脚本构建和部署自动化。 诸如Azure DevOps或GitHub操作之类的工具对这些命令具有全面支持。

基本命令包括:
New
Restore
Build
Publish
Run
Test
Vstest
Pack
Migrate
Clean
Sln
Help
Store
在使用CLI之前,我们必须在计算机上安装.NET 6。 如果您安装了Visual Studio 2022,则可能已经启动并运行它。
我们可以通过打开一个PowerShell提示并执行dotnet  -  Version来查看我们当前正在运行的.NET。


如果您获得了另一个版本,也许是从.NET 5中获得的,则可以从https://dotnet.microsoft.com/download/dotnet/6.0下载.NET 6安装程序。 确保下载并安装SDK以获取命令行工具。
安装.NET 6后,我们可以通过执行Dotnet New来查看我们拥有的项目模板。 如果我们不指定特定模板,则该工具将列出所有可用的选项,如图1-4所示。 当然,此列表的内容取决于您在系统上安装的不同工作负载和模板。


让我们尝试在没有IDE的任何帮助的情况下创建,构建和运行.NET 6 Winforms应用程序。
首先,我们通过选择正确的dotnet新模板来创建项目。


该命令在当前目录中创建了一个名为dotnetsixwinforms的winforms项目。 只是为了验证它确实是一个.NET 6项目,让我们看看.csproj文件。
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>
</Project>TargetFramework设置为Net6.0 Windows,因此我们使用Windows兼容性包在.NET 6上运行。 兼容性包在第2章中进行了更详细的详细说明。现在,这意味着我们正在运行.NET 6,但是引用了一些额外的二进制文件,因此我们可以将其连接到本机Windows API中,例如,渲染我们的应用程序或访问文件系统 。 下一步,让我们通过dotnet build构建项目。


我首先确保我的命令行设置在.csproj或.sln文件的目录中。 如果是这种情况,那么简单的dotnet构建就足够了。 该工具在当前目录中寻找.csproj或.sln并开始构建它。 现在正在发生的事情是当我们在Visual Studio中构建项目时发生的完全相同的事情。 我们称为.NET构建系统MSBUILD并传递参数并引用项目,并将开始构建。 完成构建后,您将在项目文件夹中找到熟悉的垃圾箱和OBJ文件夹,从Visual Studio构建后也可以找到这些文件夹。 Visual Studio中没有额外的魔力。 它触发了我们刚刚手动执行的同一命令。
作为最后一步,我们执行dotnet运行,该运行将在必要时有效地构建该项目并启动该项目,显示一个空白的Winforms页面,如图1-7所示。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表