本文适用于:✔️ .NET 6 SDK 及更高版本
“属性”
dotnet run - 无需任何显式编译或启动命令即可运行源代码。
摘要
dotnet run [<applicationArguments>]
[-a|--arch <ARCHITECTURE>] [--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [-e|--environment <KEY=VALUE>]
[--file <FILE_PATH>] [-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--launch-profile <NAME>] [--no-build] [--no-dependencies]
[--no-launch-profile] [--no-restore] [--os <OS>] [--project <PATH>]
[-r|--runtime <RUNTIME_IDENTIFIER>] [--tl:[auto|on|off]]
[-v|--verbosity <LEVEL>] [[--] [application arguments]]
dotnet run -h|--help
描述
dotnet run 命令为从源代码使用一个命令运行应用程序提供了一个方便的选项。 这对从命令行中进行快速迭代开发很有帮助。 命令取决于生成代码的 dotnet build 命令。 生成的任何要求 dotnet run 也适用于此版本。
注意
dotnet run 不遵守 /property:property=value 等参数,dotnet build 遵守这些参数。
输出文件会写入到默认位置,即 bin/<configuration>/<target>。 例如,如果具有 netcoreapp2.1 应用程序并且运行 dotnet run,则输出置于 bin/Debug/netcoreapp2.1。 将根据需要覆盖文件。 临时文件将置于 obj 目录。
如果该项目指定多个框架,在不使用 dotnet run 选项指定框架时,执行 -f|--framework <FRAMEWORK> 将导致错误。
在项目上下文,而不是生成程序集中使用 dotnet run 命令。 如果尝试改为运行依赖于框架的应用程序 DLL,则必须在不使用命令的情况下使用 dotnet。 例如,若要运行 myapp.dll,请使用:
dotnet myapp.dll
有关驱动程序的详细信息 dotnet ,请参阅 .NET CLI 概述。
若要运行应用程序,dotnet run 命令需从 NuGet 缓存解析共享运行时之外的应用程序依赖项。 因为它使用缓存的依赖项,因此,不推荐在生产中使用 dotnet run 来运行应用程序。 相反,使用 命令dotnet publish,并部署已发布的输出。
隐式还原
无需运行 dotnet restore,因为它由所有需要还原的命令隐式运行,如 dotnet new、dotnet build、dotnet run、dotnet test、dotnet publish 和 dotnet pack。 若要禁用隐式还原,请使用 --no-restore 选项。
在执行显式还原有意义的某些情况下,例如 dotnet restore中,或在需要显式控制还原发生时间的生成系统中,dotnet restore 命令仍然有用。
有关如何使用 NuGet 源的信息,请参阅 dotnet restore 文档。
以长格式传入时,此命令支持 dotnet restore 选项(例如,--source)。 不支持缩写选项,例如 -s。
工作负载清单下载
运行此命令时,它将为工作负载启动播发清单的异步后台下载。 如果此命令完成后,下载仍在运行,则将停止下载。 有关详细信息,请参阅播发清单。
Arguments
<applicationArguments>
传递给正在运行的应用程序的参数。
任何无法识别的参数 dotnet run 都传递给应用程序。 若要将应用程序的自变量与参数 dotnet run 分开,请使用 -- 该选项。
选项
--将参数分隔到正在运行的应用程序的参数的
dotnet run。 在此分隔符后的所有参数均传递给已运行的应用程序。
-a|--arch <ARCHITECTURE>指定目标体系结构。 这是用于设置运行时标识符 (RID) 的简写语法,其中提供的值与默认 RID 相结合。 例如,在
win-x64计算机上,指定--arch x86会将 RID 设置为win-x86。 如果使用此选项,请不要使用-r|--runtime选项。 从 .NET 6 Preview 7 开始提供。
--artifacts-path <ARTIFACTS_DIR>执行命令中的所有生成输出文件都将位于指定路径下的子文件夹中,由项目分隔。 有关详细信息,请参阅 Artifacts 输出布局。 自 .NET 8 SDK 起可用。
-c|--configuration <CONFIGURATION>定义生成配置。 大多数项目的默认配置为
Debug,但你可以覆盖项目中的生成配置设置。
--disable-build-servers强制运行命令以忽略任何永久性生成服务器。 此选项提供一种一致的方法来禁止对生成缓存的所有使用,这会强制从头开始生成。 当缓存可能由于某种原因而损坏或不正确时,不依赖缓存的生成非常有用。 自 .NET 7 SDK 起可用。
-e|--environment <KEY=VALUE>设置将由命令运行的进程中的指定环境变量。 指定的环境变量 不 应用于
dotnet run进程。通过此选项传递的环境变量优先于环境环境变量、System.CommandLine
env指令以及environmentVariables所选启动配置文件中的环境变量。 有关详细信息,请参阅环境变量。(已在 .NET SDK 9.0.200 中添加此选项。
-f|--framework <FRAMEWORK>使用指定框架生成并运行应用。 框架必须在项目文件中进行指定。
--file <FILE_PATH>要运行的基于文件的应用的路径。 如果未指定路径,则当前目录用于查找并运行文件。 有关基于文件的应用的详细信息,请参阅 生成基于文件的 C# 应用。
在 Unix 上,可以使用命令行上的源文件名称而不是
dotnet run命令行直接运行基于文件的应用。 首先,确保文件具有执行权限。 然后,添加 shebang 行#!作为文件的第一行,例如:#!/usr/bin/env dotnet run然后,可以直接从命令行运行该文件:
./ConsoleApp.cs.NET SDK 10.0.100 中引入。
--force强制解析所有依赖项,即使上次还原已成功,也不例外。 指定此标记等同于删除 project.assets.json 文件。
--interactive允许命令停止并等待用户输入或操作。 例如,完成身份验证。 自 .NET Core 3.0 SDK 起可用。
--launch-profile <NAME>启动应用程序时要使用的启动配置文件(若有)的名称。 启动配置文件在 launchSettings.json 文件中进行定义,通常称为 、
Development和Staging。 有关详细信息,请参阅使用多个环境。--no-build运行前不生成项目。 还将隐式设置
--no-restore标记。--no-cache跳过最新的检查,并在运行之前始终生成程序。
--no-dependencies当使用项目到项目 (P2P) 引用还原项目时,还原根项目,不还原引用。
--no-launch-profile不尝试使用 launchSettings.json 配置应用程序 。
--no-restore运行此命令时不执行隐式还原。
--no-self-contained将应用程序发布为依赖于框架的应用程序。 必须在目标计算机上安装兼容的 .NET 运行时才能运行应用程序。
--os <OS>指定目标操作系统 (OS)。 这是用于设置运行时标识符 (RID) 的简写语法,其中提供的值与默认 RID 相结合。 例如,在
win-x64计算机上,指定--os linux会将 RID 设置为linux-x64。 如果使用此选项,请不要使用-r|--runtime选项。 自 .NET 6 之后可用。
--project <PATH>指定要运行的项目文件的路径(文件夹名称或完整路径)。 如果未指定,则默认为当前目录。
从 .NET 6 SDK 开始,
-p的缩写--project已弃用。 在有限的时间内,-p尽管弃用警告,仍可用于--project。 如果为选项提供的参数不包含=,则命令将接受-p的短格式--project。 否则,命令会假设-p是--property的短格式。 在 .NET 7 中将逐渐淘汰这种灵活使用-p来表示--project的做法。--property:<NAME>=<VALUE>设置一个或多个 MSBuild 属性。 指定以分号分隔的多个属性,或通过重复该选项指定多个属性:
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>短格式
-p可用于--property。 如果为选项提供的参数包含=,则接受-p作为--property的短格式。 否则,命令会假设-p是--project的短格式。若要将
--property传递给应用程序而不是设置 MSBuild 属性,请在--语法分隔符后面提供该选项,例如:dotnet run -- --property name=value-r|--runtime <RUNTIME_IDENTIFIER>指定要为其还原包的目标运行时。 有关运行时标识符 (RID) 的列表,请参阅 RID 目录。
-sc|--self-contained使用应用程序发布 .NET 运行时,以便无需在目标系统上安装运行时。 默认值为
false。 但是,当面向 .NET 7 或更低版本时,默认值为true指定运行时标识符。
--tl:[auto|on|off]指定是否应将 终端记录器 用于生成输出。 默认值为
auto,它首先验证环境,然后再启用终端日志记录。 在启用新的记录器之前,环境检查会验证终端能否使用新式输出功能,并且不使用重定向的标准输出。on跳过环境检查并启用终端日志记录。off跳过环境检查并使用默认控制台记录器。终端记录器显示还原阶段,后跟生成阶段。 在每个阶段,当前生成项目显示在终端的底部。 每个正在生成的项目都会输出当前正在生成的 MSBuild 目标,以及在该目标上花费的时间。 可以搜索此信息以了解有关生成的详细信息。 项目生成完成后,将会编写一个“已完成生成”部分以捕获以下内容:
- 生成项目的名称。
- 目标框架(如果是多目标)。
- 该生成的状态。
- 该生成的主要输出(它设置了超链接)。
- 为该项目生成的任何诊断。
此选项从 .NET 8 开始可用。
-v|--verbosity <LEVEL>设置命令的详细级别。 允许使用的值为
q[uiet]、m[inimal]、n[ormal]、d[etailed]和diag[nostic]。 默认值为minimal。 有关详细信息,请参阅 LoggerVerbosity。
-?|-h|--help打印出有关如何使用命令的说明。
环境变量
可通过四种机制将环境变量应用于启动的应用程序:
- 运行命令时,作系统的环境环境变量。
- System.CommandLine
env指令,如[env:key=value]. 这些内容适用于整个过程dotnet run,而不仅仅是由dotnet run其运行的项目。 -
environmentVariables从项目-lp所选的启动配置文件 ()(如果有)。 这些内容适用于正在由其运行dotnet run的项目。 -
-e|--environmentCLI 选项值(在 .NET SDK 版本 9.0.200 中添加)。 这些内容适用于正在由其运行dotnet run的项目。
环境按与此列表相同的顺序构造,因此 -e|--environment 该选项具有最高优先级。
示例
运行当前目录中的项目:
dotnet run在当前目录中运行基于文件的指定应用:
dotnet run --file ConsoleApp.cs.NET SDK 10.0.100 中添加了基于文件的应用支持。
运行指定的项目:
dotnet run --project ./projects/proj1/proj1.csproj运行当前目录中的项目,并指定 Release 配置:
dotnet run --property:Configuration=Release运行当前目录中的项目(在本例中,
--help参数被传递到应用程序,因为使用了空白的--选项):dotnet run --configuration Release -- --help在仅显示最小输出的当前目录中还原项目的依赖项和工具,然后运行项目:
dotnet run --verbosity m使用指定的框架在当前目录中运行项目,并将参数传递给应用程序:
dotnet run -f net6.0 -- arg1 arg2在以下示例中,将三个参数传递给应用程序。 使用
-一个参数传递,两个参数在以下之后--传递:dotnet run -f net6.0 -arg1 -- arg2 arg3