이 문서의 적용 대상: ✔️ .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 명령은 Azure DevOps Services의 연속 통합 빌드 또는 복원 발생 시점을 명시적으로 제어해야 하는 빌드 시스템과 같이 명시적으로 복원이 가능한 특정 시나리오에서 여전히 유용합니다.
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 미리 보기 7 이후 사용 가능합니다. -
--artifacts-path <ARTIFACTS_DIR>실행된 명령의 모든 빌드 출력 파일은 지정된 경로 아래의 하위 폴더에서 프로젝트로 구분됩니다. 자세한 내용은 아티팩트 출력 레이아웃참조하세요. .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명령이 중지되고 사용자 입력 또는 작업을 대기할 수 있도록 허용합니다. 예를 들어 인증을 완료합니다.
--launch-profile <NAME>애플리케이션을 시작할 때 사용할 시작 프로필(있는 경우)의 이름입니다. 시작 프로필은 launchSettings.json 파일에서 정의되고 일반적으로
Development,Staging및Production이라고 합니다. 자세한 내용은 여러 환경 사용을 참조하세요.--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의 약어로 가정합니다.-p에 대해--project를 유연하게 사용하는 기능은 .NET 7에서 단계적으로 사용이 중단됩니다.--property:<NAME>=<VALUE>하나 이상의 MSBuild 속성을 설정합니다. 세미콜론을 사용하거나 옵션을 반복하여 구분된 여러 속성을 지정합니다.
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>약식
-p는--property대신 사용할 수 있습니다. 옵션에 대해 제공된 인수에=이 포함된 경우-p는--property의 약어로 수락됩니다. 포함된 경우 명령은-p를--project의 약어로 가정합니다.MSBuild 속성을 설정하는 대신 애플리케이션에
--property를 전달하려면--구문 구분 기호 뒤에 옵션을 제공합니다. 예를 들면 다음과 같습니다.dotnet run -- --property name=value-r|--runtime <RUNTIME_IDENTIFIER>패키지를 복원할 대상 런타임을 지정합니다. RID(런타임 식별자) 목록은 RID 카탈로그를 참조하세요.
-
--sc|--self-contained대상 컴퓨터에 런타임을 설치할 필요가 없도록 애플리케이션을 사용하여 .NET 런타임을 게시합니다.
-
--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현재 디렉터리에서 프로젝트를 실행하여 릴리스 구성을 지정합니다.
dotnet run --property:Configuration=Release현재 디렉터리에 있는 프로젝트를 실행합니다. 비어 있는
--help옵션을 사용하므로 이 예제의--인수는 애플리케이션에 전달됩니다.dotnet run --configuration Release -- --help최소 출력만 표시하는 현재 디렉터리의 프로젝트에 대한 종속성 및 도구를 복원한 다음, 프로젝트를 실행합니다.
dotnet run --verbosity m지정된 프레임워크를 사용하여 현재 디렉터리에서 프로젝트를 실행하고 애플리케이션에 인수를 전달합니다.
dotnet run -f net6.0 -- arg1 arg2다음 예제에서는 3개의 인수가 애플리케이션에 전달됩니다. 한 인수는 다음을 사용하여
-전달되고 두 인수는 다음 후에--전달됩니다.dotnet run -f net6.0 -arg1 -- arg2 arg3
.NET