빌드 시스템에서 이진 파일을 배치하는 위치 제어

DefaultTemplate.xaml에 정의된 기본 빌드 프로세스는 모든 코드 프로젝트에서 컴파일하는 이진 파일을 단일 디렉터리에 저장합니다. 그러나 보다 세부적으로 구성된 폴더 구조로 이진 파일을 구성하려는 경우도 있습니다.

이 항목의 방법을 사용하면 설계한 디렉터리 구조에 이진 파일을 저장하는 사용자 지정 빌드 프로세스를 만들 수 있습니다. 또한 동일한 원칙을 사용하여 여러 가지 방법으로 빌드 프로세스를 사용자 지정할 수도 있습니다. 이 항목에서는 다음과 같은 방법에 대해 설명합니다.

  • 빌드 프로세스의 Windows Workflow 세그먼트를 사용자 지정합니다. 이진 파일의 컴파일 및 처리를 제외하고 빌드 프로세스의 대부분의 측면을 사용자 지정하려면 이 세그먼트에서 변경해야 합니다. 특히 이 항목에서는 다음 작업을 수행하는 방법에 대해 설명합니다.

    • 기본 템플릿(DefaultTemplate.xaml)의 복사본을 수정하여 사용자 지정 빌드 프로세스를 만듭니다.

    • 인수를 선언하고 사용하여 데이터를 워크플로에 전달합니다.

    • 변수를 선언하고 사용하여 워크플로 전체에서 데이터를 수집하고 전달합니다.

    • 워크플로에서 MSBuild 활동을 사용하여 MSBuild를 호출하는 방법을 수정합니다.

    • 파일을 빌드 서버에 다운로드하고 ConvertWorkspaceItem 활동을 사용하여 이 파일을 빌드 프로세스에서 사용할 수 있게 합니다.

  • 빌드 프로세스의 MSBuild 세그먼트를 사용자 지정합니다. 이 세그먼트에서 변경하여 이진 파일을 컴파일하고 처리하는 방법을 보다 효과적으로 사용자 지정할 수 있습니다. 특히 이 항목에서는 다음 작업을 수행하는 방법에 대해 설명합니다.

    • MSBuild에 인수를 전달한 다음 이러한 인수를 코드 프로젝트에서 사용하여 컴파일된 이진 파일을 처리하는 방법을 변경합니다.

    • 속성 그룹 또는 대상과 같은 사용자 고유의 MSBuild 요소에 대한 중앙 집중화된 공용 코드 라이브러리를 설정합니다. 이러한 유형의 라이브러리를 설정하면 팀에서 빌드 프로세스 논리의 주요 구성 요소를 쉽게 다시 사용하고 수정할 수 있습니다.

참고

이 항목에서는 세 가지 유형의 코드 프로젝트인 C#, C++ 및 Visual Basic에 대해 다룹니다. 그러나 여기에서 설명하는 방법을 다른 유형의 코드 프로젝트에 사용할 수도 있습니다.

항목 내용

  • 필요한 권한

  • 기본 빌드 프로세스에서 컴파일된 이진 파일을 저장하는 위치

  • 각 코드 프로젝트에 포함된 논리를 사용하여 컴파일된 이진 파일 구성

    • 프로세스의 개요

    • 수행하는 단계의 개요

    • 빌드 정의 및 CustomOutputDirInline 사용자 지정 빌드 프로세스 템플릿 만들기

    • 코드 프로젝트에 저장 폴더 논리 포함

  • 중앙 집중화된 두 파일에서 유지 관리되는 논리를 사용하여 컴파일된 이진 파일 구성

    • 프로세스의 개요

    • 수행하는 단계의 개요

    • 저장 폴더 논리가 포함된 MSBuild 공용 코드 파일 만들기

    • 빌드 정의 및 CustomOutputDirImport 사용자 지정 빌드 프로세스 템플릿 만들기

    • OurTeamBuild 빌드 정의 업데이트

    • 코드 프로젝트로 저장 폴더 논리 가져오기

  • 다음 단계

필요한 권한

다음 절차를 수행하려면 다음과 같은 권한이 허용으로 설정되어 있어야 합니다.

  • 빌드 정의 편집:

  • 관련 버전 제어 디렉터리의 체크 인체크 아웃

  • 큐에 빌드 대기:

자세한 내용은 Team Foundation Server 권한을 참조하십시오.

기본 빌드 프로세스에서 컴파일된 이진 파일을 저장하는 위치

작업이 코드 프로젝트와 솔루션으로 나뉜 방식에 관계없이 기본 빌드 프로세스는 컴파일된 모든 이진 파일을 저장 폴더의 단일 하위 디렉터리에 저장합니다. 예를 들어 다음과 같은 솔루션과 코드 프로젝트가 있을 수 있습니다.

  • SolutionA

    • CPPWin32ConsoleApp(Visual C++ 콘솔 응용 프로그램)

    • CSharpConsoleApp(Visual C# 콘솔 응용 프로그램)

  • SolutionB

    • VBConsoleApp(Visual Basic 콘솔 응용 프로그램)

다음 다이어그램에서는 MSBuild에서 DefaultTemplate.xaml에 지정된 프로세스의 일부로 컴파일된 이진 파일을 저장하는 방법과 위치를 보여 줍니다.

기본 흐름

각 코드 프로젝트에 포함된 논리를 사용하여 컴파일된 이진 파일 구성

컴파일된 이진 파일이 솔루션 및 코드 프로젝트의 구조와 일치하는 하위 디렉터리 구조에 저장되도록 지정할 수 있습니다.

프로세스의 개요

다음 다이어그램에서는 이러한 빌드 프로세스를 구현하는 방법을 상위 수준에서 보여 줍니다.

사용자 지정 출력 논리가 포함된 흐름

수행하는 단계의 개요

다음 단계를 수행하여 DefaultTemplate.xaml을 기반으로 이러한 종류의 사용자 지정 빌드 프로세스를 만들 수 있습니다.

  • 1단계 빌드 정의 및 빌드 프로세스 템플릿

    • OurTeamBuild와 같은 이름의 빌드 정의를 만듭니다. 프로세스 탭에서 CustomOutputDirInline.xaml과 같은 이름의 새 빌드 프로세스 템플릿을 기반으로 빌드 정의를 설정합니다.

    • CustomOutputDirInline.xaml에서, 코드를 컴파일하는 Run MSBuild for Project 활동의 인스턴스에서 다음 단계를 수행합니다.

      • Run MSBuild for Project 활동의 OutDir 속성 값을 제거하여 빈 문자열로 만들어 이 속성을 사용하지 않도록 설정합니다.

        참고

        이렇게 변경하지 않으면 OutDir 속성이 코드 프로젝트에서 구현하는 사용자 지정된 모든 디렉터리 구조 논리를 재정의합니다.

      • BinariesDirectory 변수에서 빌드 에이전트의 저장 폴더가 포함된 문자열 값을 수집하여 TeamBuildOutDir과 같은 이름의 인수로 MSBuild에 전달합니다.

  • 2단계 코드 프로젝트

    • OurTeamBuild 빌드에서 컴파일하는 각 코드 프로젝트에서 적절한 요소(OutputPath 또는 OutDir)를 추가하여 저장 폴더에 만들어질 하위 디렉터리 구조를 정의합니다.

다음 소단원에서는 이러한 단계를 수행하는 방법에 대해 자세히 설명합니다.

빌드 정의 및 CustomOutputDirInline 사용자 지정 빌드 프로세스 템플릿 만들기

빌드 정의를 만들고 새 빌드 프로세스 템플릿을 기반으로 설정하여 빌드 프로세스의 기초를 만듭니다.

빌드 정의와 빌드 프로세스 템플릿을 만들려면

  1. 빌드 정의를 만듭니다.

    1. 일반 탭에서 빌드 정의에 OurTeamBuild와 같은 이름을 지정합니다.

    2. 프로세스 탭에서 빌드할 솔루션을 추가합니다.

      자세한 내용은 기본 빌드 정의 만들기를 참조하십시오.

  2. OurTeamBuild 빌드 정의의 프로세스 탭에서 기본 템플릿(DefaultTemplate.xaml)을 기반으로 하는 CustomOutputDirInline.xaml이라는 새 빌드 프로세스 템플릿으로 빌드 프로세스 템플릿을 설정합니다.

    자세한 내용은 사용자 지정 빌드 프로세스 템플릿 만들기 및 작업을 참조하십시오.

  3. 소스 제어 탐색기에서 팀 프로젝트를 열고 빌드 프로세스 템플릿이 포함된 폴더를 표시합니다.

    기본적으로 이 하위 디렉터리의 이름은 BuildProcessTemplates입니다.

  4. 이 절차의 앞부분에서 만든 CustomOutputDirInline.xaml 파일을 체크 아웃한 다음 두 번 클릭합니다.

  5. 워크플로 디자이너에서 다음 구조에 있는 Run MSBuild for Project 활동의 두 번째 인스턴스를 찾습니다.

    1. 시퀀스(Sequence) >

    2. 에이전트에서 실행(AgentScope) >

    3. 변경 집합과 작업 항목 컴파일, 테스트 및 연결 시도(TryCatch [Try]) >

    4. 시퀀스(Sequence) >

    5. 변경 집합과 작업 항목 컴파일, 테스트 및 연결(Parallel) >

    6. 컴파일 및 테스트 시도 TryCatch [Try] >

    7. 컴파일 및 테스트 Sequence >

    8. For Each BuildSettings.PlatformConfigurations의 구성 ForEach [Body] >

    9. 구성에 대해 컴파일 및 테스트 Sequence >

    10. If BuildSettings.HasProjectsToBuild If [Then] >

    11. For Each BuildSettings.ProjectsToBuild의 프로젝트 ForEach [Body] >

    12. 프로젝트 컴파일 시도 TryCatch [Try] >

    13. 프로젝트 컴파일 Sequence >

    14. 프로젝트에 대해 MSBuild 실행 MSBuild

    이 구조를 탐색하는 방법에 대한 자세한 내용은 복잡한 Windows Workflow에서 탐색을 참조하십시오.

  6. Run MSBuild for Project 활동을 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.

  7. 속성 창에서 OutDir 상자의 데이터를 제거하여 이 속성을 빈 문자열로 설정합니다.

  8. 속성 창에서 CommandLineArguments 속성을 다음 값으로 설정합니다.

    String.Format("/p:SkipInvalidConfigurations=true;TeamBuildOutDir=""{0}"" {1}",
    BinariesDirectory, MSBuildArguments)
    
  9. CustomOutputDirInline.xaml을 저장합니다.

  10. 소스 제어 탐색기에서 이 파일의 변경 내용을 체크 인합니다.

코드 프로젝트에 저장 폴더 논리 포함

빌드 정의와 사용자 지정 빌드 프로세스 템플릿을 만들었으므로 이 빌드 프로세스에서 컴파일하는 각 코드 프로젝트에 디렉터리 구조 논리를 포함해야 합니다.

참고

DefaultTemplate.xaml 워크플로는 MSBuild 컴파일러를 통해 각 프로젝트를 반복하고 실행하지 않기 때문에 워크플로 자체에는 이 논리를 포함할 수 없습니다. 대신 워크플로는 MSBuild를 한 번 호출하여 모든 솔루션과 프로젝트를 컴파일합니다.

폴더 논리를 포함하고 저장하려면

  1. 소스 제어 탐색기에서 OurTeamBuild 빌드 정의에서 빌드하는 솔루션을 엽니다.

  2. 필요한 출력 디렉터리 요소를 솔루션의 각 코드 프로젝트에 추가합니다. 이 속성은 Visual C# 또는 Visual Basic과 같은 관리 코드 프로젝트의 경우 OutputPath이고, Visual C++ 프로젝트의 경우 OutDir입니다. 솔루션의 각 코드 프로젝트에 대해 다음 단계를 수행합니다.

    1. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭합니다. 프로젝트 언로드 명령을 사용할 수 있으면 클릭합니다.

    2. 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 ProjectName 편집을 클릭합니다.

    3. 다음 단계 중 하나를 수행합니다.

      • Visual C# 또는 Visual Basic과 같은 관리 코드 프로젝트인 경우: OutputPath 요소를 추가합니다. 다음 예제와 같이 코드 프로젝트에 이미 있는 마지막 OutputPath 요소 뒤에 이 요소를 배치해야 합니다.

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
         ...
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86'">
         ...
         <OutputPath>bin\Debug\</OutputPath>
         ...
        </PropertyGroup>
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
         ...
         <OutputPath>bin\Release\</OutputPath>
         ...
        </PropertyGroup>
        
        <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
        <OutputPath>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)</OutputPath>
        </PropertyGroup>
        
      • Visual C++ 프로젝트인 경우: OutDir 요소를 추가합니다. 다음 예제와 같이 Microsoft.Cpp.targets를 가져오는 요소 앞에 이 요소를 배치해야 합니다.

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
        ...
        
        <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
         <OutDir>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)\</OutDir>
        </PropertyGroup>
        
        <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
        </Project>
        
    4. 코드 프로젝트를 저장합니다.

  3. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 체크 인을 클릭합니다.

  4. OurTeamBuild에서 빌드하는 각 솔루션에 대해 이러한 단계를 반복합니다.

