다음을 통해 공유


MSBuild.exe를 사용하여 솔루션의 특정 대상 빌드

MSBuild.exe를 사용하여 솔루션에서 특정 프로젝트의 특정 대상을 빌드할 수 있습니다.

솔루션에서 특정 프로젝트의 특정 대상을 빌드하려면

  1. 명령줄에서 디렉터리를 솔루션 폴더로 변경하고 MSBuild.exe <SolutionName>.sln을 입력하지만 아직 Enter 키를 누르지는 마세요. 솔루션 이름을 사용합니다.

  2. -target: 스위치 뒤에 대상을 <ProjectName>:<TargetName> 형식으로 지정합니다. 프로젝트 이름에 %, $, @, ;, ., (, ) 또는 ' 문자를 포함하는 경우 지정된 대상 이름에서 _로 변경합니다.

사용할 수 있는 대상을 잘 모르는 경우 -targets(-ts) 스위치를 사용하여 MSBuild를 호출하여 단일 프로젝트에 사용할 수 있는 대상 목록을 가져올 수 있습니다. 예들 들어 MSBuild.exe -ts SomeProject.proj입니다. -targets 또는 -ts 옵션은 솔루션 파일이 아닌 프로젝트 파일에서만 사용할 수 있습니다.

예시

다음 예제에서는 NotInSlnFolder 프로젝트의 Rebuild 대상을 실행한 다음, NewFolder 솔루션 폴더에 있는 InSolutionFolder 프로젝트의 Clean 대상을 실행합니다.

msbuild SlnFolders.sln -target:NotInSlnfolder:Rebuild;NewFolder\InSolutionFolder:Clean

특정 대상을 빌드하면 빌드할 다른 종속 대상도 트리거됩니다.

참고 항목

targets스위치에 사용되는 경로는 파일 시스템 경로가 아닙니다. 솔루션 내부 표현의 경로로, 솔루션 탐색기에서 볼 수 있습니다. 예를 들어 targets 스위치에서는 . 또는 ..와 같은 파일 시스템 경로 구문을 사용할 수 없습니다. 따라서 NotInSlnFolder과 같이 다른 파일 시스템 위치에서 참조되는 프로젝트에는 명시적인 경로가 필요하지 않지만 솔루션 폴더 InSolutionFolder 내의 프로젝트에는 경로가 필요합니다. 솔루션에는 Visual Studio에서 추가>솔루션 폴더로 만든 폴더를 가질 수도 있습니다. 이러한 폴더는 Visual Studio의 솔루션 탐색기에서 볼 때 솔루션 내에서 프로젝트를 구성하는 데 사용됩니다. 파일 시스템의 레이아웃은 솔루션 폴더 구조와 다를 수 있습니다. 솔루션 폴더를 참조하세요.

문제 해결

솔루션 프로젝트를 검사하려는 경우 MSBuild에서 제공하는 디버깅 옵션을 사용할 수 있습니다. MSBUILDEMITSOLUTION=1 환경 변수를 설정하고 솔루션을 빌드합니다. 그러면 빌드 시 솔루션의 MSBuild의 내부 보기를 보여 주는 <SolutionName>.sln.metaproj라는 MSBuild 파일을 만듭니다. 이 보기를 검사하여 빌드할 수 있는 대상과 다른 구성 세부 정보를 확인할 수 있습니다.

이 내부 보기가 필요하지 않으면 이 환경 변수 설정을 사용하여 빌드하지 않습니다. 이 설정은 솔루션에서 프로젝트를 빌드하는 문제가 발생할 수 있습니다. 대신 이진 로그를 확인합니다.