Sdílet prostřednictvím


Názorný postup: Vytvoření úkolu aplikace Inline

Nástroj MSBuild úkoly obvykle vytváří kompilace třídy, která implementuje ITask rozhraní.Začínající.NET Framework verze 4, můžete vytvořit úkoly vložené v souboru projektu.Není nutné vytvořit samostatné sestavení hostitele úkolu.Další informace naleznete v tématu Nástroj MSBuild vložené úkoly.

Tento názorný postup ukazuje, jak vytvořit a spustit tyto vložené úkoly:

  • Úkol, který neobsahuje žádné vstupní nebo výstupní parametry.

  • Úkol, který má jeden vstupní parametr a žádné výstupní parametry.

  • Úkol, který má dva vstupní parametry a jeden výstupní parametr, který vrátí vlastnost MSBuild.

  • Úkol, který má dva vstupní parametry a jeden výstupní parametr, který vrací položku MSBuild.

Chcete-li vytvořit a spustit úlohy, pomocí aplikace Visual Studio a Okno příkazového řádku Visual Studio, takto:

  • Vytvořte soubor projektu MSBuild pomocí aplikace Visual Studio.

  • Upravte soubor projektu aplikace Visual Studio vytvořit úkol vložený.

  • Použití Okno příkazového řádku k vytvoření projektu a přezkoumají výsledky.

Vytváření a úpravy projekt MSBuild

Systém projektu Visual Studio je založena na MSBuild.Proto můžete vytvořit soubor sestavení projektu pomocí aplikace Visual Studio.V této části vytvoříte soubor projektu aplikace Visual C#.(Můžete vytvořit soubor projektu jazyka Visual Basic místo.V rámci tohoto kurzu rozdíl mezi soubory projektu dvou je menší.)

Vytvořit a upravit soubor projektu

  1. V aplikaci Visual Studio na soubor nabídky, klepněte na tlačítko Nový a klepněte na tlačítko projektu.

  2. V Nový projekt vyberte položku Visual C# typ projektu a poté vyberte Model Windows Forms aplikace šablony.V název zadejte InlineTasks.Typ a umístění řešení, například D:\.Zajistit, aby vytvořit adresář pro řešení je vybrán Přidat ovládací prvek zdroje je zrušeno, a Název řešení je InlineTasks.

    Klepněte na tlačítko OK k vytvoření souboru projektu.

  3. V Aplikaci Solution Explorer, klepněte pravým tlačítkem na uzel InlineTasks projektu a klepněte na tlačítko Uvolnění projektu.

  4. Klepněte pravým tlačítkem na uzel projekt znovu a klepněte na tlačítko Upravit InlineTasks.csproj.

    Soubor projektu se zobrazí v editoru kódu.

Přidání úkolu základní Hello

Nyní, přidejte do souboru projektu základní úkol, který zobrazí zprávu "Hello, world!" Také přidáte výchozí cíl TestBuild k vyvolání úlohy.

Přidat úkol základní hello

  1. V kořenové složce Project uzlu, změnu DefaultTargets k atributu TestBuild.Výsledný Project uzel by měl vypadat tento příklad:

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

  2. Přidat následující úkol vložené a těsně před cílový soubor projektu </Project> značky.

    <UsingTask TaskName="Hello" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
      <ParameterGroup />
      <Task>
        <Code Type="Fragment" Language="cs">
          Log.LogMessage("Hello, world!", MessageImportance.High);
        </Code>
      </Task>
    </UsingTask>
    <Target Name="TestBuild">
      <Hello />
    </Target>
    
  3. Uložte soubor projektu.

Tento kód vytvoří úkol vložený, s názvem Hello a neobsahuje žádné parametry, odkazy, nebo Using příkazy.Ahoj úloha obsahuje pouze jeden řádek kódu, který zobrazuje zprávy hello na výchozí zařízení protokolování obvykle okna konzoly.

Dd723643.collapse_all(cs-cz,VS.110).gifSpuštění úlohy Hello

Spusťte nástroj MSBuild pomocí Okno příkazového řádku Hello úkol vytvořit a zpracovat TestBuild cíl, spustí ji.

Spuštění úlohy Hello

  1. Klepněte na tlačítko Start, klepněte na tlačítko Všechny programya vyhledejte Visual Studio Tools složku a klepněte na tlačítko Visual Studio příkazového řádku.

  2. V Okno příkazového řádku, vyhledejte složku obsahující soubor projektu, v případě D:\InlineTasks\InlineTasks\.

  3. Typ msbuild bez příkazu přepínače a stiskněte klávesu ENTER.Ve výchozím nastavení vytvoří soubor InlineTasks.csproj a zpracuje výchozí cíl TestBuild, což vyvolá Hello úkolu.

  4. Prohlédněte si výstup v Okno příkazového řádku.Měla by se zobrazit tento řádek:

    Hello, world!

    [!POZNÁMKA]

    Pokud není zpráva Ahoj, zkuste znovu uložit soubor projektu a potom spusťte úlohu Ahoj.

Ve střídání editor kódu a Okno příkazového řádku, můžete změnit soubor projektu a rychle zobrazit výsledky.

Definování úloh Echo

Vytvořte úkol vložený, přijímá parametr řetězec a řetězec zobrazí výchozí zařízení pro protokolování.

K definování úlohy Echo

  1. V editoru kódu pomocí následujícího kódu nahraďte Hello úkolu a TestBuild cíl.

    <UsingTask TaskName="Echo" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
      <ParameterGroup>
        <Text Required="true" />
      </ParameterGroup>
      <Task>
        <Code Type="Fragment" Language="cs">
          Log.LogMessage(Text, MessageImportance.High);
        </Code>
      </Task>
    </UsingTask>
    <Target Name="TestBuild">
      <Echo Text="Greetings!" />
    </Target>
    
  2. V Okno příkazového řádku, typ msbuild bez příkazu přepínače a stiskněte klávesu ENTER.Standardně tato zpracovává výchozí cíl TestBuild, což vyvolá odezvu úkolu.

  3. Prohlédněte si výstup v Okno příkazového řádku.Měla by se zobrazit tento řádek:

    Greetings!

Tento kód definuje úkol vložený, s názvem Echo a má pouze jeden povinný vstupní parametr Text.Ve výchozím nastavení jsou parametry typu System.String.Hodnota parametru Text nastaven při TestBuild cíl vyvolá odezvu úkolu.

Definování úloh sčítačka

Vytvořte úkol vložené, který přidá dva celé_číslo Parametry a jejich součet jako vlastnost MSBuild vyzařuje.

K definování úlohy sčítačka

  1. V editoru kódu pomocí následujícího kódu nahraďte Echo úkolu a TestBuild cíl.

    <UsingTask TaskName="Adder" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
      <ParameterGroup>
        <A ParameterType="System.Int32" Required="true" />
        <B ParameterType="System.Int32" Required="true" />
        <C ParameterType="System.Int32" Output="true" />
      </ParameterGroup>
      <Task>
        <Code Type="Fragment" Language="cs">
          C = A + B;
        </Code>
      </Task>
    </UsingTask>  
    <Target Name="TestBuild">
      <Adder A="4" B="5">
        <Output PropertyName="Sum" TaskParameter="C" />
      </Adder>
      <Message Text="The sum is $(Sum)" Importance="High" />
    </Target>
    
  2. V Okno příkazového řádku, typ msbuild bez příkazu přepínače a stiskněte klávesu ENTER.Standardně tato zpracovává výchozí cíl TestBuild, což vyvolá odezvu úkolu.

  3. Prohlédněte si výstup v Okno příkazového řádku.Měla by se zobrazit tento řádek:

    The sum is 9

Tento kód definuje úkol vložený, s názvem sčítačka a má dvě požadované vstupní parametry celé číslo, A a b a jeden celočíselný výstupní parametr C.Úloha sčítačka přidá dva vstupní parametry a vrátí součet výstupní parametr.Součet je emitovány jako vlastnost MSBuild Sum.Hodnoty vstupních parametrů jsou nastaveny při TestBuild cíl vyvolá sčítačka úkolu.

Definování úloh RegX

Vytvořte úkol vložený, přijímá skupinu položek a regulární výraz, který vrátí seznam všech položek, které mají obsah souboru, který odpovídá výrazu.

K definování úlohy RegX

  1. V editoru kódu pomocí následujícího kódu nahraďte sčítačka úloh a TestBuild cíl.

    <UsingTask TaskName="RegX" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" >
      <ParameterGroup>
        <Expression Required="true" />
        <Files ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
        <Result ParameterType="Microsoft.Build.Framework.ITaskItem[]" Output="true" />
      </ParameterGroup>
      <Task>
        <Using Namespace="System.Text.RegularExpressions"/>
        <Code Type="Fragment" Language="cs">
    <![CDATA[
          if (Files.Length > 0)
          {
            Result = new TaskItem[Files.Length];
            for (int i = 0; i < Files.Length; i++)
            {
              ITaskItem item = Files[i];
              string path = item.GetMetadata("FullPath");
              using(StreamReader rdr = File.OpenText(path))
              {
                if (Regex.Match(rdr.ReadToEnd(), Expression).Success)
                {
                  Result[i] = new TaskItem(item.ItemSpec);
                }
              }
            }
          }
    ]]>
        </Code>
      </Task>
    </UsingTask>  
    <Target Name="TestBuild">
      <RegX Expression="public|protected" Files="@(Compile)">
        <Output ItemName="MatchedFiles" TaskParameter="Result" />
      </RegX>
      <Message Text="Input files: @(Compile)" Importance="High" />
      <Message Text="Matched files: @(MatchedFiles)" Importance="High" />
    </Target>
    
  2. V Okno příkazového řádku, typ msbuild bez příkazu přepínače a stiskněte klávesu ENTER.Standardně tato zpracovává výchozí cíl TestBuild, což vyvolá RegX úkolu.

  3. Prohlédněte si výstup v Okno příkazového řádku.Měla by se zobrazit tyto řádky:

    Input files: Form1.cs;Form1.Designer.cs;Program.cs;Properties\AssemblyInfo.cs;Properties\Resources.Designer.cs;Properties\Settings.Designer.cs

    Matched files: Form1.cs;Form1.Designer.cs;Properties\Settings.Designer.cs

Tento kód definuje úkol vložený, s názvem RegX a má tyto tři parametry:

  • Expressionje-li vstupní parametr povinný řetězec, který má hodnotu, která je regulární výraz odpovídal.V tomto příkladu výraz odpovídá slova "veřejné" nebo "protected".

  • Filesje-li vstupní parametr požadovaná položka seznamu, který má hodnotu, která je seznam souborů, které budou hledány shoda.V tomto příkladu Files nastavena kompilace položku, která obsahuje zdrojové soubory projektu.

  • Resultje výstupní parametr, který má hodnotu, která je v seznamu soubory, které mají obsah, které odpovídají regulární výraz.

Hodnoty vstupních parametrů jsou nastaveny při TestBuild cíl vyvolá RegX úkolu.RegX úloh přečte každý soubor a vrátí seznam souborů, které odpovídají regulární výraz.Tento seznam je vrácen jako Result výstupní parametr, který je jako položka MSBuild vyzařovaného MatchedFiles.

Dd723643.collapse_all(cs-cz,VS.110).gifZpracování vyhrazené znaky

Analyzátor MSBuild zpracuje úkoly vložené jako XML.Například význam ve formátu XML, vyhrazené znaky "<" a ">", zjištění a zpracování, jako kdyby byly XML a není.NET zdrojový kód.Zahrnout vyhrazené znaky kódu výrazy jako Files.Length > 0, psát Code prvku tak, aby jeho obsah jsou obsaženy ve výrazu CDATA takto:

<Code Type="Fragment" Language="cs">

<![CDATA[

// Your code goes here.

]]>

</Code>

Viz také

Koncepty

Nástroj MSBuild vložené úkoly

Nástroj MSBuild úkoly

Nástroj MSBuild cíle