乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 伴随.Net6/7与时俱进的.Net CLI命令行接口

前言

.NET命令行接口(CLI)工具是用于开发、生成、运行和发布.NET应用程序的跨平台工具链。

image

虽然之前已经写过温故知新,DotNet Core SDK和.Net CLI十八般武艺 ,但是随着.Net迈入6,甚至预览7,开始8,有些内容已经开始不适用了,有些命令也随着发生变动,加上Ubuntu和微软正式合作,可以一键安装.Net 6,可以与时俱进写一篇新的了。

SDK清单

发布节奏

image

从这个图来看,那些还停留在3.1的童鞋也要考虑升级到.Net6才行了,到了今年11月就停止支持了

发布类型

  • 长期支持(Long Term Support, LTS)

LTS版本在初始发布日期后的三年内受支持。

  • 当前(Current)

Current版本在后续Current或LTS版本发布后的六个月内受支持。每12个月发布一次,因此Current的支持期为18个月。

  • 预览(Preview)

预览版通常不受支持,但它们用于在最终版本发布之前进行公共测试。仅当预览版或候选发布版被专门指定为"Go-Live"时,它们才可通过Microsoft开发人员支持团队获得支持。

仍在支持的清单

里程碑 发布日期
.NET Core 3.1.x LTS (Long Term Support) release. Approximately every 1-2 months or as needed.
.NET 6.0 LTS (Long Term Support) release. Approximately every 1-2 months or as needed.
.NET 7.0 Release scheduled for November 2022
.NET 8.0 LTS (Long Term Support) release, scheduled for November 2023

不再支持的清单

版本 原始发布日期 最新补丁版本 补丁发布日期 终止支持
.NET 5 2020年11月10日 5.0.17 2022年5月10日 2022年5月10日
.NET Core 3.0 2019年9月23日 3.0.3 2020年2月18日 2020年3月3日
.NET Core 2.2 2018年12月4日 2.2.8 2019年11月19日 2019年12月23日
.NET Core 2.1 2018年5月30日 2.1.30 2021年8月19日 2021年8月21日
.NET Core 2.0 2017年8月14日 2.0.9 2018年7月10日 2018年10月1日
.NET Core 1.1 2016年11月16日 1.1.13 2019年5月14日 2019年6月27日
.NET Core 1.0 2016年6月27日 1.0.16 2019年5月14日 2019年6月27日

命令清单

常规命令

命令 函数
dotnet build 生成.NET应用程序。
dotnet build-server 与通过生成启动的服务器进行交互。
dotnet clean 清除生成输出。
dotnet exec 运行.NET应用程序。
dotnet help 显示命令更详细的在线文档。
dotnet migrate 将有效的预览版2项目迁移到.NETCore SDK 1.0项目。
dotnet msbuild 提供对MSBuild命令行的访问权限。
dotnet new 为给定的模板初始化C#或F#项目。
dotnet pack 创建代码的NuGet包。
dotnet publish 发布.NET依赖于框架或独立应用程序。
dotnet restore 还原给定应用程序的依赖项。
dotnet run 从源运行应用程序。
dotnet sdk check 显示已安装SDK和运行时版本的最新状态。
dotnet sln 用于添加、删除和列出解决方案文件中项目的选项。
dotnet store 将程序集存储到运行时包存储区。
dotnet test 使用测试运行程序运行测试。

项目引用

命令 函数
dotnet add reference 添加项目引用。
dotnet list reference 列出项目引用。
dotnet remove reference 删除项目引用。

NuGet包

命令 函数
dotnet add package 添加NuGet包。
dotnet remove package 删除NuGet包。

NuGet命令

命令 函数
dotnet nuget delete 从服务器删除或取消列出包。
dotnet nuget push 将包推送到服务器,并将其发布。
dotnet nuget locals 清除或列出本地NuGet资源,例如http请求缓存、临时缓存或计算机范围的全局包文件夹。
dotnet nuget add source 添加NuGet源。
dotnet nuget disable source 禁用NuGet源。
dotnet nuget enable source 启用NuGet源。
dotnet nuget list source 列出所有已配置的NuGet源。
dotnet nuget remove source 删除NuGet源。
dotnet nuget update source 更新NuGet源。

