.NET Core dotnet 实用命令大全

从 .Net Core 2.0 开始,当发出下列命令时,如有必要,将隐式运行 dotnet restore。
dotnet new
dotnet build
dotnet build-server
dotnet run
dotnet test
dotnet publish
dotnet pack

dotnet命令主要是用来查看一些基本的信息,如平台、版本号等。经常会用到的参数有–version,–info,–help,下面依次运行下看看输出

以下用实例串起dotnet常用命令,带你玩转dotnet命令。

1.创建(dotnet new)

首先我们创建一个项目,这里我们创建控制台程序,命令如下图所示。

dotnet new

dotnet new更多参数参考帮助dotnet new -h。

2.还原(dotnet restore及dotnet pack)

接着再创建一个class lib,也就是类库,命令如下图所示。

dotnet new classlib

创建好以后,编写一些自己的代码然后进行打包。

这里编写了两个方法,现在来打包。

dotnet restore

dotnet pack

.NET Core是怎样添加离线引用包呢?现在揭晓答案。

打包好以后,将applib添加到app的app.csproj中。

在app.csproj 添加如下:

  <ItemGroup>

    <PackageReference Include=”applib” Version=”1.0.0″ />

  </ItemGroup>

添加好以后切换到app目录,然后进行还原。

还原使用的命令是:dotnet restore -s E:\dotnet\applib\bin\Debug\,即dotnet restore -s包的路径。

这样就能直接在项目中调用applib里面的方法了。

在代码中编写对应的调用,然后执行程序。可以看到正确输出了class lib的结果。

3.运行(dotnet build及dotnet run)

以app为例。

dotnet build编译代码,然后dotnet run执行程序:

dotnet app.dll也是执行程序:

4.测试(dotnet test)

这里新建一个文件夹及项目。

新建测试项目:dotnet new xunit。

新建好项目后可以在里面添加测试方法,这里直接运行测试。

dotnet restore

dotnet test

5.发布(dotnet publish)

发布项目使其可以跨平台运行。

dotnet publish默认发布。

发布后定位到publish目录,使用dotnet app.dll执行应用。

下面来跨平台发布。

打开app.csproj 在PropertyGroup节点里加入 <RuntimeIdentifiers>win10-x64;ubuntu.14.04-x64</RuntimeIdentifiers>

首先我们要dotnet restore。还原的时间可能会有些久,需耐心等待一下。

dotnet publish -r win10-x64

这里发布后,可以直接定位到发布publish目录,执行 app.exe 即可。

dotnet publish -r ubuntu.14.04-x64

将publish 文件夹上传至Linux系统,设置App的权限为可执行,然后./app就可以运行了。

dotnet publish –r:指定RuntimeIdentifiers节点里系统ID。

从新建到发布实战dotnet命令,对dotnet命令更加了解。


nuget.config的引用
https://docs.microsoft.com/zh-cn/nuget/reference/nuget-config-file

name
dotnet restore – 恢复项目的依赖项和工具。

摘要
.NET Core 2.x
.NET Core 1.x

dotnet restore [<ROOT>] [--configfile] [--disable-parallel] [--force] [--ignore-failed-sources] [--no-cache]
    [--no-dependencies] [--packages] [-r|--runtime] [-s|--source] [-v|--verbosity]
dotnet restore [-h|--help]

描述

dotnet restore 命令使用 NuGet 还原依赖项以及在 project 文件中指定的特定于项目的工具。 默认情况下会并行执行对依赖项和工具的还原。

备注

从 .NET Core 2.0 开始,无需运行 dotnet restore,因为它由所有需要还原的命令隐式运行,如 dotnet newdotnet builddotnet run。 在执行显式还原有意义的某些情况下,它仍然是有效的命令,例如 Visual Studio Team Services 中的持续集成生成中,或在需要显式控制还原发生时间的生成系统中。

为了还原依赖项,NuGet 需要包所在的源。 通常通过 NuGet.config 配置文件提供源。 安装 CLI 工具时提供一个默认的配置文件。 可以通过在项目目录中创建自己的 NuGet.config 文件来指定其他源。也可以在命令提示符处指定每次调用的其他源。

对于依赖项,使用 --packages 参数指定还原操作期间放置还原包的位置。 如未指定,将使用默认的 NuGet 包缓存,可在所有操作系统上的用户主目录中的 .nuget/packages 目录找到它。 例如 Linux 上的 /home/user1 或 Windows 上的 C:\Users\user1。

