Sdílet prostřednictvím


Text šablony pomocné metody

Existuje několik metod, které jsou vždy k dispozici, když píšete kód Visual Studio text šablony.Tyto metody jsou definovány v TextTransformation.

Tip

Můžete také použít jiné metody a služby poskytované hostitelského prostředí v pravidelných (nebyla předem zpracována) text šablony.Například můžete vyřešit cesty k souboru, protokolování chyb a získání služby poskytované Visual Studio a všechny balíčky načten.Další informace naleznete v tématu Accessing Visual Studio from a Text Template.

Metody zápisu

Můžete použít Write() a WriteLine() metod pro přidání textu uvnitř bloku kódu standardní, namísto použití blok kódu výraz.Následující kód dva bloky jsou funkčně ekvivalentní.

Bb126474.collapse_all(cs-cz,VS.110).gifBlok kódu výraz blok

<#
int i = 10;
while (i-- > 0)
    { #>
        <#= i #>
    <# }
#>

Bb126474.collapse_all(cs-cz,VS.110).gifBlok kódu pomocí WriteLine()

<# 
    int i = 10;
    while (i-- > 0)
    { 
        WriteLine((i.ToString()));
    }
#>

Bude pravděpodobně užitečné použít jednu z těchto metod nástroj místo výraz blok uvnitř bloku kódu dlouhé s vnořených řídících struktur.

Write() a WriteLine() metody mají dvě přetížení, která trvá jeden řetězcový parametr a který trvá řetězec složený formát plus pole objektů, které chcete zahrnout do řetězce (stejně jako Console.WriteLine() metoda).Následující dva způsoby WriteLine() jsou funkčně ekvivalentní:

<#
    string msg = "Say: {0}, {1}, {2}";
    string s1 = "hello";
    string s2 = "goodbye";
    string s3 = "farewell";
    
    WriteLine(msg, s1, s2, s3);
    WriteLine("Say: hello, goodbye, farewell");
#> 

Metody odsazení

Odsazení metody lze formátovat výstup do textu šablony.TextTransformation Třída má CurrentIndent řetězec vlastnosti, který zobrazuje aktuální odsazení textu šablony a indentLengths je pole seznamu odsazení, které byly přidány.Můžete přidat odsazení se PushIndent() metoda a odsazení se odečte PopIndent() metoda.Pokud chcete odebrat všechny odsazení, použít ClearIndent() metoda.Následující blok kódu ukazuje použití těchto metod:

<#
    WriteLine(CurrentIndent + "Hello");
    PushIndent("    ");
    WriteLine(CurrentIndent + "Hello");
    PushIndent("    ");
    WriteLine(CurrentIndent + "Hello");
    ClearIndent();
    WriteLine(CurrentIndent + "Hello");
    PushIndent("    ");
    WriteLine(CurrentIndent + "Hello");
#>

Tento blok kódu vytváří následující výstup:

Hello
        Hello
                Hello
Hello
        Hello

Chyby a upozornění metody

Chyby a varování pomocné metody slouží k přidání zprávy Visual Studio seznam chyb.Následující kód například přidá chybové zprávy do seznamu chyb.

<#
  try
  {
    string str = null;
    Write(str.Length.ToString());
  }
  catch (Exception e)
  {
    Error(e.Message);
  }
#>  

Přístup k hostiteli a poskytovatele služeb

Vlastnost this.Host poskytuje přístup k vlastnosti, které jsou vystaveny hostitel, který je prováděn v šabloně.Použití this.Host, je nutné nastavit hostspecific atributu v <@template#> směrnice:

<#@template ... hostspecific="true" #>

Typ this.Host závisí na typu hostitele, ve kterém se provádí v šabloně.V šabloně, která je spuštěna v Visual Studio, můžete obsadit this.Host na IServiceProvider získat přístup ke službám, jako je například IDE.Příklad:

EnvDTE.DTE dte = (EnvDTE.DTE) ((IServiceProvider) this.Host)
                       .GetService(typeof(EnvDTE.DTE));

Pomocí jiné sady pomocných metod

Jako součást procesu generování textu je váš soubor šablony transformovány do třídy, vždy s názvem GeneratedTextTransformation a dědí z TextTransformation.Chcete-li použít jinou sadu metod, můžete napsat vlastní třídy a zadat šablonu směrnice.Třída musí dědit z TextTransformation.

<#@ template inherits="MyUtilityClass" #>

Použití assembly směrnice odkazuje na sestavení, kde lze nalézt zkompilovanou třídu.