工作负载命令

命令 函数
dotnet workload install 安装可选的工作负载。
dotnet workload list 列出已安装的所有工作负载。
dotnet workload repair 修复所有已安装的工作负载。
dotnet workload search 列出所选工作负载或所有可用的工作负载。
dotnet workload uninstall 卸载工作负载。
dotnet workload update 重新安装所有已安装的工作负载。

全局、工具路径和本地工具命令

工具是控制台应用程序,它们从NuGet包中安装并从命令提示符处进行调用。你可自行编写工具,也可安装由第三方编写的工具。工具也称为全局工具、工具路径工具和本地工具。

命令 函数
dotnet tool install 在计算机上安装工具。
dotnet tool list 列出计算机上当前安装的所有全局、工具路径或本地工具。
dotnet tool search 在NuGet.org中搜索其名称或元数据中具有指定搜索词的工具。
dotnet tool uninstall 从计算机中卸载工具。
dotnet tool update 更新计算机上安装的工具。

其他工具

工具 函数
dev-certs 创建和管理开发证书。
ef Entity Framework Core命令行工具。
user-secrets 管理开发用户机密。
watch 当应用程序检测到源代码中的更改时,重启或热重载应用程序的文件观察程序。

环境信息

查看DotNet帮助(--help)

>= .NET Core 3.1 SDK

dotnet -?|-h|--help

image

查看DotNet版本(--version)

>= .NET Core 3.1 SDK

dotnet --version

image

image

查看DotNet信息(--info)

>= .NET Core 3.1 SDK

打印出有关.NET安装和计算机环境(如当前操作系统)的详细信息,并提交.NET版本的SHA。

dotnet --info

image

image

列举DotNet运行时(--list-runtimes)

>= .NET Core 3.1 SDK

dotnet --list-runtimes

image

image

列举DotNet SDK(--list-sdks)

>= .NET Core 3.1 SDK

dotnet --list-sdks

image

image

SDK检查

已安装SDK和运行时检查(sdk check)

>= .NET 6 SDK

显示已安装的.NET SDK和.NET运行时的最新状态。

dotnet sdk check
.NET SDK:
版本           状态
---------------------------
5.0.202      .NET 5.0 结束支持。
5.0.411      .NET 5.0 结束支持。
6.0.400      最新。

使用 .NET 7.0.100-preview.7.22377.5 试用最新的 .NET SDK 功能。

.NET 运行时:
名称                                版本          状态
--------------------------------------------------------------
Microsoft.AspNetCore.All          2.2.8       .NET 2.2 结束支持。
Microsoft.AspNetCore.App          2.2.8       .NET 2.2 结束支持。
Microsoft.NETCore.App             2.2.8       .NET 2.2 结束支持。
Microsoft.NETCore.App             3.1.21      .NET 3.1 即将结束支持。
Microsoft.WindowsDesktop.App      3.1.21      .NET 3.1 即将结束支持。
Microsoft.AspNetCore.App          3.1.28      .NET 3.1 即将结束支持。
Microsoft.NETCore.App             3.1.28      .NET 3.1 即将结束支持。
Microsoft.WindowsDesktop.App      3.1.28      .NET 3.1 即将结束支持。
Microsoft.AspNetCore.App          5.0.5       .NET 5.0 结束支持。
Microsoft.NETCore.App             5.0.5       .NET 5.0 结束支持。
Microsoft.WindowsDesktop.App      5.0.5       .NET 5.0 结束支持。
Microsoft.AspNetCore.App          5.0.17      .NET 5.0 结束支持。
Microsoft.NETCore.App             5.0.17      .NET 5.0 结束支持。
Microsoft.WindowsDesktop.App      5.0.17      .NET 5.0 结束支持。
Microsoft.NETCore.App             6.0.6       修补程序 6.0.8 可用。
Microsoft.WindowsDesktop.App      6.0.6       修补程序 6.0.8 可用。
Microsoft.AspNetCore.App          6.0.8       最新。
Microsoft.NETCore.App             6.0.8       最新。
Microsoft.WindowsDesktop.App      6.0.8       最新。