对于特定于项目的工具,dotnet restore 首先还原打包工具所在的包,然后继续还原 project 文件中指定的工具依赖项。

dotnet restore 命令的行为会受 Nuget.Config 文件(如果有)中某些设置的影响。 例如,在 NuGet.Config 中设置 globalPackagesFolder 会将还原的 NuGet 包置于指定的文件夹中。 这是在 dotnet restore 命令中指定 --packages 选项的替代方法。 有关详细信息,请参阅 NuGet.Config reference(NuGet.Config 引用)。

隐式 dotnet restore

从 .Net Core 2.0 开始,当发出下列命令时,如有必要,将隐式运行 dotnet restore

在大多数情况下,不再需要显式使用 dotnet restore 命令。

有时,隐式运行 dotnet restore 可能不方便。 例如,某些自动化系统(如生成系统)需要显式调用 dotnet restore,以控制还原发生的时间,以便可以控制网络使用量。 要防止隐式运行 dotnet restore,可以通过上述任意命令使用 --no-restore 标记以禁用隐式还原。

参数

ROOT

要还原的项目文件的可选路径。

选项

--configfile <FILE>

供还原操作使用的 NuGet 配置文件 (NuGet.config)。

--disable-parallel

禁用并行还原多个项目。

--force

强制解析所有依赖项,即使上次还原已成功,也不例外。 指定此标记等同于删除 project.assets.json 文件。

-h|--help

打印出有关命令的简短帮助。

--ignore-failed-sources

如果存在符合版本要求的包,则源失败时警告。

--no-cache

指定不缓存包和 HTTP 请求。

--no-dependencies

当使用项目到项目 (P2P) 引用还原项目时,还原根项目,不还原引用。

--packages <PACKAGES_DIRECTORY>

指定还原包的目录。

-r|--runtime <RUNTIME_IDENTIFIER>

指定程序包还原的运行时。 这用于还原 .csproj 文件中的 <RuntimeIdentifiers> 标记中未显式列出的运行时的程序包。 有关运行时标识符 (RID) 的列表,请参阅 RID 目录。 通过多次指定此选项提供多个 RID。

-s|--source <SOURCE>

指定要在还原操作期间使用的 NuGet 包源。 此设置会替代 NuGet.config 文件中指定的所有源。多次指定此选项可以提供多个源。

--verbosity <LEVEL>

设置命令的详细级别。 允许使用的值为 q[uiet]m[inimal]n[ormal]d[etailed]diag[nostic]

dotnet test

  • :✓ .NET Core SDK 1.x .NET Core SDK 2.0

name

dotnet test – 用于执行单元测试的 .NET 测试驱动程序。

摘要

console复制

dotnet test [<PROJECT>] [-a|--test-adapter-path] [--blame] [-c|--configuration] [--collect] [-d|--diag] [-f|--framework] [--filter]
    [-l|--logger] [--no-build] [--no-restore] [-o|--output] [-r|--results-directory] [-s|--settings] [-t|--list-tests] [-v|--verbosity]
dotnet test [-h|--help]

描述

dotnet test 命令用于执行给定项目中的单元测试。 dotnet test 命令启动为项目指定的测试运行程序控制台应用程序。 测试运行程序执行为单元测试框架(例如 MSTest、NUnit 或 xUnit)定义的测试,并报告每个测试是否成功。 测试运行程序和单元测试库打包为 NuGet 包并还原为该项目的普通依赖项。

测试项目使用普通 <PackageReference> 元素指定测试运行程序,如下方示例项目文件所示:

XML复制

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
    <PackageReference Include="xunit" Version="2.2.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
  </ItemGroup>

</Project>

自变量

PROJECT

指向测试项目的路径。 如未指定,则默认为当前目录。

选项

-a|--test-adapter-path <PATH_TO_ADAPTER>

在测试运行中使用来自指定路径的自定义测试适配器。

--blame

在意见模式中运行测试。 此选项有助于隔离导致测试主机出现故障的有问题的测试。 它会在当前目录中创建一个输出文件 (Sequence.xml),其中捕获了故障前的测试执行顺序。

-c|--configuration {Debug|Release}

定义生成配置。 默认值为 Debug,但项目配置可以替代此默认 SDK 设置。

--collect <DATA_COLLECTOR_FRIENDLY_NAME>

