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í s ohledem na jejich odpovídající vstupní soubory již nebudou provedeny.Cílový prvek může mít oba Inputs atribut, který určuje, jaké položky cíl jako vstup očekává a Outputs atribut, který určuje, jaké položky, se vytvoří jako výstup.Nástroj MSBuild pokusí najít mapování 1: 1 mezi hodnoty těchto atributů.Pokud existuje mapování 1: 1, MSBuild porovnává každé vstupní položky na časové razítko jeho odpovídající položka Výstupní časové razítko.Výstupní soubory, které mají žádné mapování 1: 1 jsou ve srovnání s všechny vstupní soubory.Zboží se považuje za aktuální, pokud jeho výstupní soubor stejného věku nebo novější než jeho vstupní soubor nebo soubory.
Pokud jsou všechny položky výstup aktuální, MSBuild vynechává cíl.To přírůstkové sestavení cíle, může výrazně zlepšit rychlost sestavení.Pokud jen některé soubory jsou aktuální, MSBuild cíl provede, ale přeskočí aktuální položky a tím přináší všechny položky aktuální.Jedná se částečné přírůstkové sestavení.
mapování 1: 1 jsou obvykle vyrobené zboží transformace.Další informace naleznete v tématu Transformace nástroje MSBuild.
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>
Sada souborů, které jsou reprezentovány Compile typ položky jsou zkopírovány do záložního adresáře.Záložní soubory mají příponu názvu souboru s příponou BAK.Pokud soubory reprezentovány Compile typ položky nebo odpovídající záložní soubory nejsou odstranit nebo změnit cíl zálohování po spuštění, pak je cíl zálohování vynechány v další.
Odvození výstup
Nástroj MSBuild porovnává Inputs a Outputs atributy cílové k určení, zda cíl provést.V ideálním případě sadu souborů, který po dokončení přírůstkové sestavení existuje měla zůstat stejné též související cíle jsou spouštěny.Vzhledem k tomu, že sestavení mohou ovlivnit vlastnosti a položky, které jsou vytvořeny nebo ke změně úkolů, musí nástroj MSBuild odvodit jejich hodnoty i v případě, že cíl, který ovlivňuje je vynechán.To je známé jako výstup odvození.
Existují tři případy:
Cíl byl Condition atribut, který je vyhodnocen jako false.Cíl v tomto případě není spuštěn a nemá žádný vliv na sestavení.
Cíl byl zastaralý výstupy a běží tak, aby jejich aktuální.
Cíl nemá žádné výstupy zastaralý a je přeskočen.Nástroj MSBuild cíl vyhodnotí a provede změny položky a vlastnosti jako by cíl měl byla spuštěna.
K podpoře přírůstkovou kompilaci, úkoly musí zajistit, aby TaskParameter hodnota některého atributu Output prvek se rovná úkol vstupní parametr.Zde je několik příkladů:
<CreateProperty Value="123">
<Output PropertyName="Easy" TaskParameter="Value" />
</CreateProperty>
Tím se vytvoří vlastnost Easy, který má hodnotu "123", zda cíl je proveden nebo vynechány.
<CreateItem Include="a.cs;b.cs">
<Output ItemName="Simple" TaskParameter="Include" />
</CreateItem>
Tím se vytvoří typ položky jednoduchý, který má dvě položky, "a.cs" a "b.cs", zda cíl je proveden nebo vynechány.
Spuštění nástroje MSBuild 3.5, odvození výstupu se provádí automaticky na položky a vlastnosti skupin v cílové.CreateItemúkoly se nevyžaduje v cíli a je třeba se vyhnout.Také CreateProperty úkoly by měla být používána cíl pouze k určení, zda cíl byl proveden.
Určení, zda cíl byl spuštěn.
Vzhledem k odvození výstup, je nutné přidat CreateProperty úkol s cílem prozkoumat vlastnosti a položky, takže můžete určit, zda cíl byl proveden.Přidat CreateProperty úloh k cíli a přiřaďte jí Output prvek jehož TaskParameter je "ValueSetByTask".
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="CompileRan" />
</CreateProperty>
To vytvoří vlastnost CompileRan a nastaví hodnotu true, ale pouze v případě, že cíl je proveden.Pokud cíl vynechán, CompileRan nebude vytvořena.