image

新建命令

查看已安装模板(--list|list)

列出所有模板。

>= .NET Core 3.1 SDK

dotnet new --list

image

>= .NET 7 SDK

dotnet new list

image

搜索支持模板(--search|search)

在NuGet.org上搜索dotnet new支持的模板。

>= .NET Core 3.1 SDK

dotnet new --search $keyword

image

>= .NET 7 SDK

dotnet new search $keyword

image

按语言筛选(-lang|--language)

根据模板支持的语言筛选模板。接受的语言因模板而异。对于某些模板无效,可选值包括C#F#VB

dotnet new search $keyword --language "F#"

image

按类型筛选(--type)

基于模板类型筛选模板。预定义的值为projectitemsolution

dotnet new search $keyword --type item

image

控制输出结果,显示类型和标记(--columns)

要在输出中显示的列的以逗号分隔的列表。支持的列包括:

  • language - 模板支持的语言的以逗号分隔的列表。
  • tags - 模板标记列表。
  • author - 模板作者。
  • type - 模板类型:项目或项。

模板名称、短名称、包名称和下载总数将始终显示。列的默认列表为模板名称、短名称、作者、语言、包和下载总数。

dotnet new search $keyword --columns "type"

image

输出所有列(--columns-all)

在输出中显示所有列。

dotnet new search $keyword --columns-all

image

安装指定模板(--install|install)

安装模板包。默认会安装最新版本。

>= .NET Core 3.1 SDK

dotnet new --install $path|$NugetId

image

>= .NET 7 SDK

dotnet new install $path|$NugetId

image

支持交互(--interactive)

>= .NET 5 SDK

dotnet new install $path|$NugetId --interactive

指定包源(--nuget-source)

dotnet new install $path|$NugetId --nuget-source $targetNugetSource

image

这里补充下如何列举本地已有的包源

dotnet nuget list source

image

image

卸载指定模板(--uninstall|uninstall)

卸载模板包。

>= .NET Core 3.1 SDK

dotnet new --uninstall $path|$NugetId

image

>= .NET 7 SDK

dotnet new uninstall $path|$NugetId

image

获取卸载指南

dotnet new uninstall

image

升级指定模板(--update|update)

检查更新(--update-check|--check-only)

>= .NET Core 3.1 SDK

dotnet new --update-check

image

>= .NET 7 SDK

dotnet new update --check-only

image

应用更新(--update-apply|update)

>= .NET Core 3.1 SDK

dotnet new --update-apply

image

>= .NET 7 SDK

dotnet new update

image

新建模板项目

根据指定的模板,创建新的项目、配置文件或解决方案。

dotnet new $template

image

模板清单(TEMPLATE)

