温故知新,DotNet Core SDK和.Net CLI十八般武艺
簡(jiǎn)介
.NET命令行接口 (CLI) 工具是用于開(kāi)發(fā)、生成、運(yùn)行和發(fā)布.NET應(yīng)用程序的跨平臺(tái)工具鏈。
https://docs.microsoft.com/zh-cn/dotnet/core/tools/
SDK
.NET SDK (Software Development Kit) v5.0.201.exe
| .NET Core 2.1.x (servicing) | LTS (Long Term Support) release. Approximately every 1-2 months or as needed. |
| .NET Core 3.1.x (servicing) | LTS (Long Term Support) release. Approximately every 1-2 months or as needed. |
| .NET 5.0 | Release scheduled for November 2020 |
| .NET 6.0 | LTS (Long Term Support) release, scheduled for November 2021 |
| .NET 7.0 | Release scheduled for November 2022 |
| .NET 8.0 | LTS (Long Term Support) release, scheduled for November 2023 |
https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install
https://github.com/dotnet/core/blob/main/roadmap.md
檢查安裝
dotnet新建
dotnet new $templateName其中常見(jiàn)的模板名稱(chēng)有:
| 控制臺(tái)應(yīng)用程序 | console | >= 1.0 |
| 類(lèi)庫(kù) | classlib | >= 1.0 |
| WPF應(yīng)用程序 | wpf | >= 3.0 |
| WPF類(lèi)庫(kù) | wpflib | >= 3.0 |
| WPF自定義控件庫(kù) | wpfcustomcontrollib | >= 3.0 |
| WPF用戶(hù)控件庫(kù) | wpfusercontrollib | >= 3.0 |
| Windows窗體(WinForms) 應(yīng)用程序 | winforms | >= 3.0 |
| Windows窗體(WinForms)類(lèi)庫(kù) | winformslib | >= 3.0 |
| Worker Service | worker | >= 3.0 |
| 單元測(cè)試項(xiàng)目 | mstest | >= 1.0 |
| NUnit 3測(cè)試項(xiàng)目 | nunit | >= 2.1 |
| NUnit 3測(cè)試項(xiàng) | nunit-test | >= 2.2 |
| xUnit 測(cè)試項(xiàng)目 | xunit | >= 1.0 |
| Razor組件 | razorcomponent | >= 3.0 |
| Razor頁(yè) | page | >= 2.0 |
| MVC ViewImports | viewimports | >= 2.0 |
| MVC ViewStart | viewstart | >= 2.0 |
| Blazor 服務(wù)器應(yīng)用 | blazorserver | >= 3.0 |
| Blazor WebAssembly應(yīng)用 | blazorwasm | >= 3.1 |
| ASP.NET Core空 | web | >= 1.0 |
| ASP.NET Core Web應(yīng)用程序 (Model-View-Controller) | mvc | >= 1.0 |
| ASP.NET Core Web 應(yīng)用程序 | webapp,?razor | >= 2.0 |
| 含 Angular 的ASP.NET Core | angular | >= 2.0 |
| 含 React.js 的ASP.NET Core | react | >= 2.0 |
| 含 React.js 和 Redux 的ASP.NET Core | reactredux | >= 2.0 |
| Razor類(lèi)庫(kù) | razorclasslib | >= 2.1 |
| ASP.NET Core Web API | webapi | >= 1.0 |
| ASP.NET Core gRPC服務(wù) | grpc | >= 3.0 |
| dotnet gitignore文件 | gitignore | >= 3.0 |
| global.json文件 | globaljson | >= 2.0 |
| NuGet配置 | nugetconfig | >= 1.0 |
| Dotnet本地工具清單文件 | tool-manifest | >= 3.0 |
| Web配置 | webconfig | >= 1.0 |
| 解決方案文件 | sln | >= 1.0 |
| 協(xié)議緩沖區(qū)文件 | proto | >= 3.0 |
可選參數(shù)--list可查看本地安裝的所有模板
dotnet new --list可選參數(shù)-f?指定目標(biāo)框架版本號(hào)
dotnet new $templateName -f $frameworkNamenet5.0
netcoreapp3.1
netcoreapp3.0
netcoreapp2.1
可選參數(shù)-n?指定創(chuàng)建的輸出名稱(chēng),否認(rèn)默認(rèn)是當(dāng)前文件夾名稱(chēng)
dotnet new webapi -n $projectNamehttps://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new
可選參數(shù)-o?指定輸出目錄,默認(rèn)是當(dāng)前目錄
dotnet new webapi -o $projectName可選參數(shù)--no-https關(guān)閉默認(rèn)HTTPS要求,方便開(kāi)發(fā)調(diào)試
dotnet new webapi -o $projectName --no-https還原依賴(lài)
dotnet restore dotnet restore $target.csproj運(yùn)行
dotnet run輸出文件會(huì)寫(xiě)入到默認(rèn)位置,即bin/<configuration>/<target>。例如,如果具有netcoreapp2.1應(yīng)用程序并且運(yùn)行dotnet run,則輸出置于bin/Debug/netcoreapp2.1。將根據(jù)需要覆蓋文件。臨時(shí)文件將置于obj目錄。
如果在上下文中,需要直接運(yùn)行某個(gè)文件,可以用
dotnet $fileName禁止隱式還原
dotnet run --no-restore禁止生成項(xiàng)目
dotnet run --no-build生成
dotnet builddotnet build命令將項(xiàng)目及其依賴(lài)項(xiàng)生成為一組二進(jìn)制文件。二進(jìn)制文件包括擴(kuò)展名為.dll的中間語(yǔ)言 (IL) 文件中的項(xiàng)目代碼。
根據(jù)項(xiàng)目類(lèi)型和設(shè)置,可能會(huì)包含其他文件,例如:
可用于運(yùn)行應(yīng)用程序的可執(zhí)行文件(如果項(xiàng)目類(lèi)型是面向.NET Core 3.0或更高版本的可執(zhí)行文件)。
用于調(diào)試的擴(kuò)展名為.pdb的符號(hào)文件。
列出了應(yīng)用程序或庫(kù)的依賴(lài)項(xiàng)的.deps.json文件。
用于指定應(yīng)用程序的共享運(yùn)行時(shí)及其版本的.runtimeconfig.json文件。
項(xiàng)目通過(guò)項(xiàng)目引用或 NuGet 包引用所依賴(lài)的其他庫(kù)。
對(duì)于目標(biāo)版本低于.NET Core 3.0的可執(zhí)行項(xiàng)目,通常不會(huì)將NuGet中的庫(kù)依賴(lài)項(xiàng)復(fù)制到輸出文件夾。而是在運(yùn)行時(shí)從NuGet全局包文件夾中對(duì)其進(jìn)行解析。
對(duì)于面向.NET Core 3.0及更高版本的可執(zhí)行項(xiàng)目,庫(kù)依賴(lài)項(xiàng)會(huì)被復(fù)制到輸出文件夾。這意味著如果沒(méi)有其他任何特定于發(fā)布的邏輯(例如,Web項(xiàng)目具有的邏輯),則應(yīng)可部署生成輸出。
輸出可執(zhí)行文件還是輸出庫(kù)的配置
要生成庫(kù),請(qǐng)省略<OutputType>屬性或?qū)⑵渲蹈臑長(zhǎng)ibrary
<PropertyGroup><OutputType>Exe</OutputType> </PropertyGroup> <PropertyGroup><OutputType>Library</OutputType> </PropertyGroup>指定生成模式
Debug
Release
指定文件版本
dotnet build -p:Version=$targetVersion清理
dotnet clean dotnet clean -c Release打包
dotnet pack dotnet pack -c Release默認(rèn)情況下,Web 項(xiàng)目不可打包。若要覆蓋默認(rèn)行為,請(qǐng)將以下屬性添加到 .csproj 文件中
<PropertyGroup><IsPackable>true</IsPackable> </PropertyGroup>Nuget
添加源
dotnet nuget add source $nugetUrl -n $sourceName列舉源
dotnet nuget list source刪除源
dotnet nuget remove source $sourceName推送包到指定源
dotnet nuget push $packageName.nupkg -k $sourceAuthKey -s $sourceUrl刪除包
dotnet nuget delete $packageName $packageVersion -s $sourceName發(fā)布
dotnet publish以dll文件的形式將應(yīng)用發(fā)布為依賴(lài)于框架的應(yīng)用時(shí),將創(chuàng)建跨平臺(tái)二進(jìn)制文件。?dll文件將與項(xiàng)目同名。例如,如果有名為demoForWebApp3.1的應(yīng)用,則會(huì)創(chuàng)建名為demoForWebApp3.1.dll的文件。以這種方式發(fā)布的應(yīng)用可通過(guò)dotnet <filename.dll>命令運(yùn)行,并且可在任意平臺(tái)上運(yùn)行。
只要安裝了目標(biāo).NET 運(yùn)行時(shí),就可以在任何操作系統(tǒng)上運(yùn)行跨平臺(tái)二進(jìn)制文件。如果未安裝目標(biāo).NET運(yùn)行時(shí),如果將應(yīng)用配置為前滾,則它可以使用較新的運(yùn)行時(shí)運(yùn)行。
指定框架的發(fā)布
--runtime?=>?-r
dotnet publish -r linux-x64 --self-contained false dotnet publish -r win-x64 --self-contained false所有可選的框架清單:https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog
其中--self-contained false參數(shù)表示不包括對(duì)應(yīng)框架運(yùn)行時(shí)。
dotnet publish -r linux-x64 dotnet publish -r win-x64將包含完整的目標(biāo)框架運(yùn)行時(shí)+程序
將應(yīng)用發(fā)布為獨(dú)立應(yīng)用,將生成特定于平臺(tái)的可執(zhí)行文件。輸出發(fā)布文件夾包含應(yīng)用的所有組件,包括.NET庫(kù)和目標(biāo)運(yùn)行時(shí)。應(yīng)用獨(dú)立于其他.NET應(yīng)用,且不使用本地安裝的共享運(yùn)行時(shí)。應(yīng)用的用戶(hù)無(wú)需下載和安裝.NET。
直接生成ReadyToRun映像
dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true使用ReadyToRun映像發(fā)布可以縮短應(yīng)用程序的啟動(dòng)時(shí)間,但代價(jià)是增加應(yīng)用程序的大小。
https://docs.microsoft.com/zh-cn/dotnet/core/deploying/#produce-a-cross-platform-binary
指定項(xiàng)目文件發(fā)布
dotnet publish $packageName.csproj監(jiān)聽(tīng)并自動(dòng)生成
開(kāi)發(fā)階段在源文件發(fā)生變動(dòng)的情況下就自動(dòng)執(zhí)行dotnet build
dotnet watch run包管理
添加包
dotnet add package $packageName dotnet add package $packageName -v $packageVersion查看已安裝包
dotnet list package移除某安裝包
dotnet remove package $packageName用VSC打開(kāi)當(dāng)前目錄
先cd到需要打開(kāi)的當(dāng)前目錄,然后輸入命令:
code .讓VSC支持C#語(yǔ)法檢查
只要安裝C#插件即可。
讓VSC支持自動(dòng)Using
只要安裝Auto-Using for C#這個(gè)插件即可。
總結(jié)
以上是生活随笔為你收集整理的温故知新,DotNet Core SDK和.Net CLI十八般武艺的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MAUI来了
- 下一篇: 2021年春招Elasticsearch