Sdílet prostřednictvím


Jak: vytvoření postupně

Při vytváření velkého projektu, je důležité, nejsou znovu sestavena, dříve vytvořené komponenty, které jsou stále aktuální.Pokud všechny cíle jsou sestaveny v každém každého sestavení bude trvat delší dobu.Chcete-li povolit přírůstkové sestavení (sestavení, ve kterém pouze ty cíle, které nebyly byly postaveny před nebo zaměřuje, jsou data, jsou znovu vytvořeny), Microsoft Build Engine (MSBuild) můžete porovnat časová razítka vstupní soubory s časová razítka souborů pro výstup a určit, zda přeskočit, sestavení nebo částečně znovu sestavit cíl.Však musí být prosté mapování mezi vstupy a výstupy.Transformace můžete použít k identifikaci této přímé mapování cíle povolit.Další informace o transformačních souborů viz Nástroj MSBuild transformace.

Určení vstupů a výstupů

Cíl můžete postupně vytvořeny, pokud vstupů a výstupů, které jsou zadány v souboru projektu.

Určení vstupů a výstupů pro cíl

  • Použití Inputs a Outputs atributy Target prvku.Příklad:

    <Target Name="Build"
        Inputs="@(CSFile)"
        Outputs="hello.exe">
    

MSBuildmůžete porovnat časová razítka vstupní soubory s časová razítka souborů pro výstup a určit, zda přeskočit, sestavení nebo částečně znovu sestavit cíl.V následujícím příkladu, pokud jakýkoli soubor v @(CSFile) seznam položek je novější než soubor hello.exe MSBuild spustí cíl; jinak budou vynechány:

<Target Name="Build" 
    Inputs="@(CSFile)" 
    Outputs="hello.exe">

    <Csc
        Sources="@(CSFile)" 
        OutputAssembly="hello.exe"/>
</Target>

Když vstupy a výstupy jsou specifikovány v cíli, můžete mapovat každý výstup pouze jeden vstup nebo může být žádné přímé mapování mezi vstupy a výstupy.V předchozím CSC úkolu, výstup, například hello.exe, nelze mapovat na jakékoli jeden vstup – záleží na všechny.

[!POZNÁMKA]

Cíl, který je přímé mapování mezi vstupy a výstupy vždy sestavit častěji než cíl, ve kterém můžete mapovat každý výstup pouze jeden vstup protože MSBuild nelze určit, které výstupy nutné znovu sestavit změně některé vstupy.

Úkoly, ve kterých můžete identifikovat přímé mapování mezi vstupů a výstupů, jako LC úkolu, jsou nejvhodnější pro přírůstkové sestavení, na rozdíl od úkolů, jako Csc a soubor Vbc, které vytvoří jedno sestavení na výstupu z počet vstupů.

Příklad

Následující příklad používá projekt, který vytváří soubory nápovědy pro hypotetické systému nápovědy.Projekt funguje převedením zdrojové soubory TXT na zprostředkující .content soubory, které pak společně s XML soubory metadat k výrobě .help konečného souboru systému nápovědy.Projekt používá hypotetickou následující úkoly:

  • GenerateContentFiles: Převádí soubory s příponou TXT na soubory .content.

  • BuildHelp: Kombinuje .content a soubory XML metadat pro sestavení konečné .help souboru.

Transformace používá k vytvoření mapování 1: 1 mezi vstupy a výstupy v projektu GenerateContentFiles úkolu.Další informace naleznete v tématu Nástroj MSBuild transformace.Také Output prvek nastaven na automaticky použít výstupy z GenerateContentFiles jako vstupy pro úkol BuildHelp úkolu.

Soubor projektu obsahuje i Convert a Build cílů.GenerateContentFiles a BuildHelp úkoly, které jsou umístěny v Convert a Build respektive cílena tak, aby každý cíl lze postupně vytvořeny.Pomocí Output prvek, výstupy GenerateContentFiles úloh jsou umístěny v ContentFile seznam položek, které lze použít jako vstupy pro BuildHelp úkolu.Použití Output element tímto způsobem automaticky poskytuje výstupy z jednoho úkolu jako vstupy pro jiný úkol, takže není nutné seznam jednotlivých položek nebo položky seznamů ručně v jednotlivých úkolů.

[!POZNÁMKA]

Přestože GenerateContentFiles postupně vytvořit cíl, všechny výstupy z tohoto cíle jsou vždy jako vstupy pro BuildHelp cíl.MSBuildvšechny výstupy z jednoho cíle automaticky poskytuje jako vstupy pro jiný cíl při použití Output prvku.

<Project DefaultTargets="Build"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >

    <ItemGroup>
        <TXTFile Include="*.txt"/>
        <XMLFile Include="\metadata\*.xml"/>
    </ItemGroup>

    <Target Name = "Convert"
        Inputs="@(TXTFile)"
        Outputs="@(TXTFile->'%(Filename).content')">

        <GenerateContentFiles
            Sources = "@(TXTFile)">
            <Output TaskParameter = "OutputContentFiles"
                ItemName = "ContentFiles"/>
        </GenerateContentFiles>
    </Target>

    <Target Name = "Build" DependsOnTargets = "Convert"
        Inputs="@(ContentFiles);@(XMLFiles)"
        Outputs="$(MSBuildProjectName).help">

        <BuildHelp
            ContentFiles = "@(ContentFiles)"
            MetadataFiles = "@(XMLFile)"
            OutputFileName = "$(MSBuildProjectName).help"/>
    </Target>
</Project>

Viz také

Referenční dokumentace

Cílový prvek (MSBuild)

CSC úkolu

Soubor VBC úkolu

Koncepty

Nástroj MSBuild cíle

Nástroj MSBuild transformace