模板 短名称 语言 Tags 已引入
控制台应用程序 console [C#]、F#、VB 常用/控制台 1.0
类库 classlib [C#]、F#、VB 常用/库 1.0
WPF应用程序 wpf [C#]、VB 常用/WPF 3.0(对于VB,则为5.0)
WPF类库 wpflib [C#]、VB 常用/WPF 3.0(对于VB,则为5.0)
WPF自定义控件库 wpfcustomcontrollib [C#]、VB 常用/WPF 3.0(对于VB,则为5.0)
WPF用户控件库 wpfusercontrollib [C#]、VB 常用/WPF 3.0(对于VB,则为5.0)
Windows窗体(WinForms)应用程序 winforms [C#]、VB 常用/WinForms 3.0(对于VB,则为5.0)
Windows窗体(WinForms)类库 winformslib [C#]、VB 常用/WinForms 3.0(对于VB,则为5.0)
WorkerService worker [C#] 常用/Worker/Web 3.0
单元测试项目 mstest [C#]、F#、VB 测试/MSTest 1.0
NUnit3测试项目 nunit [C#]、F#、VB 测试/NUnit 2.1.400
NUnit3测试项 nunit-test [C#]、F#、VB 测试/NUnit 2.2
xUnit测试项目 xunit [C#]、F#、VB 测试/xUnit 1.0
Razor组件 razorcomponent [C#] Web/ASP.NET 3.0
Razor页 page [C#] Web/ASP.NET 2.0
MVCViewImports viewimports [C#] Web/ASP.NET 2.0
MVCViewStart viewstart [C#] Web/ASP.NET 2.0
Blazor服务器应用 blazorserver [C#] Web/Blazor 3.0
Blazor服务器应用空 blazorserver-empty [C#] Web/Blazor 7.0
BlazorWebAssembly应用 blazorwasm [C#] Web/Blazor/WebAssembly 3.1.300
BlazorWebAssembly应用空 blazorwasm-empty [C#] Web/Blazor/WebAssembly 7.0
ASP.NETCore空 web [C#],F# Web/空 1.0
ASP.NETCoreWeb应用程序(Model-View-Controller) mvc [C#],F# Web/MVC 1.0
ASP.NETCoreWeb应用程序 webapp,razor [C#] Web/MVC/RazorPages 2.2、2.0
含Angular的ASP.NETCore angular [C#] Web/MVC/SPA 2.0
含React.js的ASP.NETCore react [C#] Web/MVC/SPA 2.0
含React.js和Redux的ASP.NETCore reactredux [C#] Web/MVC/SPA 2.0
Razor类库 razorclasslib [C#] Web/Razor/库/Razor类库 2.1
ASP.NETCoreWebAPI webapi [C#],F# Web/WebAPI 1.0
ASP.NETCoregRPC服务 grpc [C#] Web/gRPC 3.0
dotnetgitignore文件 gitignore 配置 3.0
global.json文件 globaljson 配置 2.0
NuGet配置 nugetconfig 配置 1.0
Dotnet本地工具清单文件 tool-manifest 配置 3.0
Web配置 webconfig 配置 1.0
解决方案文件 sln 解决方案 1.0
协议缓冲区文件 proto Web/gRPC 3.0
EditorConfig文件 editorconfig(#editorconfig) Config 6.0

目标框架清单(Target Framework Monikers)

当你在一个应用或库中以一个框架为目标时,你就指定了你想让应用或库可用的一组API。你在项目文件中使用目标框架名称(Target Framework Monikers, TFM)来指定目标框架。

目标框架 TFM
.NET 5及更高版本(含.NET Core) netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
netcoreapp3.1
net5.0*
net6.0*
net7.0*
.NET Standard netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET Framework net11
net20
net35
net40
net403
net45
net451
net452
net46
net461
net462
net47
net471
net472
net48
Windows 应用商店 netcore[netcore45]
netcore45[win][win8]
netcore451[win81]
.NET Micro Framework netmf
Silverlight sl4
sl5
Windows Phone wp[wp7]
wp7
wp75
wp8
wp81
wpa81
通用Windows平台 uap[uap10.0]
uap10.0[win10][netcore50]

指定创建语言(-lang|--language)

要创建的模板的语言。接受的语言因模板而异。对于某些模板无效,可选值包括C#F#VB

dotnet new $template --language "C#"

image

指定输出名称(-n|--name)

所创建的输出的名称。如果未指定名称,使用的是当前目录的名称。

dotnet new $template --name $targetName

image

指定输出目录(-o|--output)

用于放置生成的输出的位置。默认为当前目录。

dotnet new $template --output $targetDir

image

指定模板版本(--framework)

在指定的目录中创建.NET Standard 2.0类库项目

dotnet new classlib --framework "netstandard2.0" -o MyLibrary

image

指定SDK版本(--sdk-version)

在当前目录中创建global.json,将SDK版本设置为3.1.101

dotnet new globaljson --sdk-version 3.1.101

image

禁止检查更新(-no-update-check)

禁止在实例化模板时检查模板包更新。自.NET 6.0.100 SDK起可用。从使用dotnet new --install安装的模板包实例化模板时,dotnet new会检查模板是否有更新。

从.NET 6开始,不对.NET默认模板进行更新检查。

若要更新.NET默认模板,请安装.NET SDK的修补程序版本。

dotnet new $template -no-update-check

参考

posted @ 2022-08-28 20:35  TaylorShi  阅读(439)  评论(0编辑  收藏  举报