Sdílet prostřednictvím


Přírůstkové sestavení

Přírůstkové sestavení jsou sestavení, která jsou optimalizována tak, aby cíle, které mají výstupní soubory, které jsou aktuální jejich odpovídající vstupní soubory nebudou provedeny.Cílový prvek může mít i Inputs jako vstup očekává atribut, který určuje, jaké položky cíl a Outputs atribut, který určuje, jaké položky se vytvoří jako výstup.Nástroj MSBuild se pokusí najít mapování 1: 1 mezi hodnotami těchto atributů.Pokud existuje mapování 1: 1, porovnává MSBuild časové razítko každé vstupní položky na časové razítko jeho odpovídající položka výstup.Výstupní soubory, které mají mapování 1: 1 budou porovnány všechny vstupní soubory.Zboží se považuje za aktuální, pokud je jeho výstupní soubor stejného věku nebo starší než jeho vstupní soubor nebo soubory.

Pokud jsou všechny položky výstup aktuální, MSBuild vynechává cíl.Tato přírůstkového sestavení cíle můžete výrazně zvýšit rychlost sestavení.Pokud pouze některé soubory jsou aktuální, MSBuild provede cíl, ale přeskočí aktuální položky a tím přináší všechny položky aktuální.Říká se částečné přírůstkového sestavení.

transformace položky jsou obvykle vyrobeny mapování 1: 1.Další informace naleznete v tématu Nástroj MSBuild transformace.

Zvažte následující cíle.

<Target Name="Backup" Inputs="@(Compile)" 
    Outputs="@(Compile->'$(BackupFolder)%(Identity).bak')">
    <Copy SourceFiles="@(Compile)" DestinationFiles=
        "@(Compile->'$(BackupFolder)%(Identity).bak')" />
</Target>

Sadu souborů, které jsou reprezentovány Compile typ položky zkopírovány do záložního adresáře.Záložní soubory mají příponu názvu souboru BAK.Pokud soubory Compile typ položky nebo odpovídající záložní soubory nejsou odstranit nebo změnit po spuštění zálohování cíl, a pak je cíl zálohování vynechány v následná sestavení.

Odvození výstup

Porovná MSBuild Inputs a Outputs atributy cílové k určení, zda cíl provést.V ideálním případě sadu souborů, který existuje po dokončení přírůstkového sestavení měla zůstat stejné zda přidružené cíle jsou provedeny.Protože sestavení mohou ovlivnit vlastnosti a položky, které jsou vytvořeny nebo pozměněné úkoly, musí nástroj MSBuild odvodit jejich hodnoty i v případě, že cíl, který ovlivňuje je vynechán.Jedná se o Výstup odvození.

Existují tři případy:

  • Cíl byl Condition atribut, který je vyhodnocován na false.V tomto případě cíl nelze spustit a nemá žádný vliv na sestavení.

  • Cíl má zastaralý výstupů a je spuštěn, aby aktuální.

  • Cíl nemá žádné výstupy zastaralý a je vynechána.Nástroj MSBuild vyhodnotí cíl a změní položky a vlastnosti jako v případě, že cílové spuštění.

Podporu přírůstkovou kompilaci úkoly musí zajistit, aby TaskParameter hodnotu atributu Output prvkem je rovna vstupní parametr úlohy.Zde jsou některé příklady:

<CreateProperty Value="123">
    <Output PropertyName="Easy" TaskParameter="Value" />
</CreateProperty>

Vytvoří vlastnost snadno, která má hodnotu "123", zda cíl je proveden nebo vynechány.

<CreateItem Include="a.cs;b.cs">
    <Output ItemName="Simple" TaskParameter="Include" />
</CreateItem>

Vytvoří typ položky jednoduché, která má dvě položky, "a.cs" a "b.cs", zda cíl je proveden nebo vynechány.

MSBuild 3.5 odvození výstup automaticky provede u položky a vlastnosti skupiny v cílové.CreateItemúkoly se nevyžaduje cílový a je třeba se vyhnout.Také CreateProperty úkoly by měl být používán cíl pouze k určení, zda byla provedena cíl.

Určení, zda cíl byl spuštěn.

Z důvodu odvození výstupu, je nutné přidat CreateProperty na cíl, takže můžete určit, zda byla provedena cíl zkoumat vlastnosti a položky úkol.Přidat CreateProperty úkolů k cíli a pojmenujte ji Output prvek jehož TaskParameter je "ValueSetByTask".

<CreateProperty Value="true">
    <Output TaskParameter="ValueSetByTask" PropertyName="CompileRan" />
</CreateProperty>

To vytvoří vlastnost CompileRan a dá jí hodnotu true, ale pouze v případě, že cíl je spuštěn.Cíl je vynechána, CompileRan se nevytvoří.

Viz také

Koncepty

Nástroj MSBuild cíle