Recherche…


Remarques

Pour plus de détails, voir Ordre d'évaluation des propriétés et des éléments sur la page de documentation MSDN Comparaison des propriétés et des éléments .

Exemple illustrant l'ordre d'évaluation

MSBuild évalue les éléments PropertyGroup , Choose et ItemGroup qui se trouvent directement sous l'élément Project avant ceux des éléments Target .

  • Directement sous l'élément Project éléments PropertyGroup et Choose sont évalués dans l'ordre dans lequel ils apparaissent, puis les éléments ItemGroup sont évalués dans l'ordre dans lequel ils apparaissent.
  • Dans Target éléments Target , PropertyGroup et ItemGroup partagent la même priorité et sont évalués dans l'ordre dans lequel ils apparaissent.

Dans les fichiers référencés via Import , MSBuild évalue PropertyGroup , Choose et ItemGroup de la même manière que ci-dessus et comme si le contenu des fichiers importés apparaissait en ligne à l'emplacement de l' Import .

Les commentaires ci-dessous fournissent des valeurs de propriété et des nombres d'éléments avant et après que MSBuild évalue les lignes sélectionnées.

<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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow