다음을 통해 공유


MSBuild 명령줄 참조

MSBuild.exe 사용하여 프로젝트 또는 솔루션 파일을 빌드하는 경우 프로세스의 다양한 측면을 지정하는 여러 스위치를 포함할 수 있습니다.

모든 스위치는 -switch/switch두 가지 형식으로 제공됩니다. 설명서에는 -switch 양식만 표시됩니다. 스위치는 대/소문자를 구분하지 않습니다. Windows 명령 프롬프트가 아닌 셸에서 MSBuild를 실행하는 경우 스위치에 대한 인수 목록(세미콜론 또는 쉼표로 구분)에는 목록이 셸에서 해석되는 대신 MSBuild에 전달되도록 하려면 작은따옴표 또는 큰따옴표가 필요할 수 있습니다.

.NET CLI 명령은 dotnet build , dotnet publish, dotnet msbuild 및 관련 명령을이러한 스위치를 MSBuild에 전달하므로 이 참조는 해당 명령을 사용할 때 적용됩니다. 그러나 dotnet run 않습니다.

통사론

MSBuild.exe [Switches] [ProjectFile]

인수

논쟁 묘사
ProjectFile 지정한 프로젝트 파일에서 대상을 빌드합니다. 프로젝트 파일을 지정하지 않으면 MSBuild는 현재 작업 디렉터리에서 proj 끝나는 파일 이름 확장명을 검색하고 해당 파일을 사용합니다. 이 인수에 대한 Visual Studio 솔루션 파일을 지정할 수도 있습니다. Visual Studio 17.12 이상에서는 .slnx 솔루션 파일 형식과 .sln 형식이 지원됩니다. 동일한 솔루션에 대한 .sln.slnx 파일은 모두 동일한 디렉터리에 있을 수 있습니다. 둘 다 있는 경우 솔루션을 빌드할 중 하나를 명시적으로 지정해야 합니다.

스위치

다음 표의 첫 번째 열에는 각 스위치의 길고 짧은 형식이 표시됩니다. 두 양식 모두 동일합니다.

대괄호는 선택적 부분을 나타내고 중괄호는 사용자가 제공한 값을 나타낼 []{} 있습니다.

스위치 묘사
-detailedSummary[:{True or False}]

-ds[:{True or False}]
True경우 빌드된 구성 및 노드로 예약된 방법에 대한 자세한 정보를 빌드 로그 끝에 표시합니다.
-getItem:{itemName,...} 빌드를 실행하지 않고 평가 후 항목 또는 항목의 값을 작성하거나 -targets 옵션 또는 -getTargetResult 옵션을 사용하는 경우 빌드 후 값을 작성합니다.
-getProperty:{propertyName,...} 빌드를 실행하지 않고 평가 후 속성 또는 속성 값을 작성하거나 -targets 옵션 또는 -getTargetResult 옵션을 사용하는 경우 빌드 후 값을 작성합니다.
-getTargetResult:{targetName,...} 지정된 대상의 출력 값을 작성합니다.
-graphBuild[:{True or False}]

-graph[:{True or False}]
MSBuild가 프로젝트 그래프를 생성하고 빌드하도록 합니다. 그래프를 생성하려면 종속성을 형성하기 위한 프로젝트 참조를 식별해야 합니다. 해당 그래프를 빌드하려면 기존 MSBuild 예약과는 다른 프로젝트 참조를 참조하는 프로젝트 이전에 프로젝트 참조를 빌드하려고 시도합니다. MSBuild 16 이상이 필요합니다.
-help

/? 또는 -h
사용량 정보를 표시합니다. 다음 명령은 예제입니다.

msbuild.exe -?
-ignoreProjectExtensions: {extensions}

-ignore: {extensions}
빌드할 프로젝트 파일을 결정할 때 지정된 확장을 무시합니다. 다음 예제와 같이 세미콜론 또는 쉼표로 여러 확장을 구분합니다.

-ignoreprojectextensions:.vcproj,.sln
-inputResultsCaches[:{cacheFile; ...}]

-irc[:{cacheFile; ...}]
MSBuild에서 빌드 결과를 읽을 입력 캐시 파일의 세미콜론으로 구분된 목록입니다. -isolateProjects False설정하면 True.
-interactive[:{True or False}] 빌드의 작업이 사용자와 상호 작용할 수 있음을 나타냅니다. 대화형 작업이 필요하지 않은 자동화된 시나리오에서는 이 인수를 사용하지 마세요. -interactive 지정하는 것은 -interactive:true지정하는 것과 같습니다. 매개 변수를 사용하여 응답 파일에서 가져온 값을 재정의합니다.
-isolateProjects[:{True, MessageUponIsolationViolation, False}]

-isolate[:{True, MessageUponIsolationViolation, False}]
MSBuild가 각 프로젝트를 격리된 상태로 빌드하도록 합니다. MessageUponIsolationViolation(또는 Message짧은 형식)로 설정하면 -outputResultsCache 스위치가 제공된 경우 최상위 대상의 결과만 직렬화됩니다. 이 옵션은 부작용을 고려하지 않는 캐시된 대상에 대한 종속성으로 인해 잘못된 상태를 사용하여 종속성 프로젝트에서 격리 위반 대상의 가능성을 완화하는 것입니다. (예: 속성의 정의) 이 모드는 평가 시 프로젝트 그래프를 정적으로 검색할 수 있어야 하지만 대규모 프로젝트 집합을 빌드할 때 예약을 개선하고 메모리 오버헤드를 줄일 수 있으므로 더 제한적입니다.
-lowPriority[:{True or False}]

-low[:{True or False}]
MSBuild가 낮은 프로세스 우선 순위에서 실행되도록 합니다. -lowPriority 지정하는 것은 -lowPriority:True지정하는 것과 같습니다.
-maxCpuCount[:{number}]

-m[:{number}]
빌드할 때 사용할 최대 동시 프로세스 수를 지정합니다. 이 스위치를 포함하지 않으면 기본값은 1입니다. 값을 지정하지 않고 이 스위치를 포함하는 경우 MSBuild는 컴퓨터의 최대 프로세서 수를 사용합니다. 자세한 내용은 여러 프로젝트를 병렬 빌드하는참조하세요.

다음 예제에서는 세 개의 프로젝트를 동시에 빌드할 수 있는 세 개의 MSBuild 프로세스를 사용하여 빌드하도록 MSBuild에 지시합니다.

msbuild myproject.proj -maxcpucount:3
-noAutoResponse

-noautorsp
MSBuild.rsp 또는 Directory.Build.rsp 파일을 자동으로 포함하지 마세요.
-nodeReuse:{value}

-nr:{value}
MSBuild 노드의 재사용을 사용하거나 사용하지 않도록 설정합니다. 다음 값을 지정할 수 있습니다.

- True. 노드는 빌드가 완료된 후에도 유지되므로 후속 빌드에서 노드를 사용할 수 있습니다(기본값).
false- . 빌드가 완료된 후에도 노드는 유지되지 않습니다.

노드는 실행 중인 프로젝트에 해당합니다. -maxcpucount 스위치를 포함하는 경우 여러 노드를 동시에 실행할 수 있습니다.
-nologo 시작 배너 또는 저작권 메시지를 표시하지 마세요.
-preprocess[:{filepath}]

-pp[:{filepath}]
빌드 중에 가져올 모든 파일을 경계로 표시하여 집계된 단일 프로젝트 파일을 만듭니다. 이 스위치를 사용하여 가져올 파일, 파일을 가져오는 위치 및 빌드에 기여하는 파일을 보다 쉽게 확인할 수 있습니다. 이 스위치를 사용하면 프로젝트가 빌드되지 않습니다.

filepath지정하면 집계된 프로젝트 파일이 파일에 출력됩니다. 그렇지 않으면 출력이 콘솔 창에 표시됩니다.

Import 요소를 사용하여 프로젝트 파일을 다른 프로젝트 파일에 삽입하는 방법에 대한 자세한 내용은 Import 요소(MSBuild)방법:여러 프로젝트 파일에서 동일한 대상 사용.
-outputResultsCache[:{cacheFile}]

-orc[:{cacheFile}]
MSBuild가 빌드의 끝에 빌드 결과 캐시의 내용을 쓰는 출력 캐시 파일입니다. -isolateProjects False설정하면 True.
profileEvaluation:{file} MSBuild 평가를 프로파일하고 결과를 지정된 파일에 씁니다. 지정된 파일의 확장이 '.md'이면 결과가 Markdown 형식으로 생성됩니다. 그렇지 않으면 탭으로 구분된 파일이 생성됩니다.
-property:{name}={value}

-p:{name}={value}
지정된 프로젝트 수준 속성을 설정하거나 재정의합니다. 여기서 name 속성 이름이고 value 속성 값입니다. 다음 예제와 같이 각 속성을 개별적으로 지정하거나 세미콜론 또는 쉼표로 여러 속성을 구분합니다.

-property:WarningLevel=2;OutDir=bin\Debug

일반적으로 사용되는 속성 목록은 일반적인 MSBuild 프로젝트 속성 참조하세요. 사용 가능한 속성의 전체 집합은 프로젝트 형식, SDK 및 가져온 파일에 따라 달라집니다.
-restore

-r
실제 대상을 빌드하기 전에 Restore 대상을 실행합니다.
-restoreProperty:{name}={value}

-rp:{name}={value}
복원하는 동안에만 이러한 프로젝트 수준 속성을 설정하거나 재정의하고 -property 인수로 지정된 속성을 사용하지 마세요. name 속성 이름이고 value 속성 값입니다. 세미콜론 또는 쉼표로 여러 속성을 구분하거나 각 속성을 개별적으로 지정합니다.
-target:{targets}

-t:{targets}
프로젝트에서 지정된 대상을 빌드합니다. 다음 예제와 같이 각 대상을 개별적으로 지정하거나 세미콜론 또는 쉼표로 여러 대상을 구분합니다.

-target:PrepareResources;Compile

이 스위치를 사용하여 대상을 지정하면 프로젝트 파일의 DefaultTargets 특성에 있는 대상 대신 실행됩니다. 자세한 내용은 대상 빌드 순서방법: 첫 번째빌드할 대상 지정을 참조하세요.

대상은 작업 그룹입니다. 자세한 내용은 대상 참조하세요.
-targets[:{file}]

-ts[:{file}]
빌드 프로세스를 실제로 실행하지 않고 사용 가능한 대상 목록을 지정된 파일(또는 파일이 지정되지 않은 경우 출력 디바이스)에 씁니다.
-toolsVersion:{version}

-tv:{version}
사용자 지정 도구 집합을 지정합니다. 도구 집합은 애플리케이션을 빌드하는 데 사용되는 작업, 대상 및 도구로 구성됩니다. 도구 집합(ToolsVersion)표준 및 사용자 지정 도구 집합 구성참조하세요.
-validate:[{schema}]

-val[{schema}]
프로젝트 파일의 유효성을 검사하고 유효성 검사가 성공하면 프로젝트를 빌드합니다.

schema지정하지 않으면 기본 스키마에 대해 프로젝트의 유효성이 검사됩니다.

schema지정하면 지정한 스키마에 대해 프로젝트의 유효성이 검사됩니다.

다음 설정은 예제입니다. -validate:MyExtendedBuildSchema.xsd
-verbosity:{level}

-v:{level}
빌드 로그에 표시할 정보의 양을 지정합니다. 각 로거는 해당 로거에 대해 설정한 세부 정보 표시 수준에 따라 이벤트를 표시합니다.

자세한 내용은 q[uiet], m[inimal], n[ormal](기본값), d[etailed]diag[nostic]지정할 수 있습니다.

다음 설정은 예제입니다. -verbosity:quiet
-version

