Share via


MSBuild 명령줄 참조

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

MSBuild.exe [Switches] [ProjectFile]

인수

인수

설명

ProjectFile

지정한 프로젝트 파일에 대상을 빌드합니다. 프로젝트 파일을 지정하지 않으면 MSBuild는 현재 작업 디렉터리에서 "proj"로 끝나는 파일 이름 확장명을 검색하고 해당 파일을 사용합니다. 이 인수에 대해 Visual Studio 솔루션 파일을 지정할 수도 있습니다.

스위치

스위치

약식

설명

/help

/? 또는 /h

사용법 정보를 표시합니다. 다음 명령을 예로 들 수 있습니다.

msbuild.exe /?

/detailedsummary

/ds

빌드된 구성과 노드에 대한 해당 구성의 예약 상태와 관련된 자세한 정보를 빌드 로그 끝에 표시합니다.

/ignoreprojectextensions: extensions

/ignore: extensions

빌드할 프로젝트 파일을 결정할 때 지정된 확장명을 무시합니다. 다음 예제에서와 같이 여러 확장명은 세미콜론이나 쉼표로 구분합니다.

/ignoreprojectextensions:.vcproj,.sln

/maxcpucount[:number]

/m[:number]

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

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

msbuild myproject.proj /maxcpucount:3

/noautoresponse

/noautorsp

MSBuild.rsp 파일을 자동으로 포함하지 않도록 합니다.

/nodeReuse:value

/nr:value

MSBuild 노드를 다시 사용하거나 다시 사용하지 않도록 설정합니다. 다음 값을 지정할 수 있습니다.

  • True입니다. 노드는 후속 빌드에 사용될 수 있도록 빌드가 완료된 후에도 남습니다(기본값).

  • False입니다. 빌드가 완료된 후에는 노드가 남지 않습니다.

노드는 실행되고 있는 프로젝트에 해당됩니다. /maxcpucount 스위치를 포함하는 경우는 여러 노드가 동시에 실행될 수 있습니다.

/nologo

시작 배너 또는 저작권 메시지를 표시하지 않습니다.

/preprocess[:filepath]

/pp[:filepath]

가져올 모든 파일을 인라인하고 해당 경계를 표시하여 집계된 단일 프로젝트 파일을 만듭니다. 이 스위치를 사용하여 가져올 파일, 파일을 가져올 위치 및 빌드에 사용할 파일을 보다 쉽게 확인할 수 있습니다. 이 스위치를 사용하면 프로젝트가 빌드되지 않습니다.

filepath를 지정하는 경우 집계된 프로젝트 파일은 파일에 출력됩니다. 그렇지 않은 경우 출력이 콘솔 창에 나타납니다.

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

/property:name=value

/p:name=value

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

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

/target:targets

/t:targets

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

/target:Resources;Compile

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

대상은 작업 그룹입니다. 자세한 내용은 MSBuild 대상을 참조하십시오.

/toolsversion:version

/tv:version

다음 예제에서와 같이 프로젝트 빌드에 사용할 도구 집합 버전을 지정합니다. /toolsversion:3.5

이 스위치를 사용하여 프로젝트를 빌드하고 Project 요소(MSBuild)에 지정된 버전과는 다른 버전을 지정할 수 있습니다. 자세한 내용은 ToolsVersion 설정 재정의을 참조하십시오.

MSBuild 4.5의 경우 version에 대해 2.0, 3.5 및 4.0 값을 지정할 수 있습니다. 4.0을 지정하는 경우 VisualStudioVersion 빌드 속성은 사용할 하위 도구 집합을 지정합니다. 자세한 내용은 MSBuild 도구 집합(ToolsVersion)의 하위 도구 집합 섹션을 참조하세요.

도구 집합은 응용 프로그램을 빌드하는 데 사용되는 작업, 대상 및 도구로 구성됩니다. 도구에는 csc.exe 및 vbc.exe와 같은 컴파일러가 포함됩니다. 도구 집합에 대한 자세한 내용은 MSBuild 도구 집합(ToolsVersion), 표준 및 사용자 지정 도구 집합 구성MSBuild 멀티 타기팅 개요를 참조하세요.

참고

도구 집합 버전은 프로젝트가 실행되도록 빌드되는 .NET Framework 버전에 해당하는 대상 프레임워크 버전과는 다릅니다.자세한 내용은 MSBuild 대상 프레임워크 및 대상 플랫폼을 참조하십시오.

/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

텍스트 파일에서 명령줄 스위치를 삽입합니다. 여러 파일을 사용하는 경우 별도로 지정합니다. 자세한 내용은 MSBuild 지시 파일을 참조하십시오.

로거 스위치

스위치

약식

설명

/consoleloggerparameters:

parameters

/clp:parameters

