MSBuild 속성

속성은 빌드를 구성하는 데 사용될 수 있는 이름-값 쌍입니다.속성을 사용하여 값을 작업으로 전달하고, 조건을 확인하며, 프로젝트 파일 전체에서 참조할 수 있도록 값을 저장할 수 있습니다.

프로젝트 파일에서 속성 정의 및 참조

속성 이름을 갖는 요소를 PropertyGroup 요소의 자식으로 만들어 속성을 선언합니다.예를 들어, 다음 XML은 값이 Build인 BuildDir이라는 속성을 만듭니다.

<PropertyGroup>
    <BuildDir>Build</BuildDir>
</PropertyGroup>

프로젝트 파일 전체에서 $(PropertyName) 구문을 사용하여 속성을 참조합니다.예를 들어, 이전 예제의 속성은 $(BuildDir)로 참조됩니다.

속성을 다시 정의하여 속성 값을 변경할 수 있습니다.다음 XML을 사용하면 BuildDir 속성에 새 값을 지정할 수 있습니다.

<PropertyGroup>
    <BuildDir>Alternate</BuildDir>
</PropertyGroup>

속성은 프로젝트 파일에 표시되는 순서대로 실행됩니다.BuildDir의 새 값은 이전 값을 할당한 후 선언해야 합니다.

예약 속성

MSBuild는 몇 개의 속성 이름을 예약하여 프로젝트 파일과 MSBuild 이진 파일에 대한 정보를 저장합니다.이러한 속성은 다른 속성과 같이 $ 표기법으로 참조됩니다.예를 들어, $(MSBuildProjectFile)은 파일 확장명을 포함하는 프로젝트 파일의 전체 파일 이름을 반환합니다.

자세한 내용은 방법: 프로젝트 파일의 이름 또는 위치 참조MSBuild 예약 속성를 참조하십시오.

환경 속성

프로젝트 파일에서 환경 변수도 예약 속성과 같은 방식으로 참조할 수 있습니다.예를 들어, 프로젝트 파일에서 PATH 환경 변수를 사용하려면 $(Path)를 사용합니다.프로젝트에 환경 속성과 이름이 같은 속성이 정의되어 있으면 프로젝트의 속성이 환경 변수의 값을 재정의합니다.

각 MSBuild 프로젝트를 격리 된 환경 블록 있습니다:만 읽기 표시 되 고 자체 블록을 씁니다.MSBuild 프로젝트 파일을 평가 하거나 구축 하기 전에 속성 컬렉션 초기화 될 때만 환경 변수를 읽습니다.그 후 환경 속성 정적 이지만, 같은 이름과 값으로 생성 된 각 도구를 시작 합니다.

환경 변수에서 생성 된 도구 내에서 현재 값을 얻을 수 있는 속성 함수 System.Environment.GetEnvironmentVariable.하지만 기본 방법은 작업 매개 변수를 사용 하는 것 EnvironmentVariables.시스템 환경 변수를 영향을 주지 않고 환경 속성이이 문자열 배열에 설정 된 생성 된 도구에 전달할 수 있습니다.

팁

모든 환경 변수를 초기 등록 정보를 읽습니다.유효한 MSBuild 속성 이름이 아닌, "386"와 같은 이름으로 모든 환경 변수는 무시 됩니다.

자세한 내용은 방법: 빌드 시 환경 변수 사용을 참조하십시오.

레지스트리 속성

다음 구문을 사용하여 시스템 레지스트리 값을 읽을 수 있습니다. 여기서 Hive는 레지스트리 하이브(예: HKEY_LOCAL_MACHINE)이고, Key는 키 이름, SubKey는 하위 키 이름, Value는 하위 키 값입니다.

$(registry:Hive\MyKey\MySubKey@Value)

기본 하위 키 값을 가져오려면 Value를 생략합니다.

$(registry:Hive\MyKey\MySubKey)

이 레지스트리 값을 사용하여 빌드 속성을 초기화할 수 있습니다.예를 들어, Visual Studio 웹 브라우저 홈 페이지를 나타내는 빌드 속성을 만들려면 다음 코드를 사용합니다.

<PropertyGroup>
  <VisualStudioWebBrowserHomePage>
    $(registry:HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\WebBrowser@HomePage)
  </VisualStudioWebBrowserHomePage>
