.NET Core 实战 [No.7~13] 命令行工具

开发时一般都是通过 Visual Studio 来创建和运行程序,不过了解一下常用 .NET Core 的命令行工具还是有必要的。特别是编译和运行命令,偶尔会使用到。

1. dotnet new

下面的命令会创建一个控制台项目,项目名默认和当前文件夹同相同。

dotnet new console
  

通过 -n 参数可以指定新项目的名称。

dotnet new console -n ProjectName
  

项目会自动在当前目录下的同名文件夹下。

└─ProjectName
    │  Program.cs
    │  ProjectName.csproj
    │
    └─obj
            project.assets.json
            ProjectName.csproj.nuget.cache
            ProjectName.csproj.nuget.dgspec.json
            ProjectName.csproj.nuget.g.props
            ProjectName.csproj.nuget.g.targets
  

通过 -o 参数可以指定新项目的存放位置。

dotnet new console -o Sample
  

如果未通过 -n 参数指定项目名,则默认和项目存放位置相同。

└─Sample
   │  Program.cs
   │  Sample.csproj
   │
   └─obj
           project.assets.json
           Sample.csproj.nuget.cache
           Sample.csproj.nuget.dgspec.json
           Sample.csproj.nuget.g.props
           Sample.csproj.nuget.g.targets
  

通常 -o-n 参数会同时使用。

2. dotnet build

该命令编译应用程序项目。

dotnet build App1\App1.csproj
  

编译前的项目目录结构:

└─App1
    │  App1.csproj
    │  Program.cs
    │
    └─obj
            App1.csproj.nuget.cache
            App1.csproj.nuget.dgspec.json
            App1.csproj.nuget.g.props
            App1.csproj.nuget.g.targets
            project.assets.json
  

编译后的项目目录结构:

└─App1
    │  App1.csproj
    │  Program.cs
    │
    ├─bin
    │  └─Debug
    │      └─netcoreapp3.1
    │              App1.deps.json
    │              App1.dll
    │              App1.exe
    │              App1.pdb
    │              App1.runtimeconfig.dev.json
    │              App1.runtimeconfig.json
    │
    └─obj
        │  App1.csproj.nuget.cache
        │  App1.csproj.nuget.dgspec.json
        │  App1.csproj.nuget.g.props
        │  App1.csproj.nuget.g.targets
        │  project.assets.json
        │
        └─Debug
            └─netcoreapp3.1
                    App1.AssemblyInfo.cs
                    App1.AssemblyInfoInputs.cache
                    App1.assets.cache
                    App1.csproj.FileListAbsolute.txt
                    App1.csprojAssemblyReference.cache
                    App1.dll
                    App1.exe
                    App1.pdb
  

可以看出在 binobj 目录下都新增了 Debug 目录。
由于我的开发环境当前默认的 .NET Core 版本为 3.1,所以编译结果文件存放在 netcoreapp3.1 目录下。

通过添加 -c Release 参数可以编译项目的 Release 版本。

dotnet build App1\App1.csproj -c Release
  

编译后在 binobj 目录下都新增了一个 Release 目录。

└─App1
    │  App1.csproj
    │  Program.cs
    │
    ├─bin
    │  ├─Debug
    │  │  └─netcoreapp3.1
    │  │          App1.deps.json
    │  │          App1.dll
    │  │          App1.exe
    │  │          App1.pdb
    │  │          App1.runtimeconfig.dev.json
    │  │          App1.runtimeconfig.json
    │  │
    │  └─Release
    │      └─netcoreapp3.1
    │              App1.deps.json
    │              App1.dll
    │              App1.exe
    │              App1.pdb
    │              App1.runtimeconfig.dev.json
    │              App1.runtimeconfig.json
    │
    └─obj
        │  App1.csproj.nuget.cache
        │  App1.csproj.nuget.dgspec.json
        │  App1.csproj.nuget.g.props
        │  App1.csproj.nuget.g.targets
        │  project.assets.json
        │
        ├─Debug
        │  └─netcoreapp3.1
        │          App1.AssemblyInfo.cs
        │          App1.AssemblyInfoInputs.cache
        │          App1.assets.cache
        │          App1.csproj.FileListAbsolute.txt
        │          App1.csprojAssemblyReference.cache
        │          App1.dll
        │          App1.exe
        │          App1.pdb
        │
        └─Release
            └─netcoreapp3.1
                    App1.AssemblyInfo.cs
                    App1.AssemblyInfoInputs.cache
                    App1.assets.cache
                    App1.csproj.FileListAbsolute.txt
                    App1.csprojAssemblyReference.cache
                    App1.dll
                    App1.exe
                    App1.pdb
  

3. dotnet new sln

该命令创建解决方案文件,使用 -n 参数可以指定解决方案文件名。

dotnet new sln -n Happy
  

dotnet sln add

使用 dotnet sln {SolutionName} add {ProjectName1} [{ProjectName2}] 命令将项目添加到解决方案中。

dotnet sln Happy.sln add demo1\demo1.csproj demo2\demo2.csproj
  

执行后解决方案文件中会添加如下内容:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "demo1", "demo1\demo1.csproj", "{E3B59553-1924-481B-9594-9D7C94473879}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "demo2", "demo2\demo2.csproj", "{98DBAA15-163C-4601-A678-038247B82862}"
EndProject
  

dotnet sln list

该命令可以查看解决方案中的项目列表。

>dotnet sln list
项目
--
demo1\demo1.csproj
demo2\demo2.csproj
  

dotnet sln remove

该命令可以从解决方案中移除项目。

dotnet sln remove demo1\demo1.csproj
  

4. dotnet {.dll}

该命令可以运行指定的 dll 文件。

>dotnet bin\Debug\netcoreapp3.1\ProjectName.dll

Hello World!
  

5. dotnet run

该命令运行当前目录下的项目。

>dotnet run
Hello World!
  

参考:《.NET Core 实战:手把手教你掌握 380 个精彩案例》 – 周家安 著