-ver
버전 정보만 표시합니다. 프로젝트가 빌드되지 않았습니다.
@{file} 텍스트 파일에서 명령줄 스위치를 삽입합니다. 여러 파일이 있는 경우 개별적으로 지정합니다. 자세한 내용은 응답 파일참조하세요.
-warnAsError[:{code; ...}]

-err[:{code; ...}]
오류로 처리할 경고 코드 목록입니다. 세미콜론 또는 쉼표로 여러 경고 코드를 구분합니다. 모든 경고를 오류로 처리하려면 값이 없는 스위치를 사용합니다. 경고가 오류로 처리되면 대상은 경고인 것처럼 계속 실행되지만 전체 빌드는 실패합니다.

예: -err:MSB4130
-warnNotAsError[:{code; ...}]

-noerr[:{code; ...}]
MSBuild 17.0 이상. 오류로 승격해서는 안 되는 경고 코드 목록입니다. 특히 warnAsError 스위치가 모든 경고를 오류로 승격하도록 설정된 경우 warnNotAsError로 지정된 오류 코드는 승격되지 않습니다. warnAsError가 모든 경고를 오류로 승격하도록 설정되지 않은 경우에는 영향을 주지 않습니다. 세미콜론 또는 쉼표로 여러 경고 코드를 구분합니다.

예: -noerr:MSB4130
-warnAsMessage[:{code}; ...}]

-noWarn[:{code; ...}]
중요도가 낮은 메시지로 처리할 경고 코드 목록입니다. 세미콜론 또는 쉼표로 여러 경고 코드를 구분합니다.

예: -noWarn:MSB3026

로거에 대한 스위치

스위치 묘사
-binaryLogger[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]

-bl[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]
모든 빌드 이벤트를 압축된 이진 파일로 직렬화합니다. 기본적으로 파일은 현재 디렉터리에 있으며 msbuild.binlog 이름이 지정됩니다. 이진 로그는 나중에 텍스트 로그를 재구성하고 다른 분석 도구에서 사용할 수 있는 빌드 프로세스에 대한 자세한 설명입니다. 이진 로그는 일반적으로 가장 자세한 텍스트 진단 수준 로그보다 10~20배 작지만 자세한 정보를 포함합니다.

기본적으로 이진 로거는 빌드 중에 발생한 모든 가져온 프로젝트 및 대상 파일을 포함하여 프로젝트 파일의 원본 텍스트를 수집합니다. 선택적 ProjectImports 매개 변수는 이 동작을 제어합니다.

- ProjectImports=None. 프로젝트 가져오기를 수집하지 마세요.
- ProjectImports=embed. 로그 파일에 프로젝트 가져오기를 포함합니다(기본값).
- ProjectImports=ZipFile. 프로젝트 파일을 {output}.projectimports.zip 저장합니다. 여기서 <출력> 이진 로그 파일 이름과 동일한 이름입니다.

ProjectImports의 기본 설정은 포함됩니다.
참고: 로거는 .cs, .cpp등과 같은 MSBuild가 아닌 원본 파일을 수집하지 않습니다.
.binlog 파일은 프로젝트/솔루션 대신 인수로 msbuild.exe 전달하여 "재생"할 수 있습니다. 다른 로거는 원래 빌드가 발생하는 것처럼 로그 파일에 포함된 정보를 받습니다. 이진 로그 및 해당 사용량에 대한 자세한 내용은 https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md

예제:
- -bl
- -bl:output.binlog
- -bl:output.binlog;ProjectImports=None
- -bl:output.binlog;ProjectImports=ZipFile
- -bl:..\..\custom.binlog
- -binaryLogger
-consoleLoggerParameters:{parameters}

-clp:{parameters}
콘솔 창에 빌드 정보를 표시하는 콘솔 로거에 지정한 매개 변수를 전달합니다. 다음 매개 변수를 지정할 수 있습니다.

- PerformanceSummary. 작업, 대상 및 프로젝트에 소요된 시간을 표시합니다.
- 요약. 끝에 오류 및 경고 요약을 표시합니다.
- NoSummary. 마지막에 오류 및 경고 요약을 표시하지 마세요.
- ErrorsOnly. 오류만 표시합니다.
- WarningsOnly. 경고만 표시합니다.
NoItemAndPropertyList- . 세부 정보 표시 수준이 diagnostic설정된 경우 각 프로젝트 빌드의 시작 부분에 표시되는 항목 및 속성 목록을 표시하지 마세요.
ShowCommandLine- . TaskCommandLineEvent 메시지를 표시합니다.
ShowProjectFile- . 진단 메시지에서 프로젝트 파일의 경로를 표시합니다. 이 설정은 기본적으로 설정됩니다.
ShowTimestamp- . 타임스탬프를 모든 메시지의 접두사로 표시합니다.
ShowEventId- . 시작된 각 이벤트, 완료된 이벤트 및 메시지에 대한 이벤트 ID를 표시합니다.
- ForceNoAlign. 텍스트를 콘솔 버퍼의 크기에 맞추지 마세요.
DisableConsoleColor- . 모든 로깅 메시지에 기본 콘솔 색을 사용합니다.
- DisableMPLogging. 다중 프로세서가 아닌 모드에서 실행할 때 출력의 다중 프로세서 로깅 스타일을 사용하지 않도록 설정합니다.
- EnableMPLogging. 다중 프로세서가 아닌 모드에서 실행되는 경우에도 다중 프로세서 로깅 스타일을 사용하도록 설정합니다. 이 로깅 스타일은 기본적으로 설정됩니다.
ForceConsoleColor- . 콘솔에서 지원하지 않는 경우에도 ANSI 콘솔 색을 사용합니다.
- 세부 정보 표시. 이 로거에 대한 -verbosity 설정을 재정의합니다.

다음 예제와 같이 세미콜론을 사용하여 여러 매개 변수를 구분합니다.

-consoleLoggerParameters:PerformanceSummary;NoSummary -verbosity:minimal

기본 콘솔 로거는 일반적인 세부 정보 표시이며 Summary포함합니다.
-distributedFileLogger

-dfl
각 MSBuild 노드의 빌드 출력을 자체 파일에 기록합니다. 이러한 파일의 초기 위치는 현재 디렉터리입니다. 기본적으로 파일 이름은 MSBuild{NodeId}.log . -fileLoggerParameters 스위치를 사용하여 fileLogger의 파일 위치 및 기타 매개 변수를 지정할 수 있습니다.

-fileLoggerParameters 스위치를 사용하여 로그 파일의 이름을 지정하는 경우 분산 로거는 해당 이름을 템플릿으로 사용하고 각 노드에 대한 로그 파일을 만들 때 해당 이름에 노드 ID를 추가합니다.
-distributedLogger:{central logger},{forwarding logger}, ...

-dl:{central logger},{forwarding logger, ...}
MSBuild에서 이벤트를 기록하여 각 노드에 다른 로거 인스턴스를 연결합니다. 여러 로거를 지정하려면 각 로거를 개별적으로 지정합니다.

로거 구문을 사용하여 전달 로거에 대한 추가 클래스 및 제공하는 것을 제외하고 로거를 지정합니다. 로거 구문은 -logger 스위치를 참조하세요.

다음 예제에서는 이 스위치를 사용하는 방법을 보여 줍니다.

-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
-fileLogger[{number}]

-fl[{number}]
빌드 출력을 현재 디렉터리의 단일 파일에 기록합니다. number지정하지 않으면 출력 파일의 이름이 msbuild.log. number지정하면 출력 파일의 이름은 msbuild<n>.log 이름이 지정됩니다. 여기서 <n>number. Number 1에서 9까지의 숫자가 될 수 있습니다.

-fileLoggerParameters 스위치를 사용하여 파일 위치 및 fileLogger에 대한 다른 매개 변수를 지정할 수 있습니다.
-fileLoggerParameters[{number}]:

parameters

-flp[{number}]: {parameters}
파일 로거 및 분산 파일 로거에 대한 추가 매개 변수를 지정합니다. 이 스위치의 존재는 해당 -filelogger[number] 스위치가 있음을 의미합니다. Number 1에서 9까지의 숫자가 될 수 있습니다.

-consoleloggerparameters나열된 모든 매개 변수를 사용할 수 있습니다. 다음 매개 변수 중 하나 이상을 사용할 수도 있습니다.

LogFile- . 빌드 로그가 기록되는 로그 파일의 경로입니다. 분산 파일 로거는 이 경로의 로그 파일 이름 앞에 접두사를 지정합니다.
- 추가합니다. 빌드 로그가 로그 파일에 추가되는지 아니면 덮어쓸지 여부를 결정합니다. 스위치를 설정하면 빌드 로그가 로그 파일에 추가됩니다. 스위치가 없으면 기존 로그 파일의 내용을 덮어씁니다.
예: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append
명시적 true 또는 false 설정을 포함하는 경우 설정에 관계없이 로그가 추가됩니다. 추가 스위치를 포함하지 않으면 로그를 덮어씁니다.
이 경우 파일을 덮어씁니다. msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log
이 경우 파일이 추가됩니다. msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=true
이 경우 파일이 추가됩니다. msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false
- 인코딩. 파일에 대한 인코딩(예: UTF-8, 유니코드 또는 ASCII)을 지정합니다.

다음 예제에서는 경고 및 오류에 대한 별도의 로그 파일을 생성합니다.

-flp1:logfile=errors.txt;errorsonly -flp2:logfile=warnings.txt;warningsonly

다음 예제에서는 다른 가능성을 보여 줍니다.

-fileLoggerParameters:LogFile=MyLog.log;Append; Verbosity=diagnostic;Encoding=UTF-8

-flp:Summary;Verbosity=minimal;LogFile=msbuild.sum

-flp1:warningsonly;logfile=msbuild.wrn

-flp2:errorsonly;logfile=msbuild.err
-logger:logger

-l:logger
MSBuild에서 이벤트를 기록하는 데 사용할 로거를 지정합니다. 여러 로거를 지정하려면 각 로거를 개별적으로 지정합니다.

logger다음 구문을 사용합니다. [LoggerClass,]LoggerAssembly[;LoggerParameters]

LoggerClass다음 구문을 사용합니다. [PartialOrFullNamespace.]LoggerClassName

어셈블리에 정확히 하나의 로거가 포함된 경우 로거 클래스를 지정할 필요가 없습니다.

LoggerAssembly다음 구문을 사용합니다. AssemblyName[,StrongName] \| AssemblyFile

로거 매개 변수는 선택 사항이며 입력할 때 로거에 정확하게 전달됩니다.

다음 예제에서는 -logger 스위치를 사용합니다.

-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-noConsoleLogger

-noconlog
기본 콘솔 로거를 사용하지 않도록 설정하고 콘솔에 이벤트를 기록하지 않습니다.
-terminalLogger[:auto,on,off]

-tl[:auto,on,off]
터미널 로거사용하거나 사용하지 않도록 설정합니다. 터미널 로거는 콘솔에서 실시간으로 향상된 빌드 출력을 제공하고 프로젝트별로 논리적으로 구성하며 실행 가능한 정보를 강조 표시하도록 설계되었습니다. 표준 출력이 리디렉션되지 않은 경우에만 터미널 로거를 사용하도록 auto 지정(또는 인수 없이 옵션 사용). 출력을 구문 분석하지 않거나 이후 버전에서 변경되지 않은 상태로 유지합니다. 이 옵션은 MSBuild 17.8 이상에서 사용할 수 있습니다.

본보기

다음 예제에서는 rebuild 프로젝트의 대상을 빌드합니다.

MSBuild.exe MyProject.proj -t:rebuild

참고 항목

  • MSBuild 참조
  • 일반적인 MSBuild 프로젝트 속성