<PropertyGroup>

전역 속성

MSBuild를 사용하면 /property(또는 /p) 스위치를 통해 명령줄에서 속성을 설정할 수 있습니다.이러한 전역 속성 값은 프로젝트 파일에 설정된 속성 값을 재정의합니다.환경 속성도 여기에 포함되지만, 변경할 수 없는 예약 속성은 포함되지 않습니다.

다음 예제에서는 전역 Configuration 속성을 DEBUG로 설정합니다.

msbuild.exe MyProj.proj /p:Configuration=DEBUG

MSBuild 작업의 Properties 특성을 사용하면 다중 프로젝트 빌드의 자식 프로젝트에 대해 전역 속성을 설정하거나 수정할 수도 있습니다.자세한 내용은 MSBuild 작업을 참조하십시오.

사용 하 여 속성을 지정 하는 경우는 TreatAsLocalProperty 특성에는 전역 속성 값은 프로젝트 파일에 설정 되는 속성 값에 우선 하지 않고 프로젝트 태그.자세한 내용은 Project 요소(MSBuild)방법: 동일한 소스 파일을 다른 옵션을 사용하여 빌드를 참조하십시오.

속성 함수

.NET Framework 버전 4부터는 속성 함수를 사용하여 MSBuild 스크립트를 실행할 수 있습니다.MSBuild 작업을 사용하지 않고도 빌드 스크립트 내에서 시스템 시간을 읽고 문자열을 비교하고 정규식을 일치시키고 다른 많은 작업을 수행할 수 있습니다.

문자열(인스턴스) 메서드를 사용하여 임의의 속성 값에 대한 작업을 수행하고 여러 시스템 클래스의 정적 메서드를 호출할 수 있습니다.예를 들어, 다음과 같은 방법으로 빌드 속성을 오늘 날짜로 설정할 수 있습니다.

<Today>$([System.DateTime]::Now.ToString("yyyy.MM.dd"))</Today>

자세한 내용과 속성 함수의 목록은 속성 함수를 참조하십시오.

실행 중에 속성 만들기

Target 요소 외부에 배치된 속성의 값은 빌드 실행 단계 중에 할당됩니다.이후 실행 단계에서 다음과 같이 속성을 만들거나 수정할 수 있습니다.

  • 임의의 작업에서 속성을 내보낼 수 있습니다.속성을 내보내려면 Task 요소에 PropertyName 특성을 가진 자식 Output 요소가 있어야 합니다.

  • CreateProperty 작업에서 속성을 내보낼 수 있습니다.이 사용법은 사용되지 않습니다.

  • .NET Framework 3.5부터는 속성 선언이 있을 수 있는 PropertyGroup 요소를 Target 요소에 포함할 수 있습니다.

속성에 XML 저장

값을 작업으로 전달하거나 로깅 정보를 표시하는 데 도움이 될 수 있는 임의의 XML을 속성에 포함할 수 있습니다.다음 예제에서는 XML 및 기타 속성 참조가 포함된 값을 가진 ConfigTemplate 속성을 보여 줍니다.MSBuild에서는 해당하는 각각의 속성 값을 사용하여 속성 참조를 바꿉니다.속성 값은 표시되는 순서대로 할당됩니다.따라서 이 예제에서 $(MySupportedVersion), $(MyRequiredVersion) 및 $(MySafeMode)는 이미 정의되어 있어야 합니다.

<PropertyGroup>
    <ConfigTemplate>
        <Configuration>
            <Startup>
                <SupportedRuntime
                    ImageVersion="$(MySupportedVersion)"
                    Version="$(MySupportedVersion)"/>
                <RequiredRuntime
                    ImageVersion="$(MyRequiredVersion)
                    Version="$(MyRequiredVersion)"
                    SafeMode="$(MySafeMode)"/>
            </Startup>
        </Configuration>
    </ConfigTemplate>
</PropertyGroup>

참고 항목

작업

방법: 빌드 시 환경 변수 사용

방법: 프로젝트 파일의 이름 또는 위치 참조

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

참조

MSBuild 예약 속성

Property 요소(MSBuild)

기타 리소스

MSBuild 개념

MSBuild