이 문서는 6개 SDK 이상 버전에 .NET: ✔️ 적용됩니다.
이름
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 옵션을 사용합니다.
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>실행된 명령의 모든 빌드 출력 파일은 지정된 경로 아래의 하위 폴더에서 프로젝트로 구분됩니다. 자세한 내용은 아티팩트 출력 레이아웃을 참조 하세요. 이 옵션 및 제공된 값은 다른
dotnet명령의 출력(예: 사용dotnet build --no-restore시 및dotnet publish --no-build.)에 따라 달라지는 모든dotnet명령에서 명시적으로 연계되어야 합니다. .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