중앙 집중화된 두 파일에서 유지 관리되는 논리를 사용하여 컴파일된 이진 파일 구성

유지 관리할 코드 프로젝트가 많은 경우 OutputPath 및 OutDir 요소를 두 공유 파일에 유지하면 이전 단원에서 설명하는 프로세스를 개선할 수 있습니다. 이 방법을 사용하는 경우 각 코드 프로젝트 대신 중앙 집중화된 두 파일을 수정하여 저장 폴더의 디렉터리 구조를 보다 쉽게 변경할 수 있습니다.

프로세스의 개요

다음 다이어그램에서는 이러한 빌드 프로세스를 구현하는 방법을 상위 수준에서 보여 줍니다.

사용자 지정 출력 논리를 가져온 흐름

수행하는 단계의 개요

다음 단계를 수행하여 DefaultTemplate.xaml을 기반으로 이러한 종류의 사용자 지정 빌드 프로세스를 만들 수 있습니다.

  • 소스 제어 탐색기에서 공용 MSBuild 코드를 포함할 $/OurTeam/BuildProcessMSBuild와 같은 이름의 디렉터리를 만듭니다. 이 디렉터리에서 저장 폴더에 만들어질 하위 디렉터리 구조를 정의하는 MSBuild 파일을 만들고 저장합니다.

  • 1단계 빌드 정의 및 빌드 프로세스 템플릿

    • 다음 단계를 수행하여 OurTeamBuild와 같은 이름의 빌드 정의를 업데이트합니다.

      • 작업 영역 탭에서 $/OurTeam/BuildProcessMSBuild 디렉터리를 매핑합니다.

      • 프로세스 탭에서 CustomOutputDirImport.xaml과 같은 이름의 새 빌드 프로세스 템플릿을 기반으로 빌드 정의를 설정합니다.

    • CustomOutputDirImport.xaml에서 다음 단계를 수행합니다.

      • Run On Agent 활동으로 범위가 지정된 String 변수로 LocalPathToMSBuildCode를 선언합니다.

      • ServerPathToMSBuildCode를 인수로 선언합니다.

        이 인수를 추가한 후에는 OurTeamBuild 정의를 수정해야 합니다. 프로세스 탭에서 이 빌드 프로세스 매개 변수의 값으로 $/OurTeam/BuildProcessMSBuild를 입력합니다.

      • Run on Agent > 활동에서 Try Compile, Test, and Associate Changesets and Work Items [Try] 활동 앞에 MSBuild에서 처리할 수 있는 빌드 에이전트의 로컬 경로로 ServerPathToMSBuildCode 인수를 변환하는 ConvertWorkspaceItem 활동을 추가합니다. 그런 다음 LocalPathToMSBuildCode 변수에 이 값을 삽입합니다.

      • 코드를 컴파일하는 Run MSBuild for Project 활동의 인스턴스에서 다음 단계를 수행합니다.

        • Run MSBuild for Project 활동의 OutDir 속성 값을 제거하여 빈 문자열로 만들어 이 속성을 사용하지 않도록 설정합니다.

          참고

          이렇게 변경하지 않으면 OutDir 속성이 코드 프로젝트에서 구현하는 사용자 지정된 모든 디렉터리 구조 논리를 재정의합니다.

        • BinariesDirectory 변수에서 빌드 에이전트의 저장 폴더가 포함된 문자열 값을 수집하여 TeamBuildOutDir과 같은 이름의 인수로 MSBuild에 전달합니다.

        • LocalPathToMSBuildCode의 값을 CommonMSBuildCode와 같은 이름의 인수로 MSBuild에 전달합니다.

  • 2단계 코드 프로젝트

    • OurTeamBuild에서 컴파일하는 각 코드 프로젝트에서 적절한 위치에 <Import /> 요소를 추가합니다.

다음 소단원에서는 이러한 단계를 수행하는 방법에 대해 자세히 설명합니다.

저장 폴더 논리가 포함된 MSBuild 공용 코드 파일 만들기

이 방법을 수행하려면 먼저 디렉터리 한 개와 MSBuild 프로젝트 파일을 두 개 만듭니다. 이러한 파일에는 저장 폴더에 만들어질 하위 디렉터리 구조를 정의하는 논리가 포함되어 있습니다.

파일을 만들려면

  1. 소스 제어 탐색기에서 다음 단계 중 하나를 수행합니다.

    • MSBuild 공용 코드를 저장하는 디렉터리를 찾습니다.

    • MSBuild 공용 코드를 저장할 디렉터리를 만들고 $/OurTeam/BuildProcessMSBuild와 같은 이름을 지정합니다.

  2. 매핑되지 않음 링크가 소스 제어 탐색기 위쪽의 로컬 경로 레이블 옆에 나타나는 경우 이 링크를 클릭하여 서버 디렉터리를 로컬 작업 영역의 적절한 디렉터리에 매핑합니다.

  3. 다음 파일을 만들어 저장하고 $/OurTeam/BuildProcessMSBuild에 체크 인합니다.

    • Visual C# 또는 Visual Basic과 같은 관리 코드 프로젝트(예: ManagedCodeProjectOutDir.targets)의 저장 폴더 논리를 포함할 파일

      <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
       <OutputPath>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)</OutputPath>
      </PropertyGroup>
      </Project>
      
    • Visual C++ 코드 프로젝트(예: CPPCodeProjectOutDir.targets)의 저장 폴더 논리를 포함할 파일

      <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup Condition="$(TeamBuildOutDir) != '' ">
       <OutDir>$(TeamBuildOutDir)\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)\</OutDir>
      </PropertyGroup>
      </Project>
      

빌드 정의 및 CustomOutputDirImport 사용자 지정 빌드 프로세스 템플릿 만들기

이 항목의 앞부분에서 만든 OurTeamBuild라는 빌드 정의를 다시 사용할 수 있습니다. 이 빌드 정의를 새 빌드 프로세스 템플릿을 기반으로 설정하고 추가로 조정할 것입니다.

빌드 정의와 빌드 프로세스 템플릿을 만들려면

  1. 팀 탐색기에서 OurTeamBuild를 마우스 오른쪽 단추로 클릭한 다음 편집을 클릭합니다.

  2. 프로세스 탭을 클릭한 다음 기본 템플릿(DefaultTemplate.xaml)을 기반으로 하는 CustomOutputDirImport.xaml이라는 새 빌드 프로세스 템플릿으로 빌드 프로세스 템플릿을 설정합니다.

    자세한 내용은 사용자 지정 빌드 프로세스 템플릿 만들기 및 작업을 참조하십시오.

  3. 소스 제어 탐색기에서 팀 프로젝트를 열고 빌드 프로세스 템플릿이 포함된 폴더를 표시합니다. 기본적으로 이 하위 디렉터리의 이름은 BuildProcessTemplates입니다.

  4. 이 절차의 앞부분에서 만든 CustomOutputDirImport.xaml 파일을 체크 아웃한 다음 두 번 클릭합니다.

  5. 워크플로 디자이너에서 다음 구조에 있는 Run on Agent 활동을 찾습니다.

    1. 시퀀스(Sequence) >

    2. 에이전트에서 실행(AgentScope) >

    이 구조를 탐색하는 방법에 대한 자세한 내용은 복잡한 Windows Workflow에서 탐색을 참조하십시오.

  6. 창의 아래쪽에서 인수를 클릭합니다.

  7. 인수 창에서 인수를 만들고 ServerPathToMSBuildCode라는 이름을 지정합니다.

  8. 속성 창에서 IsRequired 확인란을 선택합니다.

  9. 창의 아래쪽에서 변수를 클릭합니다.

  10. 변수 창에서 범위를 Run On Agent로 설정하여 String 형식의 LocalPathToMSBuildCode라는 변수를 선언합니다.

  11. 도구 상자Team Foundation 빌드 활동 섹션에서 Initialize Workspace 활동과 If CreateLabel 활동 사이의 위치로 ConvertWorkspaceItem 활동을 끌어 옵니다.

    참고

    Team Foundation 빌드 활동 섹션이 도구 상자에 나타나지 않는 경우 Microsoft.TeamFoundation.Build.Workflow.dll 어셈블리에서 이 섹션을 수동으로 추가할 수 있습니다. 자세한 내용은 How to: Add Activities to the Toolbox를 참조하십시오.

  12. ConvertWorkspaceItem 활동을 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.

  13. 속성 창에서 다음 속성 값을 설정합니다.

    • 표시 이름: Get Local Path to MSBuild Code

    • 입력: ServerPathToMSBuildCode

    • 결과: LocalPathToMSBuildCode

    • 작업 영역: Workspace

  14. 다음 구조에 있는 Run MSBuild for Project 활동의 두 번째 인스턴스를 찾습니다.

    1. 시퀀스(Sequence) >

    2. 에이전트에서 실행(AgentScope) >

    3. 변경 집합과 작업 항목 컴파일, 테스트 및 연결 시도(TryCatch [Try]) >

    4. 시퀀스(Sequence) >

    5. 변경 집합과 작업 항목 컴파일, 테스트 및 연결(Parallel) >

    6. 컴파일 및 테스트 시도 TryCatch [Try] >

    7. 컴파일 및 테스트 Sequence >

    8. For Each BuildSettings.PlatformConfigurations의 구성 ForEach [Body] >

    9. 구성에 대해 컴파일 및 테스트 Sequence >

    10. If BuildSettings.HasProjectsToBuild If [Then] >

    11. For Each BuildSettings.ProjectsToBuild의 프로젝트 ForEach [Body] >

    12. 프로젝트 컴파일 시도 TryCatch [Try] >

    13. 프로젝트 컴파일 Sequence >

    14. 프로젝트에 대해 MSBuild 실행 MSBuild

    이 구조를 탐색하는 방법에 대한 자세한 내용은 복잡한 Windows Workflow에서 탐색을 참조하십시오.

  15. Run MSBuild for Project 활동을 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.

  16. 속성 창에서 OutDir 상자의 데이터를 제거하여 이 속성을 빈 문자열로 설정합니다.

  17. 속성 창에서 CommandLineArguments 속성을 다음 값으로 설정합니다.

    String.Format("/p:SkipInvalidConfigurations=true;CommonMSBuildCode=""{0}"";TeamBuildOutDir=""{1}"" {2}",
    LocalPathToMSBuildCode, BinariesDirectory, MSBuildArguments)
    
  18. CustomOutputDirImport.xaml을 저장합니다.

    소스 제어 탐색기에서 이 파일의 변경 내용을 체크 인합니다.