为测试运行启用数据收集器。 有关详细信息,请参阅监视和分析测试运行

-d|--diag <PATH_TO_DIAGNOSTICS_FILE>

启用测试平台的诊断模式,并将诊断消息写入指定文件。

-f|--framework <FRAMEWORK>

查找特定框架的测试二进制文件。

--filter <EXPRESSION>

使用给定表达式筛选掉当前项目中的测试。 有关详细信息,请参阅筛选选项详细信息部分。 若要获取使用选择性单元测试筛选的其他信息和示例,请参阅运行选择性单元测试

-h|--help

打印出有关命令的简短帮助。

-l|--logger <LoggerUri/FriendlyName>

指定测试结果记录器。

--no-build

不在运行测试项目之前生成它。 还隐式设置 --no-restore 标记。

--no-restore

运行此命令时不执行隐式还原。

-o|--output <OUTPUT_DIRECTORY>

查找要运行的二进制文件的目录。

-r|--results-directory <PATH>

用于放置测试结果的目录。 如果指定的目录不存在,则会创建该目录。

-s|--settings <SETTINGS_FILE>

运行测试时要使用的设置。

-t|--list-tests

列出当前项目中发现的所有测试。

-v|--verbosity <LEVEL>

设置命令的详细级别。 允许使用的值为 q[uiet]m[inimal]n[ormal]d[etailed]diag[nostic]

示例

运行当前目录所含项目中的测试:

dotnet test

运行 test1 项目中的测试:

dotnet test ~/projects/test1/test1.csproj

在当前目录运行项目中的测试,并以 trx 格式生成测试结果文件:

dotnet test --logger:trx

筛选选项详细信息

--filter <EXPRESSION>

<Expression> 格式为 <property><operator><value>[|&<Expression>]

<property>Test Case 的特性。 下面介绍了常用单元测试框架支持的属性:

测试框架支持的属性
MSTestFullyQualifiedNamenameClassName优先级TestCategory 
xUnitFullyQualifiedNameDisplayName特征 

<operator> 说明了属性和值之间的关系:

运算符函数
=完全匹配
!=非完全匹配
~包含

<value> 是字符串。 所有查找都不区分大小写。

不含 <operator> 的表达式自动被视为 FullyQualifiedName 属性上的 contains(例如,dotnet test --filter xyzdotnet test --filter FullyQualifiedName~xyz 相同)。

表达式可与条件运算符结合使用:

运算符函数
|
&AND

使用条件运算符时,可以用括号将表达式括起来(例如,(Name~TestMethod1) | (Name~TestMethod2))。

若要获取使用选择性单元测试筛选的其他信息和示例,请参阅运行选择性单元测试

请参阅

dotnet core 命令

dotnet

dotnet命令主要是用来查看一些基本的信息,如平台、版本号等。经常会用到的参数有–version,–info,–help,下面依次运行下看看输出

dotnet –version
1.0.0-preview2-003121
dotnet –info
.NET Command Line Tools (1.0.0-preview2-003121)

Product Information:
Version: 1.0.0-preview2-003121
Commit SHA-1 hash: 1e9d529bc5

Runtime Environment:
OS Name: Mac OS X
OS Version: 10.11
OS Platform: Darwin
RID: osx.10.11-x64
dotnet –help
.NET Command Line Tools (1.0.0-preview2-003121)
Usage: dotnet [host-options] [command] [arguments] [common-options]

Arguments:
[command] The command to execute
[arguments] Arguments to pass to the command
[host-options] Options specific to dotnet (host)
[common-options] Options common to all commands

Common options:
-v|–verbose Enable verbose output
-h|–help Show help

Host options (passed before the command):
-v|–verbose Enable verbose output
–version Display .NET CLI Version Number
–info Display .NET CLI Info

Common Commands:
new Initialize a basic .NET project
restore Restore dependencies specified in the .NET project
build Builds a .NET project
publish Publishes a .NET project for deployment (including the runtime)
run Compiles and immediately executes a .NET project
test Runs unit tests using the test runner specified in the project
pack Creates a NuGet package

dotnet new

dotnet new命令用来创建一个.net core项目,该命令包含两个选项,分别是-t(或–type)和-l(或-lang),用来指定项目类型和编程语言。

