방법: 동일한 소스 파일을 다른 옵션을 사용하여 빌드

자주 프로젝트를 빌드할 때 동일한 구성 요소를를 각기 다른 빌드 옵션을 컴파일합니다.예를 들어, 기호 정보를 사용하여 디버그 빌드를 만들거나 기호 정보를 사용하지 않고 최적화가 설정된 릴리스 빌드를 만들 수 있습니다.또는 x86이나 x64 같은 특정 플랫폼에서 실행할 프로젝트를 빌드할 수도 있습니다.이 모든 경우 대부분의 빌드 옵션은 동일하고, 빌드 구성을 제어하기 위해 몇 가지 옵션만 변경됩니다.MSBuild에서는 속성과 조건을 사용하여 다양한 빌드 구성을 만듭니다.

속성을 사용하여 프로젝트 수정

Property 요소는 임시 디렉터리의 위치처럼 프로젝트 파일에서 여러 번 참조되는 변수 또는 디버그 빌드와 릴리스 빌드처럼 여러 구성에서 사용되는 속성의 값을 설정하는 변수를 정의합니다.속성에 대한 자세한 내용은 MSBuild 속성을 참조하십시오.

프로젝트 파일을 변경하지 않아도 속성을 사용하여 빌드의 구성을 변경할 수 있습니다.Property 요소와 PropertyGroup 요소의 Condition 특성을 사용하여 속성의 값을 변경할 수 있습니다.MSBuild 조건에 대한 자세한 내용은 MSBuild 조건을 참조하십시오.

다른 속성을 기반으로 속성 그룹을 설정하려면

  • 다음과 같이 PropertyGroup 요소에 Condition 특성을 사용합니다.

    <PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
        <DebugType>full</DebugType>
        <Optimize>no</Optimize>
    </PropertyGroup>
    

다른 속성을 기반으로 속성을 정의하려면

  • 다음과 같이 Property 요소에 Condition 특성을 사용합니다.

    <DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>
    

명령줄에서 속성 지정

여러 구성을 사용하도록 프로젝트 파일을 작성한 경우 프로젝트를 빌드할 때마다 해당 구성을 변경할 수 있어야 합니다.MSBuild에서는 이러한 기능을 제공하기 위해 /property 또는 /p 스위치를 사용하여 속성을 명령줄에 지정하도록 합니다.

명령줄에서 프로젝트 속성을 설정하려면

  • 속성 및 속성 값과 함께 /property 스위치를 사용합니다.예를 들면 다음과 같습니다.

    msbuild file.proj /property:Flavor=Debug
    

    -또는-

    Msbuild file.proj /p:Flavor=Debug
    

명령줄에서 프로젝트 속성을 두 개 이상 지정하려면

  • 속성 및 속성 값과 함께 /property 또는 /p 스위치를 여러 번 사용하거나 하나의 /property 또는 /p 스위치에 여러 속성을 세미콜론(;)으로 구분하여 사용합니다.예를 들면 다음과 같습니다.

    msbuild file.proj /p:Flavor=Debug;Platform=x86
    

    -또는-

    msbuild file.proj /p:Flavor=Debug /p:Platform=x86
    

환경 변수 역시 속성으로 처리되며 MSBuild에 의해 자동으로 통합됩니다.환경 변수 사용에 대한 자세한 내용은 방법: 빌드 시 환경 변수 사용을 참조하십시오.

명령줄에 지정된 속성 값은 동일한 속성에 대해 프로젝트 파일에 설정된 모든 값보다 우선하고, 프로젝트 파일의 값은 환경 변수의 값보다 우선합니다.

사용 하 여이 동작을 변경할 수 있는 TreatAsLocalProperty 프로젝트 태그에서 특성.해당 특성에 나열 된 속성 이름에 값은 프로젝트 파일에서 명령줄에 지정 된 속성 값 보다를 우선 하지 않습니다.예를 들어가이 항목의 뒷부분에서 찾을 수 있습니다.

예제

다음 코드 예제에서는 "Hello World" 프로젝트에는 디버그 빌드와 릴리스 빌드를 만드는 데 사용할 수 있는 두 개의 새 속성 그룹이 포함 되어 있습니다.

이 프로젝트의 디버그 버전을 빌드하려면 다음을 입력합니다.

msbuild consolehwcs1.proj /p:flavor=debug

이 프로젝트의 일반 정품 버전을 빌드하려면 다음을 입력합니다.

msbuild consolehwcs1.proj /p:flavor=retail

<Project DefaultTargets = "Compile"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <!-- Sets the default flavor of an environment variable called 
    Flavor is not set or specified on the command line -->
    <PropertyGroup>
        <Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
    </PropertyGroup>

    <!-- Define the DEBUG settings -->
    <PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
        <DebugType>full</DebugType>
        <Optimize>no</Optimize>
    </PropertyGroup>

    <!-- Define the RETAIL settings -->
    <PropertyGroup Condition="'$(Flavor)'=='RETAIL'">
        <DebugType>pdbonly</DebugType>
        <Optimize>yes</Optimize>
    </PropertyGroup>

    <!-- Set the application name as a property -->
    <PropertyGroup>
        <appname>HelloWorldCS</appname>
    </PropertyGroup>

    <!-- Specify the inputs by type and file name -->
    <ItemGroup>
        <CSFile Include = "consolehwcs1.cs"/>
    </ItemGroup>

    <Target Name = "Compile">
        <!-- Run the Visual C# compilation using input files
        of type CSFile -->
        <CSC  Sources = "@(CSFile)"
            DebugType="$(DebugType)"
            Optimize="$(Optimize)"
            OutputAssembly="$(appname).exe" >

            <!-- Set the OutputAssembly attribute of the CSC
            task to the name of the executable file that is 
            created -->
            <Output TaskParameter="OutputAssembly"
                ItemName = "EXEFile" />
        </CSC>
        <!-- Log the file name of the output file -->
        <Message Text="The output file is @(EXEFile)"/>
    </Target>
</Project>

다음 예제에서는 사용 방법을 보여 줍니다 있는 TreatAsLocalProperty 특성입니다.Color 속성의 값은 Blue 프로젝트 파일에서 및 Green 명령줄에서.와 TreatAsLocalProperty="Color" 명령줄 속성 프로젝트 태그에 (Green) 프로젝트 파일에 정의 된 속성을 재정의 하지 않는 (Blue).

프로젝트를 빌드하려면 다음 명령을 입력 하십시오.

msbuild colortest.proj /t:go /property:Color=Green

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0" TreatAsLocalProperty="Color">

    <PropertyGroup>
        <Color>Blue</Color>
    </PropertyGroup>

    <Target Name="go">
        <Message Text="Color: $(Color)" />
    </Target>
</Project>

<!--
  Output with TreatAsLocalProperty="Color" in project tag:
     Color: Blue

  Output without TreatAsLocalProperty="Color" in project tag:
     Color: Green
-->

참고 항목

참조

Project 요소(MSBuild)

기타 리소스

MSBuild

MSBuild 개념

MSBuild 참조