이 문서의 적용 대상: ✔️ .NET 6 SDK 이상 버전
이름
dotnet build - 프로젝트, 솔루션 또는 파일 기반 앱 및 모든 종속성을 빌드합니다.
개요
dotnet build [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>] [-bl|--binaryLogger:<FILE>]
[-c|--configuration <CONFIGURATION>] [--disable-build-servers]
[-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--no-dependencies] [--no-incremental] [--no-restore] [--nologo]
[--no-self-contained] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>]
[-p|--property:<PROPERTYNAME>=<VALUE>] [-r|--runtime <RUNTIME_IDENTIFIER>]
[--sc|--self-contained] [--source <SOURCE>]
[--tl:[auto|on|off]] [ --ucr|--use-current-runtime]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet build -h|--help
설명
이 dotnet build 명령은 프로젝트, 솔루션 또는 파일 기반 앱 및 해당 종속성을 이진 파일 집합으로 빌드합니다. 이진 파일에는 확장명이 .dll인 IL(중간 언어) 파일의 프로젝트 코드가 포함됩니다. 프로젝트 형식 및 설정에 따라 다음과 같은 다른 파일이 포함될 수도 있습니다.
- 애플리케이션을 실행하는 데 사용할 수 있는 실행 파일입니다.
- 확장명이 .pdb인 디버깅에 사용되는 기호 파일
- 애플리케이션 또는 라이브러리의 종속성을 나열하는 .deps.json 파일
- 애플리케이션의 공유 런타임 및 해당 버전을 지정하는 .runtimeconfig.json 파일
- 프로젝트 참조 또는 NuGet 패키지 참조를 통해 프로젝트가 종속된 다른 라이브러리
.NET Core 3.0 이상을 대상으로 하는 실행 가능 프로젝트의 경우 라이브러리 종속성이 출력 폴더에 복사됩니다. 따라서 웹 프로젝트 등에 다른 게시 특정 논리가 없는 경우 빌드 출력을 배포할 수 있습니다.
암시적 복원
빌드하려면 애플리케이션의 종속성을 나열하는 project.assets.json 파일이 필요합니다.
dotnet restore가 실행되면 파일이 만들어집니다. 자산 파일이 없으면 도구로 참조 어셈블리를 확인할 수 없으므로 오류가 발생합니다.
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와 같이 짧은 형식의 옵션은 지원되지 않습니다.
실행 파일 또는 라이브러리 출력
프로젝트가 실행 가능한지 아닌지 여부는 프로젝트 파일의 <OutputType> 속성으로 확인할 수 있습니다. 다음 예제에서는 실행 코드를 생성하는 프로젝트를 보여 줍니다.
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
라이브러리를 생성하려면 <OutputType> 속성을 생략하거나 속성 값을 Library로 변경합니다. 라이브러리의 IL DLL은 진입점을 포함하지 않으며 실행할 수 없습니다.
MSBuild
dotnet build 는 MSBuild를 사용하여 프로젝트, 솔루션 또는 파일 기반 앱을 빌드합니다. 병렬 빌드와 증분 빌드를 모두 지원합니다. 자세한 내용은 증분 빌드를 참조하세요.
해당 옵션 외에도, dotnet build 명령은 속성 설정에 대한 -p 또는 로거를 정의하는 -l처럼 MSBuild 옵션도 수락합니다. 이러한 옵션에 대한 자세한 내용은 MSBuild 명령줄 참조를 확인하세요. 또는 dotnet msbuild 명령을 사용할 수도 있습니다.
참고 항목
dotnet build가 dotnet run에 의해 자동으로 실행되면 -property:property=value와 같은 인수가 적용되지 않습니다.
dotnet build 실행은 dotnet msbuild -restore 실행과 같지만 출력의 기본 세부 정보 표시가 다릅니다.
워크로드 매니페스트 다운로드
이 명령을 실행하면 워크로드에 대한 광고 매니페스트의 비동기 백그라운드 다운로드가 시작됩니다. 이 명령이 완료될 때 다운로드가 계속 실행되면 다운로드가 중지됩니다. 자세한 내용은 광고 매니페스트를 참조하세요.
인수
PROJECT | SOLUTION | FILE
작업할 프로젝트 또는 솔루션 또는 C#(파일 기반 앱) 파일입니다. 파일이 지정되지 않은 경우 MSBuild는 현재 디렉터리에서 프로젝트 또는 솔루션을 검색합니다.
PROJECTC#, F#또는 Visual Basic 프로젝트 파일의 경로 및 파일 이름 또는 C#, F# 또는 Visual Basic 프로젝트 파일이 포함된 디렉터리의 경로입니다.SOLUTION솔루션 파일의 경로 및 파일 이름(.sln 또는 .slnx 확장명) 또는 솔루션 파일이 포함된 디렉터리의 경로입니다.FILE는 .NET 10에 추가된 인수입니다. 파일 기반 앱의 경로 및 파일 이름입니다. 파일 기반 앱은 해당 프로젝트(.csproj) 파일 없이 빌드되고 실행되는 단일 파일 내에 포함됩니다. 자세한 내용은 파일 기반 C# 앱 빌드를 참조하세요.
옵션
-
-a|--arch <ARCHITECTURE>대상 아키텍처를 지정합니다. 이는 제공된 값이 기본 RID와 결합되는 RID(런타임 식별자)를 설정하는 약식 구문입니다. 예를 들어,
win-x64머신에서--arch x86을 지정하면 RID가win-x86으로 설정됩니다. 이 옵션을 사용하는 경우-r|--runtime옵션을 사용하지 마세요. .NET 6 미리 보기 7 이후 사용 가능합니다. -
--artifacts-path <ARTIFACTS_DIR>실행된 명령의 모든 빌드 출력 파일은 지정된 경로 아래의 하위 폴더에서 프로젝트로 구분됩니다. 자세한 내용은 아티팩트 출력 레이아웃을 참조 하세요. .NET 8 SDK부터 사용할 수 있습니다.
-bl|--binaryLogger:<FILE>이진 로거를 사용하도록 설정하고 필요에 따라 출력 파일 이름을 지정합니다.
파일 이름이 제공되지 않으면 기본값은msbuild.binlog현재 디렉터리에 있습니다.이진 로그는 자세한 빌드 정보를 포함하며 MSBuild 구조적 로그 뷰어를 사용하여 열 수 있습니다.
dotnet build -bl dotnet build -bl:build-log.binlog-
-c|--configuration <CONFIGURATION>빌드 구성을 정의합니다. 대부분의 프로젝트에 대한 기본값은
Debug이지만 프로젝트의 빌드 구성 설정을 재정의할 수 있습니다. -
--disable-build-servers명령이 영구 빌드 서버를 무시하도록 합니다. 이 옵션은 처음부터 빌드하도록 하는 모든 빌드 캐싱을 사용하지 않도록 설정하는 일관된 방법을 제공합니다. 캐시에 의존하지 않는 빌드는 어떤 이유로 캐시가 손상되거나 올바르지 않을 때 유용합니다. .NET 7 SDK부터 사용할 수 있습니다.
-f|--framework <FRAMEWORK>특정 프레임워크에 대해 컴파일합니다. 프레임워크는 프로젝트 파일에 정의해야 합니다. 예:
net7.0,net462.--force마지막 복원이 성공한 경우에도 모든 종속성을 강제 확인합니다. 이 플래그를 지정하는 것은 project.assets.json 파일을 삭제하는 것과 같습니다.
-
--interactive명령이 중지되고 사용자 입력 또는 작업을 대기할 수 있도록 허용합니다. 예를 들어 인증을 완료합니다.
--no-dependencies프로젝트 간(P2P) 참조를 무시하고 지정된 루트 프로젝트만 빌드합니다.
--no-incremental빌드를 증분 빌드에 안전하지 않은 것으로 표시합니다. 이 플래그로 증분 컴파일이 해제되고 프로젝트 종속성 그래프를 강제로 완전히 다시 빌드합니다.
--no-restore빌드하는 동안 암시적 복원을 실행하지 않습니다.
--nologo시작 배너 또는 저작권 메시지를 표시하지 않습니다.
-
--no-self-contained애플리케이션을 프레임워크 종속 애플리케이션으로 게시합니다. 애플리케이션을 실행하려면 대상 컴퓨터에 호환되는 .NET 런타임을 설치해야 합니다.
-o|--output <OUTPUT_DIRECTORY>빌드된 이진 파일을 배치할 디렉터리입니다. 지정하지 않으면 기본 경로는
./bin/<configuration>/<framework>/입니다.TargetFrameworks속성을 통해 여러 개의 대상 프레임워크가 지정된 프로젝트의 경우 이 옵션을 지정할 때--framework도 정의해야 합니다..NET 7.0.200 SDK 이상
솔루션에서 이 명령을 실행할 때
--output옵션을 지정하면 출력 경로의 의미 체계가 명확하지 않아 CLI에서 경고(오류 7.0.200)를 내보냅니다. 빌드된 모든 프로젝트의 모든 출력이 다중 대상 프로젝트와 호환되지 않는 지정된 디렉터리에 복사되고 서로 다른 버전의 직접 및 전이적 종속성이 있는 프로젝트로 복사되므로--output옵션이 허용되지 않습니다. 자세한 내용은 솔루션 수준--output옵션이 빌드 관련 명령에 더 이상 유효하지 않음을 참조하세요.
-
--os <OS>대상 운영 체제(OS)를 지정합니다. 이는 제공된 값이 기본 RID와 결합되는 RID(런타임 식별자)를 설정하는 약식 구문입니다. 예를 들어,
win-x64머신에서--os linux을 지정하면 RID가linux-x64으로 설정됩니다. 이 옵션을 사용하는 경우-r|--runtime옵션을 사용하지 마세요. .NET 6부터 사용할 수 있습니다. -p|--property:<PROPERTYNAME>=<VALUE>하나 이상의 MSBuild 속성을 설정합니다. 세미콜론을 사용하거나 옵션을 반복하여 구분된 여러 속성을 지정합니다.
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>-r|--runtime <RUNTIME_IDENTIFIER>대상 런타임을 지정합니다. RID(런타임 식별자) 목록은 RID 카탈로그를 참조하세요. 이 옵션을 .NET 6 SDK와 함께 사용하는 경우
--self-contained또는--no-self-contained도 사용해야 합니다. 지정하지 않으면 기본값은 현재 OS 및 아키텍처에 맞게 빌드하는 것입니다.-
--sc|--self-contained대상 컴퓨터에 런타임을 설치할 필요가 없도록 애플리케이션을 사용하여 .NET 런타임을 게시합니다.
--source <SOURCE>복원 작업 중에 사용할 NuGet 패키지 소스의 URI입니다.
-
--tl:[auto|on|off]빌드 출력에 터미널 로거 를 사용할지 여부를 지정합니다. 기본값은
auto(으)로 터미널 로깅을 사용하도록 설정하기 전에 먼저 환경을 확인하는 것입니다. 환경 검사는 터미널이 최신 출력 기능을 사용할 수 있고 새 로거를 사용하도록 설정하기 전에 리디렉션된 표준 출력을 사용하지 않는지 확인합니다.on은(는) 환경 검사를 건너뛰고 터미널 로깅을 사용하도록 설정합니다.off은(는) 환경 검사를 건너뛰고 기본 콘솔 로거를 사용합니다.터미널 로거는 복원 단계와 빌드 단계를 보여줍니다. 각 단계에서 현재 빌드 프로젝트는 터미널 아래쪽에 표시됩니다. 빌드 중인 각 프로젝트는 현재 빌드 중인 MSBuild 대상과 해당 대상에 소요된 시간을 모두 출력합니다. 이 정보를 검색하여 빌드에 대해 자세히 알아볼 수 있습니다. 프로젝트 빌드가 완료되면 다음을 캡처하는 단일 "빌드 완료" 섹션이 작성됩니다.
- 빌드된 프로젝트의 이름입니다.
- 대상 프레임워크(다중 대상인 경우)입니다.
- 해당 빌드의 상태입니다.
- 해당 빌드의 기본 출력(하이퍼링크됨)입니다.
- 해당 프로젝트에 대해 생성된 모든 진단입니다.
이 옵션은 .NET 8부터 사용할 수 있습니다.
-
--ucr|--use-current-runtime현재 런타임을 대상 런타임으로 사용합니다.
-
-v|--verbosity <LEVEL>명령의 세부 정보 표시 수준을 설정합니다. 허용되는 값은
q[uiet],m[inimal],n[ormal],d[etailed],diag[nostic]입니다. 자세한 내용은 LoggerVerbosity를 참조하세요. --version-suffix <VERSION_SUFFIX>프로젝트를 빌드할 때 사용할
$(VersionSuffix)속성의 값을 설정합니다.$(Version)속성이 설정되지 않은 경우에만 작동합니다. 그런 다음,$(Version)이 대시로 구분하여$(VersionPrefix)와 결합된$(VersionSuffix)로 설정됩니다.-
-?|-h|--help명령을 사용하는 방법에 대한 설명을 출력합니다.
예제
프로젝트 및 해당 종속성을 빌드합니다.
dotnet build파일 기반 앱 빌드:
dotnet build MyProject.cs파일 기반 앱 지원이 .NET SDK 10.0.100에 추가되었습니다.
릴리스 구성을 사용하여 프로젝트 및 해당 종속성을 빌드합니다.
dotnet build --configuration Release특정 런타임에 대한 프로젝트 및 해당 종속성을 빌드합니다(이 예제에서는 Linux).
dotnet build --runtime linux-x64프로젝트를 빌드하고 복원 작업 중에 지정된 NuGet 패키지 소스를 사용합니다.
dotnet build --source c:\packages\mypackages-pMSBuild 옵션을 사용하여 프로젝트를 빌드하고 버전 1.2.3.4를 빌드 매개 변수로 설정합니다.dotnet build -p:Version=1.2.3.4
.NET