OurTeamBuild 빌드 정의 업데이트

다음 작업으로, OurTeamBuild 빌드 정의를 변경해야 합니다.

빌드 정의를 업데이트하려면

  1. 팀 탐색기에서 작업 중인 팀 프로젝트를 확장하고 빌드 폴더를 확장한 다음 OurTeamBuild 빌드 정의를 마우스 오른쪽 단추로 클릭하고 빌드 정의 편집을 클릭합니다.

  2. 작업 영역 탭을 클릭하고 다음 값을 가진 항목을 추가합니다.

    • 상태: 활성

    • 소스 제어 폴더: $/OurTeam/BuildProcessMSBuild

    • 빌드 에이전트 폴더: $(SourceDir)\BuildProcessMSBuild

  3. 프로세스 탭을 클릭하고 ServerPathToMSBuildCode 상자에 $/OurTeam/BuildProcessMSBuild를 입력합니다.

  4. 빌드 정의를 저장합니다.

코드 프로젝트로 저장 폴더 논리 가져오기

빌드 정의와 사용자 지정 빌드 프로세스 템플릿을 만든 후에는 코드 프로젝트를 업데이트하여 디렉터리 구조 논리를 가져와야 합니다.

저장 폴더 논리를 가져오려면

  1. 소스 제어 탐색기에서, OurTeamBuild에서 빌드하는 솔루션을 두 번 클릭합니다.

  2. 솔루션의 각 코드 프로젝트에 대해 다음 단계를 수행합니다.

    1. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭합니다. 프로젝트 언로드 명령을 사용할 수 있으면 클릭합니다.

    2. 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 ProjectName 편집을 클릭합니다.

    3. 다음 단계 중 하나를 수행합니다.

      • Visual C# 또는 Visual Basic과 같은 관리 코드 프로젝트인 경우: 다음 예제와 같이 코드 프로젝트에 이미 있는 마지막 OutputPath 요소 뒤에 Import 요소를 추가합니다.

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
         ...
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86'">
         ...
         <OutputPath>bin\Debug\</OutputPath>
         ...
        </PropertyGroup>
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
         ...
         <OutputPath>bin\Release\</OutputPath>
         ...
        </PropertyGroup>
        
        <Import Condition=" $(CommonMSBuildCode) != ''" Project="$(CommonMSBuildCode)\ManagedCodeProjectOutDir.targets"/>
        
      • Visual C++ 프로젝트인 경우: 다음 예제와 같이 Microsoft.Cpp.targets를 가져오는 요소 앞에 Import 요소를 추가합니다.

        <Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003 ...">
        ...
        <Import Condition=" $(CommonMSBuildCode) != ''" Project="$(CommonMSBuildCode)\CPPCodeProjectOutDir.targets"/>
        
        <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
        </Project>
        
    4. 코드 프로젝트를 저장합니다.

  3. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 체크 인을 클릭합니다.

  4. OurTeamBuild에서 빌드하는 각 솔루션에 대해 이전 단계를 반복합니다.

다음 단계

후속 처리를 위해 다음 작업을 수행할 수 있습니다.

  • 저장 폴더 논리 수정. 팀의 요구 사항을 충족하기 위해 앞의 단원에서 제공한 OutputPath 및 OutDir 요소의 내용을 수정할 수 있습니다.

  • 사용자 지정된 코드 프로젝트를 템플릿으로 저장. 팀에서 많은 코드 프로젝트를 만드는 경우 사용자 지정 MSBuild 논리를 새 코드 프로젝트에 자동으로 포함할 수 있습니다. 솔루션 탐색기에서 코드 프로젝트를 클릭하고 파일 메뉴를 연 다음 템플릿 내보내기를 클릭합니다.

추가 리소스

Microsoft 웹 사이트의 다음 항목에서 추가 정보를 찾을 수 있습니다.

참고 항목

개념

소스 제어 탐색기 사용

팀 프로젝트에 사용할 수 있도록 작업 영역 만들기

기타 리소스

MSBuild 참조