다음을 통해 공유


MSBuild@1 - MSBuild v1 작업

MSBuild를 사용하여 빌드하려면 이 작업을 사용합니다.

Syntax

# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '17.0' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.
    #logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.
# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.
    #logFileVerbosity: 'normal' # 'quiet' | 'minimal' | 'normal' | 'detailed' | 'diagnostic'. Optional. Use when createLogFile = true. Log File Verbosity. Default: normal.
# MSBuild v1
# Build with MSBuild.
- task: MSBuild@1
  inputs:
    solution: '**/*.sln' # string. Required. Project. Default: **/*.sln.
    #msbuildLocationMethod: 'version' # 'version' | 'location'. MSBuild. Default: version.
    #msbuildVersion: 'latest' # 'latest' | '16.0' | '15.0' | '14.0' | '12.0' | '4.0'. Optional. Use when msbuildLocationMethod = version. MSBuild Version. Default: latest.
    #msbuildArchitecture: 'x86' # 'x86' | 'x64'. Optional. Use when msbuildLocationMethod = version. MSBuild Architecture. Default: x86.
    #msbuildLocation: # string. Optional. Use when msbuildLocationMethod = location. Path to MSBuild. 
    #platform: # string. Platform. 
    #configuration: # string. Configuration. 
    #msbuildArguments: # string. MSBuild Arguments. 
    #clean: false # boolean. Clean. Default: false.
  # Advanced
    #maximumCpuCount: false # boolean. Build in Parallel. Default: false.
    #restoreNugetPackages: false # boolean. Restore NuGet Packages. Default: false.
    #logProjectEvents: false # boolean. Record Project Details. Default: false.
    #createLogFile: false # boolean. Create Log File. Default: false.

입력

