Suche…


Bemerkungen

Weitere Informationen finden Sie unter Eigenschafts- und Artikelauswertungsreihenfolge auf der MSDN-Dokumentationsseite. Vergleich von Eigenschaften und Elementen .

Beispiel zur Veranschaulichung der Reihenfolge der Auswertung

MSBuild wertet PropertyGroup , Choose und ItemGroup Elemente , die direkt unter dem sind Project vor denen , die in sind Target

  • Direkt unter dem Project Element werden PropertyGroup und Choose Elemente in der Reihenfolge ausgewertet, in der sie ItemGroup werden. Anschließend werden ItemGroup Elemente in der Reihenfolge ausgewertet, in der sie ItemGroup werden.
  • In den Target Elementen haben PropertyGroup und ItemGroup gleiche Priorität und werden in der Reihenfolge ausgewertet, in der sie ItemGroup werden.

In Dateien, auf die mit Import verwiesen wird, wertet MSBuild PropertyGroup , Choose und ItemGroup auf die gleiche Weise wie oben aus, als ob der Inhalt der importierten Dateien inline ItemGroup , wo sich der Import befindet.

In den folgenden Kommentaren werden Eigenschaftswerte und Elementanzahl vor und nach dem Auswerten ausgewählter Zeilen durch MSBuild angegeben.

<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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow