温故知新,DotNet Core SDK和.Net CLI十八般武艺
簡介
.NET命令行接口 (CLI) 工具是用于開發、生成、運行和發布.NET應用程序的跨平臺工具鏈。
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其中常見的模板名稱有:
| 控制臺應用程序 | console | >= 1.0 |
| 類庫 | classlib | >= 1.0 |
| WPF應用程序 | wpf | >= 3.0 |
| WPF類庫 | wpflib | >= 3.0 |
| WPF自定義控件庫 | wpfcustomcontrollib | >= 3.0 |
| WPF用戶控件庫 | wpfusercontrollib | >= 3.0 |
| Windows窗體(WinForms) 應用程序 | winforms | >= 3.0 |
| Windows窗體(WinForms)類庫 | winformslib | >= 3.0 |
| Worker Service | worker | >= 3.0 |
| 單元測試項目 | mstest | >= 1.0 |
| NUnit 3測試項目 | nunit | >= 2.1 |
| NUnit 3測試項 | nunit-test | >= 2.2 |
| xUnit 測試項目 | xunit | >= 1.0 |
| Razor組件 | razorcomponent | >= 3.0 |
| Razor頁 | page | >= 2.0 |
| MVC ViewImports | viewimports | >= 2.0 |
| MVC ViewStart | viewstart | >= 2.0 |
| Blazor 服務器應用 | blazorserver | >= 3.0 |
| Blazor WebAssembly應用 | blazorwasm | >= 3.1 |
| ASP.NET Core空 | web | >= 1.0 |
| ASP.NET Core Web應用程序 (Model-View-Controller) | mvc | >= 1.0 |
| ASP.NET Core Web 應用程序 | 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類庫 | razorclasslib | >= 2.1 |
| ASP.NET Core Web API | webapi | >= 1.0 |
| ASP.NET Core gRPC服務 | 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 |
| 協議緩沖區文件 | proto | >= 3.0 |
可選參數--list可查看本地安裝的所有模板
dotnet new --list可選參數-f?指定目標框架版本號
dotnet new $templateName -f $frameworkNamenet5.0
netcoreapp3.1
netcoreapp3.0
netcoreapp2.1
可選參數-n?指定創建的輸出名稱,否認默認是當前文件夾名稱
dotnet new webapi -n $projectNamehttps://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new
可選參數-o?指定輸出目錄,默認是當前目錄
dotnet new webapi -o $projectName可選參數--no-https關閉默認HTTPS要求,方便開發調試
dotnet new webapi -o $projectName --no-https還原依賴
dotnet restore dotnet restore $target.csproj運行
dotnet run輸出文件會寫入到默認位置,即bin/<configuration>/<target>。例如,如果具有netcoreapp2.1應用程序并且運行dotnet run,則輸出置于bin/Debug/netcoreapp2.1。將根據需要覆蓋文件。臨時文件將置于obj目錄。
如果在上下文中,需要直接運行某個文件,可以用
dotnet $fileName禁止隱式還原
dotnet run --no-restore禁止生成項目
dotnet run --no-build生成
dotnet builddotnet build命令將項目及其依賴項生成為一組二進制文件。二進制文件包括擴展名為.dll的中間語言 (IL) 文件中的項目代碼。
根據項目類型和設置,可能會包含其他文件,例如:
可用于運行應用程序的可執行文件(如果項目類型是面向.NET Core 3.0或更高版本的可執行文件)。
用于調試的擴展名為.pdb的符號文件。
列出了應用程序或庫的依賴項的.deps.json文件。
用于指定應用程序的共享運行時及其版本的.runtimeconfig.json文件。
項目通過項目引用或 NuGet 包引用所依賴的其他庫。
對于目標版本低于.NET Core 3.0的可執行項目,通常不會將NuGet中的庫依賴項復制到輸出文件夾。而是在運行時從NuGet全局包文件夾中對其進行解析。
對于面向.NET Core 3.0及更高版本的可執行項目,庫依賴項會被復制到輸出文件夾。這意味著如果沒有其他任何特定于發布的邏輯(例如,Web項目具有的邏輯),則應可部署生成輸出。
輸出可執行文件還是輸出庫的配置
要生成庫,請省略<OutputType>屬性或將其值更改為Library
<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默認情況下,Web 項目不可打包。若要覆蓋默認行為,請將以下屬性添加到 .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發布
dotnet publish以dll文件的形式將應用發布為依賴于框架的應用時,將創建跨平臺二進制文件。?dll文件將與項目同名。例如,如果有名為demoForWebApp3.1的應用,則會創建名為demoForWebApp3.1.dll的文件。以這種方式發布的應用可通過dotnet <filename.dll>命令運行,并且可在任意平臺上運行。
只要安裝了目標.NET 運行時,就可以在任何操作系統上運行跨平臺二進制文件。如果未安裝目標.NET運行時,如果將應用配置為前滾,則它可以使用較新的運行時運行。
指定框架的發布
--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參數表示不包括對應框架運行時。
dotnet publish -r linux-x64 dotnet publish -r win-x64將包含完整的目標框架運行時+程序
將應用發布為獨立應用,將生成特定于平臺的可執行文件。輸出發布文件夾包含應用的所有組件,包括.NET庫和目標運行時。應用獨立于其他.NET應用,且不使用本地安裝的共享運行時。應用的用戶無需下載和安裝.NET。
直接生成ReadyToRun映像
dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true使用ReadyToRun映像發布可以縮短應用程序的啟動時間,但代價是增加應用程序的大小。
https://docs.microsoft.com/zh-cn/dotnet/core/deploying/#produce-a-cross-platform-binary
指定項目文件發布
dotnet publish $packageName.csproj監聽并自動生成
開發階段在源文件發生變動的情況下就自動執行dotnet build
dotnet watch run包管理
添加包
dotnet add package $packageName dotnet add package $packageName -v $packageVersion查看已安裝包
dotnet list package移除某安裝包
dotnet remove package $packageName用VSC打開當前目錄
先cd到需要打開的當前目錄,然后輸入命令:
code .讓VSC支持C#語法檢查
只要安裝C#插件即可。
讓VSC支持自動Using
只要安裝Auto-Using for C#這個插件即可。
總結
以上是生活随笔為你收集整理的温故知新,DotNet Core SDK和.Net CLI十八般武艺的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAUI来了
- 下一篇: 2021年春招Elasticsearch