乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 伴随.Net6/7与时俱进的.Net CLI命令行接口
前言
.NET命令行接口(CLI)工具是用于开发、生成、运行和发布.NET应用程序的跨平台工具链。
虽然之前已经写过温故知新,DotNet Core SDK和.Net CLI十八般武艺 ,但是随着.Net迈入6,甚至预览7,开始8,有些内容已经开始不适用了,有些命令也随着发生变动,加上Ubuntu和微软正式合作,可以一键安装.Net 6,可以与时俱进写一篇新的了。
SDK清单
发布节奏
从这个图来看,那些还停留在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
查看DotNet版本(--version)
>= .NET Core 3.1 SDK
dotnet --version
查看DotNet信息(--info)
>= .NET Core 3.1 SDK
打印出有关.NET安装和计算机环境(如当前操作系统)的详细信息,并提交.NET版本的SHA。
dotnet --info
列举DotNet运行时(--list-runtimes)
>= .NET Core 3.1 SDK
dotnet --list-runtimes
列举DotNet SDK(--list-sdks)
>= .NET Core 3.1 SDK
dotnet --list-sdks
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 最新。
新建命令
查看已安装模板(--list|list)
列出所有模板。
>= .NET Core 3.1 SDK
dotnet new --list
>= .NET 7 SDK
dotnet new list
搜索支持模板(--search|search)
在NuGet.org上搜索dotnet new支持的模板。
>= .NET Core 3.1 SDK
dotnet new --search $keyword
>= .NET 7 SDK
dotnet new search $keyword
按语言筛选(-lang|--language)
根据模板支持的语言筛选模板。接受的语言因模板而异。对于某些模板无效,可选值包括C#
、F#
、VB
。
dotnet new search $keyword --language "F#"
按类型筛选(--type)
基于模板类型筛选模板。预定义的值为project
、item
和solution
。
dotnet new search $keyword --type item
控制输出结果,显示类型和标记(--columns)
要在输出中显示的列的以逗号分隔的列表。支持的列包括:
language
- 模板支持的语言的以逗号分隔的列表。tags
- 模板标记列表。author
- 模板作者。type
- 模板类型:项目或项。
模板名称、短名称、包名称和下载总数将始终显示。列的默认列表为模板名称、短名称、作者、语言、包和下载总数。
dotnet new search $keyword --columns "type"
输出所有列(--columns-all)
在输出中显示所有列。
dotnet new search $keyword --columns-all
安装指定模板(--install|install)
安装模板包。默认会安装最新版本。
>= .NET Core 3.1 SDK
dotnet new --install $path|$NugetId
>= .NET 7 SDK
dotnet new install $path|$NugetId
支持交互(--interactive)
>= .NET 5 SDK
dotnet new install $path|$NugetId --interactive
指定包源(--nuget-source)
dotnet new install $path|$NugetId --nuget-source $targetNugetSource
这里补充下如何列举本地已有的包源
dotnet nuget list source
卸载指定模板(--uninstall|uninstall)
卸载模板包。
>= .NET Core 3.1 SDK
dotnet new --uninstall $path|$NugetId
>= .NET 7 SDK
dotnet new uninstall $path|$NugetId
获取卸载指南
dotnet new uninstall
升级指定模板(--update|update)
检查更新(--update-check|--check-only)
>= .NET Core 3.1 SDK
dotnet new --update-check
>= .NET 7 SDK
dotnet new update --check-only
应用更新(--update-apply|update)
>= .NET Core 3.1 SDK
dotnet new --update-apply
>= .NET 7 SDK
dotnet new update
新建模板项目
根据指定的模板,创建新的项目、配置文件或解决方案。
dotnet new $template
模板清单(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#"
指定输出名称(-n|--name)
所创建的输出的名称。如果未指定名称,使用的是当前目录的名称。
dotnet new $template --name $targetName
指定输出目录(-o|--output)
用于放置生成的输出的位置。默认为当前目录。
dotnet new $template --output $targetDir
指定模板版本(--framework)
在指定的目录中创建.NET Standard 2.0类库项目
dotnet new classlib --framework "netstandard2.0" -o MyLibrary
指定SDK版本(--sdk-version)
在当前目录中创建global.json,将SDK版本设置为3.1.101
dotnet new globaljson --sdk-version 3.1.101
禁止检查更新(-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
参考
- 温故知新,DotNet Core SDK和.Net CLI十八般武艺
- .NET CLI概述
- .NET和.NET Core支持策略
- 下载.NET,包括ASP.NET Core
- 适用于dotnet new的.NET默认模板
- dotnet new list
- dotnet new search
- dotnet new install
- dotnet new update
- dotnet new TEMPLATE
- Target frameworks in SDK-style projects
- 什么是目标框架别名(What are the Target Framework Monikers (TFMs))?
- 通过.NET CLI生成自签名证书
- .NET卸载工具