Поделиться через


Свойства MSBuild

Свойства представляют собой пары "имя-значение", с помощью которых выполняется настройка построений.Свойства используются для передачи значений задачам, оценки условий и сохранения значений, на которые будут указывать ссылки в файле проекта.

Определение свойств и ссылки на них в файле проекта

Для объявления свойств создается элемент с именем свойства, который является дочерним по отношению к элементу PropertyGroup.Например, в следующем XML-коде создается свойство BuildDir со значением Build.

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

Для ссылки на свойства в файле проекта используется синтаксис $(PropertyName).Например, ссылка на свойство из предыдущего кода создается с помощью выражения $(BuildDir).

Значения свойств можно изменять переопределением свойств.Свойству BuildDir можно присвоить новое значение с помощью следующего XML-кода:

<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

Глобальные свойства можно также задавать или изменять для дочерних проектов многопроектных построений, используя атрибут Properties задачи MSBuild.Дополнительные сведения см. в разделе Задача MSBuild.

При задании свойства с помощью атрибута TreatAsLocalProperty в теге проекта, то глобальное значение свойства не переопределяет значение свойства, которое задано в файле проекта.Дополнительные сведения см. в разделах Элемент Project (MSBuild) и Практическое руководство. Построение одинаковых исходных файлов с различными параметрами.

Функции свойств

В Microsoft .NET Framework 4 для оценки скриптов MSBuild можно использовать функции свойств.С помощью скриптов построения можно считывать системное время, сравнивать строки, вести поиск по регулярным выражениям и выполнять многие другие действия, не используя задачи MSBuild.

Можно применять методы String (методы экземпляров) для работы с любыми значениями свойств и вызывать статические методы многих системных классов.Например, в следующем коде свойству построения задается текущая дата:

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

Дополнительные сведения и полный список функций свойств см. в разделе Функции свойств.

Создание свойств во время выполнения

Свойствам, размещенным за пределами элемента Target, значения присваиваются на этапе оценки построения.Свойства могут создаваться или изменяться и на последующем этапе выполнения с помощью перечисленных ниже методов.

  • Можно создать свойство посредством любой задачи.Для этого элемент Task должен содержать дочерний элемент Output с атрибутом PropertyName.

  • Можно создать свойство посредством задачи CreateProperty.Этот метод не рекомендуется использовать.

  • Начиная с версии .NET Framework 3.5 элементы Target могут содержать элементы PropertyGroup, в состав которых, в свою очередь, могут входить объявления свойств.

Сохранение XML в свойствах

Свойства могут содержать произвольные XML-элементы, предназначенные для передачи значений задачам или отображения информации журналов.В следующем примере показано свойство ConfigTemplate, значение которого содержит XML-код и ссылки на другие свойства.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