.NET Core CLI命令行接口

.NET Core Command-Line Interface 是開發(fā).NET應(yīng)用程序的基礎(chǔ)開發(fā)工具。

安裝.NET Core CLI

有兩種方式安裝CLI:

  • 通過下載安裝包,適用于開發(fā)環(huán)境,要用到本機(jī)的管理員權(quán)限
  • 通過shell腳本,適用于服務(wù)器環(huán)境

CLI命令

dotnet工具(稱為驅(qū)動程序)作為cli命令的入口,能夠接收并執(zhí)行命令。同時,它可以選擇要使用的cli的sdk版本,如果未指定版本,默認(rèn)使用最新的sdk版本。如果要指定版本使用dotnet --fx-version <version>命令,dotnet只做兩件事:

  1. 執(zhí)行命令,格式如下:dotnet command option,比如:新建一個mvc工程命名為Zebra.Liu.MVC,dotnet new mvc -n Zebra.Liu.MVC
  2. 運(yùn)行程序,格式如下:dotnet /build/my_app.dll

dotnet命令大致可以分為以下幾類:

  • 常規(guī)命令,如 dotnet new,dotnet build,dotnet run
  • 工程類命令
    • 項(xiàng)目之間的引用,dotnet add reference,dotnet list reference,dotnet remove reference
    • 項(xiàng)目的包管理,dotnet add package,dotnet remove package
  • 其他命名,如使用ef,dotnet ef,啟動文件觀察程序dotnet watch

常用命令

dotnet build命令

#創(chuàng)建MVC工程
[zebra Desktop]$mkdir work && cd work
[zebra work]$dotnet new console -n Zebra.Liu.Console

#添加Nuget包,這是添加了mysql的驅(qū)動包
[zebra work]$cd Zebra.Liu.Console/
[zebra Zebra.Liu.Console]$dotnet add package Pomelo.EntityFrameworkCore.MySql
[zebra Zebra.Liu.Console]$ls
Program.cs Zebra.Liu.Console.csproj  obj

#編譯工程,輸出到build文件夾中
[zebra Zebra.Liu.Console]$dotnet build -o build/
[zebra Zebra.Liu.Console]$ls
Program.cs Zebra.Liu.Console.csproj build obj

#多了一個build文件夾,用于存放編譯后的文件
[zebra Zebra.Liu.Console]$ls build/
Zebra.Liu.Console.dll  #二進(jìn)制文件(中間語言IL)
Zebra.Liu.Console.pdb  #symbol文件,用于調(diào)試
Zebra.Liu.Console.deps.json # *.deps.json中列出應(yīng)用程序的依賴項(xiàng)
Zebra.Liu.Console.runtimeconfig.dev.json
Zebra.Liu.Console.runtimeconfig.json # 指定共享運(yùn)行時以其版本

上面的試驗(yàn)可以看出build命令最后的產(chǎn)物,如果有項(xiàng)目使用了第三方的依賴,如像上面一樣使用了NuGet中的MySQL驅(qū)動,那么在執(zhí)行build命令時,只會從本機(jī)的NuGet緩存庫中解析依賴項(xiàng),也就是說,生成的dll文件,不包含MySQL的驅(qū)動。這樣build的dll文件,從本機(jī)拷貝到另外的機(jī)器上,可能不能運(yùn)行。如果要將依賴項(xiàng)也打包,可以使用另一個命令dotnet publish

publish命令和build命令最大的區(qū)別在于:publish命令將應(yīng)用程序的依賴項(xiàng),從NuGet緩存復(fù)制到輸出文件夾中。

build后的程序是否為可執(zhí)行,主要看.csproj文件中的選項(xiàng)

<!-- .csproj文件內(nèi)容 -->
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <!-- 
      OutputType 輸出類型設(shè)置為Exe,說明這個工程,可執(zhí)行
      可執(zhí)行的dll和不可執(zhí)行的dll文件最大的區(qū)別在于,有沒有入口點(diǎn)以及是否可執(zhí)行
     -->
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

</Project>

dotnet clean命令

清除上一個生成的輸出,包括中間文件夾(obj)和最終輸出文件夾(bin)中的文件

dotnet sln命令

使用dotnet sln命令,可以在*.sln,文件中添加,刪除,獲取項(xiàng)目。

dotnet sln [<solution_name>] add <project> <project>

dotnet sln [<solution_name>] add <globbing_pattern>

dotnet sln [<solution_name>] remove <project> <project>

dotnet sln [<solution_name>] remove <globbing_pattern>

dotnet sln [<solution_name>] list

注意:dotnet sln命令只會對solution_name.sln文件中操作,要生成*.sln文件,可以使用dotnet new sln命令

dotnet add/remove/list reference命名

管理項(xiàng)目之間的引用關(guān)系

# 項(xiàng)目1引用項(xiàng)目2
[zebra work]$dotnet add 項(xiàng)目1 reference 項(xiàng)目2

使用CLI創(chuàng)建多項(xiàng)目的解決方案

本章將用cli,按照DDD的分層架構(gòu)來創(chuàng)建包含多個項(xiàng)目的解決方案,方案的結(jié)構(gòu)大致如下:

# 工程目標(biāo)結(jié)構(gòu)
- Shopping.sln
 |- Shopping.UI
 |- Shopping.Application
 |- Shopping.Domain
 |- Shopping.Infrastructure

# 工程引用關(guān)系
Shopping.UI
    |
    V
Shopping.Application
    |           \
    V            \
Shopping.Domain   \
    |              \
    V               V
Shopping.Infrastructure

腳本如下:

# 創(chuàng)建目錄
[zebra ~]$mkdir Shopping && cd Shopping

# 創(chuàng)建工程 UI為MVC類型,其余全部是classlib
[zebra Shopping]$dotnet new mvc -n Shopping.UI
[zebra Shopping]$dotnet new classlib -n Shopping.Application
[zebra Shopping]$dotnet new classlib -n Shopping.Domain
[zebra Shopping]$dotnet new classlib -n Shopping.Infrastructure

# 添加工程之間的引用
[zebra Shopping]$dotnet add Shopping.UI reference Shopping.Application
[zebra Shopping]$dotnet add Shopping.Application reference Shopping.Domain
[zebra Shopping]$dotnet add Shopping.Application reference Shopping.Infrastructure
[zebra Shopping]$dotnet add Shopping.Domain reference Shopping.Infrastructure

# 創(chuàng)建Shopping.sln文件,將工程文件加入到解決方案(.sln)文件中
[zebra Shopping]$dotnet new sln -n Shopping
[zebra Shopping]$dotnet sln add Shopping.*

# 添加NuGet依賴包,這里以在Shopping.Infrastructure工程中添加MySQL驅(qū)動為例
[zebra Shopping]$cd Shopping.Infrastructure/
[zebra Shopping.Infrastructure]$dotnet add package Pomelo.EntityFrameworkCore.MySql
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容