solution - 프로젝트
string. 필수 요소. 기본값은 **/*.sln입니다.

여러 프로젝트를 빌드하려면 검색 조건을 지정합니다. 단일 폴더 와일드카드(*) 및 재귀 와일드카드(**)를 사용할 수 있습니다. 예를 들어 모든 **.*proj 하위 디렉터리에서 모든 MSBuild 프로젝트(.*proj) 파일을 검색합니다.

지정한 프로젝트가 이 빌드 파이프라인에서 다운로드되었는지 확인합니다. 리포지토리 탭에서 다음을 수행합니다.

  • TFVC를 사용하는 경우 프로젝트가 리포지토리 탭의 매핑 중 하나의 자식인지 확인합니다.
  • Git을 사용하는 경우 프로젝트 또는 프로젝트가 빌드 중인 분기의 Git 리포지토리에 있는지 확인합니다.

솔루션을 빌드하는 경우 MSBuild 작업 대신 Visual Studio 빌드 작업을 사용하는 것이 좋습니다.


msbuildLocationMethod - Msbuild
string. 허용되는 값: version, location (위치 지정). 기본값은 version입니다.


msbuildVersion - MSBuild 버전
string. 선택 사항입니다. 을 사용할 때 msbuildLocationMethod = version사용합니다. 허용되는 값: latest, 17.0 (MSBuild 17.0), 16.0 (MSBuild 16.0), 15.0 (MSBuild 15.0), 14.0 (MSBuild 14.0), 12.0 (MSBuild 12.0), 4.0 (MSBuild 4.0). 기본값은 latest입니다.

기본 버전을 찾을 수 없는 경우 찾은 최신 버전이 대신 사용됩니다. macOS 에이전트에서 xbuild 버전이 보다 15.0낮은 경우 (Mono)가 사용됩니다.


msbuildVersion - MSBuild 버전
string. 선택 사항입니다. 을 사용할 때 msbuildLocationMethod = version사용합니다. 허용되는 값: latest, 16.0 (MSBuild 16.0), 15.0 (MSBuild 15.0), 14.0 (MSBuild 14.0), 12.0 (MSBuild 12.0), 4.0 (MSBuild 4.0). 기본값은 latest입니다.

기본 버전을 찾을 수 없는 경우 찾은 최신 버전이 대신 사용됩니다. macOS 에이전트에서 xbuild 버전이 보다 15.0낮은 경우 (Mono)가 사용됩니다.


msbuildArchitecture - MSBuild 아키텍처
string. 선택 사항입니다. 을 사용할 때 msbuildLocationMethod = version사용합니다. 허용되는 값: x86 (MSBuild x86), x64 (MSBuild x64). 기본값은 x86입니다.

실행할 MSBuild 아키텍처(x86, x64)를 제공합니다.


msbuildLocation - MSBuild 경로
string. 선택 사항입니다. 을 사용할 때 msbuildLocationMethod = location사용합니다.

MSBuild에 대한 경로를 제공합니다.


platform - 플랫폼
string.

  • 솔루션 대신 MSBuild 프로젝트(.*proj) 파일을 대상으로 하는 경우 (공백 없음)을 지정 AnyCPU 합니다.
  • 변수 탭(큐 시간에 선택)에서 와 같은 BuildPlatform 빌드 변수를 Allow 선언하고 여기에서 로 $(BuildPlatform)참조합니다. 이렇게 하면 빌드를 큐에 대기하고 여러 구성 빌드를 사용하도록 설정할 때 플랫폼을 수정할 수 있습니다.

configuration - 구성
string.

변수 탭(큐 시간에 선택)에서 와 같은 BuildConfiguration 빌드 변수를 Allow 선언하고 여기에서 로 $(BuildConfiguration)참조합니다. 이렇게 하면 빌드를 큐에 대기하고 여러 구성 빌드를 사용하도록 설정할 때 플랫폼을 수정할 수 있습니다.


msbuildArguments - MSBuild 인수
string.

MSBuild(Windows) 및 xbuild(macOS)에 전달되는 추가 인수를 지정합니다.


clean - 청소
boolean. 기본값은 false입니다.

이 빌드를 False 증분 빌드로 만들려면 를 로 설정합니다. 이 설정은 특히 코드베이스가 큰 경우 빌드 시간을 줄일 수 있습니다. 리포지토리False를 로 설정 Clean 하지 않는 한 이 옵션은 실질적인 효과가 없습니다. True 코드 프로젝트의 모든 코드를 다시 빌드하려는 경우 를 로 설정합니다. 이는 MSBuild /target:clean 인수와 동일합니다. 자세한 내용은 리포지토리 옵션을 참조하세요.


maximumCpuCount - 병렬로 빌드
boolean. 기본값은 false입니다.

MSBuild 대상 구성이 빌드와 병렬로 호환되는 경우 이 입력을 검사 MSBuild에 스위치를 전달할 /m 수 있습니다(Windows에만 해당). 대상 구성이 빌드와 병렬로 호환되지 않는 경우 이 옵션을 확인하면 빌드에 file-in-use 오류가 발생하거나 간헐적이거나 일관되지 않은 빌드 오류가 발생할 수 있습니다.


restoreNugetPackages - NuGet 패키지 복원
boolean. 기본값은 false입니다.

이 옵션은 사용되지 않습니다. NuGet 패키지를 복원하려면 빌드 전에 NuGet 작업을 추가합니다.


logProjectEvents - 프로젝트 세부 정보 기록
boolean. 기본값은 false입니다.

필요에 따라 각 프로젝트에 대한 타임라인 세부 정보를 기록합니다(Windows에만 해당).


createLogFile - 로그 파일 만들기
boolean. 기본값은 false입니다.

필요에 따라 로그 파일(Windows만 해당)을 만듭니다.


logFileVerbosity - 로그 파일 세부 정보 표시
string. 선택 사항입니다. 을 사용할 때 createLogFile = true사용합니다. 허용되는 값: quiet, minimal, normal, , detailed. diagnostic 기본값은 normal입니다.

로그 파일 세부 정보 표시를 지정합니다.


작업 제어 옵션

모든 작업에는 작업 입력 외에 제어 옵션이 있습니다. 자세한 내용은 컨트롤 옵션 및 일반적인 작업 속성을 참조하세요.

출력 변수

없음

설명

Visual Studio 빌드 작업 또는 MSBuild 작업을 사용해야 하나요?

솔루션을 빌드하는 경우 대부분의 경우 Visual Studio 빌드 작업을 사용해야 합니다. 이 작업은 자동으로 다음을 수행합니다.

  • /p:VisualStudioVersion 속성을 설정합니다. 따라서 MSBuild는 빌드 성공 가능성을 높이는 특정 대상 집합을 사용해야 합니다.
  • MSBuild 버전 인수를 지정합니다.

경우에 따라 작업을 사용해야 MSBuild 할 수 있습니다. 예를 들어 솔루션과 별도로 코드 프로젝트를 빌드하는 경우 사용해야 합니다.

MSBuild에 대한 자세한 내용은 어디에서 확인할 수 있나요?

MSBuild 참조

MSBuild 명령줄 참조

여러 플랫폼에 대해 여러 구성을 빌드할 어떻게 할까요? 있나요?

  1. 변수 탭에서 구성 및 플랫폼에 대해 정의된 변수가 있는지 확인합니다. 여러 값을 지정하려면 쉼표로 구분합니다. 예를 들면 다음과 같습니다.

    • .NET 앱의 경우 디버그 및 릴리스 값으로 를 지정 BuildConfiguration 하고 CPU 값으로 를 지정할 BuildPlatform 수 있습니다.
    • C++ 앱의 경우 디버그 및 릴리스 값으로 를 지정할 BuildConfiguration 수 있으며 x86 및 x64 값으로 를 지정할 BuildPlatform 수 있습니다.
  2. 옵션 탭에서 를 선택하고 MultiConfiguration 쉼표로 구분하여 지정 Multipliers합니다. 예를 들어 BuildConfiguration, BuildPlatform 작업(값의 각 조합에 대해 하나씩)을 사용할 수 있는 경우 여러 에이전트에 병렬로 배포하려는 경우 선택합니다 Parallel .

  3. 빌드 탭에서 이 단계를 선택하고 및 Configuration 인수를 Platform 지정합니다. 예를 들면 다음과 같습니다.

    • 플랫폼: $(BuildPlatform)
    • 구성: $(BuildConfiguration)

TFSBuild.proj 파일을 빌드할 수 있나요?

파일을 빌드 TFSBuild.proj 할 수 없습니다. 이러한 종류의 파일은 및 TFS 2008에 의해 TFS 2005 생성됩니다. 이러한 파일에는 태스크가 포함되며 대상은 XAML 빌드를 사용하는 경우에만 지원됩니다.

문제 해결

이 섹션에서는 사용자가 작업을 사용할 MSBuild 때 발생할 수 있는 일반적인 문제에 대한 문제 해결 팁을 제공합니다.

다음 오류로 빌드가 실패했습니다. MSBuild를 실행하는 동안 내부 오류가 발생했습니다.

가능한 원인
  • MSBuild 버전을 변경합니다.
  • 타사 확장 관련 문제
  • 빌드 에이전트에서 어셈블리가 누락될 수 있는 Visual Studio에 대한 새 업데이트입니다.
  • 필요한 NuGet 패키지 중 일부를 이동하거나 삭제했습니다.
제안 문제 해결
진단 사용하여 파이프라인을 실행하여 자세한 로그 검색

문제를 진단하는 데 사용할 수 있는 옵션 중 하나는 생성된 로그를 살펴보는 것입니다. 파이프라인 실행 요약에서 적절한 작업 및 작업을 선택하여 파이프라인 로그를 볼 수 있습니다.

파이프라인 실행 로그를 얻으려면 문제를 진단하기 위한 로그 가져오기

문제 해결을 지원하기 위해 사용자 지정된 자세한 정보 로그를 설정 및 다운로드할 수도 있습니다.

파이프라인 진단 로그 외에도 문제를 디버그하고 해결하는 데 도움이 되는 추가 정보가 포함된 이러한 다른 유형의 로그를 검사 수 있습니다.

오류를 로컬로 재현해 보세요.

호스트된 빌드 에이전트를 사용하는 경우 오류를 로컬로 재현하려고 할 수 있습니다. 이렇게 하면 실패가 빌드 에이전트 또는 빌드 작업의 결과인지 여부를 좁힐 수 있습니다.

동일한 MSBuild 인수를 사용하여 로컬 컴퓨터에서 동일한 명령을 실행합니다. 참조를 위해 MSBuild 명령을 확인하세요.

로컬 컴퓨터에서 문제를 재현할 수 있는 경우 다음 단계는 MSBuild 문제를 조사하는 것입니다.

Microsoft 호스팅 에이전트에 대해 자세히 알아보세요.

자체 호스팅 에이전트를 설치하고 빌드 작업을 실행하려면 다음을 수행합니다.

어떻게 해야 하나요?

일부 MSBuild 오류는 Visual Studio의 변경으로 인해 발생하므로 Visual Studio Developer Community 검색하여 이 문제가 보고되었는지 확인할 수 있습니다. 또한 질문, 제안 및 피드백을 환영합니다.

요구 사항

요구 사항 Description
파이프라인 유형 YAML, 클래식 빌드
실행 중 에이전트, DeploymentGroup
요청 자체 호스팅 에이전트에는 이 작업을 사용하는 작업을 실행하기 위한 다음 요구 사항과 일치하는 기능이 있어야 합니다. msbuild
Capabilities 이 작업은 작업의 후속 작업에 대한 요구를 충족하지 않습니다.
명령 제한 사항 모두
Settable 변수 모두
에이전트 버전 1.95.0 이상
작업 범주 빌드

추가 정보