지정한 매개 변수를 콘솔 로거에 전달하면 콘솔 창에 빌드 정보가 표시됩니다. 다음 매개 변수를 지정할 수 있습니다.

  • PerformanceSummary. 작업, 대상 및 프로젝트에 소요된 시간을 표시합니다.

  • Summary. 끝에 오류 및 경고 요약을 표시합니다.

  • NoSummary. 끝에 오류 및 경고 요약을 표시하지 않습니다.

  • ErrorsOnly. 오류만 표시합니다.

  • WarningsOnly. 경고만 표시합니다.

  • NoItemAndPropertyList. 자세한 정도를 diagnostic으로 설정한 경우 각 프로젝트 빌드의 시작 부분에 표시될 항목 및 속성 목록을 표시하지 않습니다.

  • ShowCommandLine. TaskCommandLineEvent 메시지를 표시합니다.

  • ShowTimestamp. 원하는 메시지에 접두사로 타임스탬프를 표시합니다.

  • ShowEventId. 각각 시작된 이벤트, 완료된 이벤트 및 메시지에 대한 이벤트 ID를 표시합니다.

  • ForceNoAlign. 텍스트를 콘솔 버퍼 크기에 맞추지 않습니다.

  • DisableConsoleColor. 모든 로깅 메시지에 기본 콘솔 색을 사용합니다.

  • DisableMPLogging. 다중 프로세서가 아닌 모드에서 실행할 때 출력의 다중 프로세서 로깅 스타일을 사용하지 않습니다.

  • EnableMPLogging. 다중 프로세서가 아닌 모드에서 실행할 때도 다중 프로세서 로깅 스타일을 사용합니다. 이 로깅 스타일은 기본적으로 설정되어 있습니다.

  • Verbosity. 이 로거에 대한 /verbosity 설정을 재정의합니다.

다음 예제에서와 같이 여러 매개 변수는 세미콜론이나 쉼표로 구분합니다.

/consoleloggerparameters:PerformanceSummary;NoSummary /verbosity:minimal

/distributedFileLogger

/dfl

MSBuild 노드의 빌드 출력을 자체 파일에 로깅합니다. 이러한 파일의 초기 위치는 현재 디렉터리입니다. 기본적으로 파일 이름은 "MSBuildNodeId.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를 지정하는 경우 출력 파일 이름은 msbuildn.log로 지정됩니다. 여기서 n은 number입니다. Number는 1에서 9의 숫자일 수 있습니다.

/fileLoggerParameters 스위치를 사용하여 파일 위치 및 fileLogger의 기타 매개 변수를 지정할 수 있습니다.

/fileloggerparameters:[number]

parameters

/flp:[ number] parameters

파일 로거 및 분산된 파일 로거에 대해 추가 매개 변수를 지정합니다. 이 스위치가 있으면 해당 /filelogger[number] 스위치가 있다는 것을 의미합니다. Number는 1에서 9의 숫자일 수 있습니다.

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

  • LogFile. 빌드 로그가 기록되는 로그 파일의 경로입니다. 분산된 파일 로거는 해당 로그 파일의 이름 앞에 이 경로를 추가합니다.

  • Append. 빌드 로그가 로그 파일에 추가될지 또는 로그 파일을 덮어쓸지를 결정합니다. 이 스위치를 설정하면 빌드 로그가 로그 파일에 추가됩니다. 이 스위치가 없으면 기존 로그 파일의 내용을 덮어씁니다.

    append 스위치를 포함하면 true 또는 false의 설정에 관계없이 로그가 추가됩니다. append 스위치를 포함하지 않으면 로그를 덮어씁니다.

    이 경우 파일을 덮어씁니다. msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log

    이 경우 파일에 추가됩니다. msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log;append=true

    이 경우 파일에 추가됩니다. msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log;append=false 

  • Encoding. 파일에 대한 인코딩을 지정합니다(예: 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

기본 콘솔 로거를 사용하지 않도록 설정하고 콘솔에 이벤트를 로깅하지 않습니다.

예제

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

MSBuild.exe MyProject.proj /t:rebuild

MSBuild.exe를 사용하여 보다 복잡한 빌드를 수행할 수 있습니다. 예를 들어 이 프로그램을 사용하여 솔루션에 특정 프로젝트의 특정 대상을 빌드할 수 있습니다. 다음 예제에서는 NotInSolutionFolder 프로젝트를 다시 빌드하고, NewFolder 솔루션 폴더에 있는 InSolutionFolder 프로젝트를 정리합니다.

msbuild SlnFolders.sln /t:NotInSolutionfolder:Rebuild;NewFolder\InSolutionFolder:Clean

참고 항목

참조

일반적인 MSBuild 프로젝트 속성

기타 리소스

MSBuild 참조