-l, –lang [C#|F#]
-l的默认值是c#,也可以设置为f#。VB的话应该很快就能支持了。

-t, –type [console|web|lib|xunittest]
-t的默认值是concole,控制台项目。其它几个参数分别代表web项目,类库项目和测试项目。例如:dotnet new命令会创建一个控制台项目,dotnet new -t web会创建一个web项目(asp.net mvc)。

dotnet restore

dotnet restore [–source] [–packages] [–disable-parallel] [–fallbacksource] [–configfile]
[–verbosity] []
dotnet restore命令通过NuGet来下载定义在project.json文件中的依赖,然后放到用户目录下的.nuget/packages文件夹中。默认情况下,下载依赖组建的过程是并行进行的。
–packages选项可以指定存放已下载组件的位置,默认是用户目录下的.nuget/packages文件夹。
–disable-parallel选项用来禁用并行下载。
–configfile选项用来指定使用哪个NuGet.config文件。
dotnet restore命令运行完毕后,会生成project.lock.json文件。

dotnet build

dotnet build [–output] [–build-base-path] [–framework] [–configuration] [–runtime] [–version-suffix]
[–build-profile] [–no-incremental] [–no-dependencies] []
dotnet build命令将项目中的所有源代码文件和依赖的组件编译为二进制的dll文件。该命令会读取project.lock.json,如果项目中找不到该文件,则需要先运行dotnet restore命令。
执行完dotnet build命令后,会在bin/Debug/netcoreapp1.0文件夹下生成.dll文件和.pbd文件等,例如:

bash-3.2$ ls -al bin/Debug/netcoreapp1.0/
total 80
drwxr-xr-x 11 jingjing staff 374 9 6 22:08 .
drwxr-xr-x 6 jingjing staff 204 9 6 21:52 ..
-rw-r–r–@ 1 jingjing staff 6148 9 6 23:13 .DS_Store
-rwxr–r– 1 jingjing staff 1636 9 5 22:38 app.deps.json
-rwxr–r– 1 jingjing staff 4608 9 5 22:38 app.dll
-rwxr–r– 1 jingjing staff 496 9 5 22:38 app.pdb
-rwxr–r– 1 jingjing staff 107 9 5 22:38 app.runtimeconfig.dev.json
-rwxr–r– 1 jingjing staff 118 9 5 22:38 app.runtimeconfig.json
-rwxr–r– 1 jingjing staff 3584 9 5 22:05 library.dll
-rwxr–r– 1 jingjing staff 452 9 5 22:05 library.pdb
drwxr-xr-x 10 jingjing staff 340 9 6 22:08 publish

dotnet test

dotnet test [–configuration] [–output] [–build-base-path] [–framework] [–runtime] [–no-build] [–parentProcessId]
[–port] []
dotnet test命令用来运行单元测试项目中的测试代码,单元测试项目需要依赖一个单元测试框架(如nunit或xunit)以及对应的单元测试运行器,单元测试运行器在project.json文件中通过testRunner节点来指定。下面是一个使用xunit作为单元测试框架的项目的project.json文件

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable"
  },
  "dependencies": {
    "System.Runtime.Serialization.Primitives": "4.1.1",
    "xunit": "2.1.0",
    "dotnet-test-xunit": "1.0.0-rc2-192208-24"
  },
  "testRunner": "xunit",
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        }
      },
      "imports": [
        "dotnet5.4",
        "portable-net451+win8"
      ]
    }
  }
}

其中,”testRunner”: “xunit”指明了需要的单元测试运行器。

dotnet run

dotnet run [–framework] [–configuration] [–project] [–help] [–]
dotnet run命令是一个比较便捷的运行代码的命令。它会编译代码,输出信息,并运行代码。

dotnet pack

dotnet pack [–output] [–no-build] [–build-base-path] [–configuration] [–version-suffix] []
dotnet pack命令编译代码并生成一个NuGet包,具体来说就是在bin\Debug目录下生成一个.nupkg文件和一个.symbols.nupkg文件。

dotnet publish

dotnet publish [–framework] [–runtime] [–build-base-path] [–output] [–version-suffix] [–configuration] []
dotnet publish命令会编译代码,然后读取project.json文件中定义的所有依赖组件,最后将这些东西输出到一个文件夹中。生成的文件默认会输出到\bin\Debug\netcoreapp1.0\publish中,你可以通过-o或–output选项来修改输出位置。当你需要发布你的代码时,该命令的输出文件将是你所需要的全部文件。

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表评论

电子邮件地址不会被公开。