Поиск…


замечания

Для получения более подробной информации см. « Порядок оценки свойств и предметов» на странице документации MSDN « Сравнение свойств и элементов» .

Пример, иллюстрирующий порядок оценки

MSBuild оценивает элементы PropertyGroup , Choose и ItemGroup которые находятся непосредственно под элементом Project до тех, которые находятся в элементах Target .

  • Непосредственно под элементом Project элементы PropertyGroup и Choose оцениваются в том порядке, в котором они отображаются, а затем элементы ItemGroup оцениваются в том порядке, в котором они отображаются.
  • В элементах Target PropertyGroup и ItemGroup имеют равный приоритет и оцениваются в том порядке, в котором они отображаются.

В файлах, связанных с помощью Import , MSBuild оценивает PropertyGroup , Choose и ItemGroup таким же образом, как указано выше, и, как если бы содержимое импортированных файлов появилось в строке, где находится Import .

Комментарии ниже содержат значения свойств и количество элементов до и после MSBuild оценивает выбранные строки.

<Project DefaultTargets="FooTarget" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="FooTarget">
        <ItemGroup>
            <!-- '$(FooProp)' == '2', '@(FooItem->Count())' == '1' -->
            <FooItem Include="foo value B" />
            <!-- '$(FooProp)' == '2', '@(FooItem->Count())' == '2' -->
        </ItemGroup>
        <PropertyGroup>
            <!-- '$(FooProp)' == '2', '@(FooItem->Count())' == '2' -->
            <FooProp>3</FooProp>
            <!-- '$(FooProp)' == '3', '@(FooItem->Count())' == '2' -->
        </PropertyGroup>
    </Target>
    <ItemGroup>
        <!-- '$(FooProp)' == '2', '@(FooItem->Count())' == '0' -->
        <FooItem Include="foo value A" />
        <!-- '$(FooProp)' == '2', '@(FooItem->Count())' == '1' -->
    </ItemGroup>
    <PropertyGroup>
        <!-- '$(FooProp)' == '', '@(FooItem->Count())' == '0' -->
        <FooProp>1</FooProp>
        <!-- '$(FooProp)' == '1', '@(FooItem->Count())' == '0' -->
    </PropertyGroup>
    <Choose>
        <When Condition=" '$(FooProp)' == '1' ">
            <!-- '$(FooProp)' == '1', '@(FooItem->Count())' == '0' -->
            <FooProp>2</FooProp>
            <!-- '$(FooProp)' == '2', '@(FooItem->Count())' == '0' -->
        </When>
    </Choose>
</Project>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow