Sdílet prostřednictvím


Pomocné metody textových šablon

Při psaní kódu v textové šabloně sady Visual Studio je vždy k dispozici několik metod. Tyto metody jsou definovány v TextTransformation.

Tip

Můžete také použít jiné metody a služby poskytované hostitelským prostředím v běžné (nezpracované) textové šabloně. Můžete například vyřešit cesty k souborům, chyby protokolu a získat služby poskytované sadou Visual Studio a všemi načtenými balíčky. Další informace najdete v tématu Přístup k sadě Visual Studio z textové šablony.

Metody zápisu

K přidání textu do standardního bloku kódu můžete místo bloku kódu výrazu použít Write()WriteLine() tyto metody. Následující dva bloky kódu jsou funkčně ekvivalentní.

Blok kódu s blokem výrazu

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

Blok kódu pomocí WriteLine()

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

Může být užitečné použít jednu z těchto metod utility místo bloku výrazu uvnitř dlouhého bloku kódu s vnořenými řídicími strukturami.

WriteLine() Metody Write() mají dvě přetížení, jedno, které přebírá jeden řetězcový parametr a jeden, který přebírá složený formátovací řetězec a pole objektů, které se mají zahrnout do řetězce (jako metodaConsole.WriteLine()). Následující dvě použití 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í

K formátování výstupu textové šablony můžete použít metody odsazení. Třída TextTransformation má řetězcovou CurrentIndent vlastnost, která zobrazuje aktuální odsazení v textové šabloně a indentLengths pole, které je seznam odsazení přidaných. Pomocí metody můžete přidat odsazení PushIndent() a odečíst odsazení metodou PopIndent() . Pokud chcete odebrat všechna odsazení, použijte metodu ClearIndent() . 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 vytvoří následující výstup:

Hello
        Hello
                Hello
Hello
        Hello

Metody chyb a upozornění

K přidání zpráv do seznamu chyb sady Visual Studio můžete použít metody chyb a upozornění. Například následující kód přidá do seznamu chyb chybovou zprávu.

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

Přístup k poskytovateli hostitelů a služeb

Vlastnost this.Host může poskytnout přístup k vlastnostem vystaveným hostitelem, který spouští šablonu. Chcete-li použít this.Host, je nutné nastavit hostspecific atribut v direktivě <@template#> :

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

Typ this.Host závisí na typu hostitele, ve kterém se šablona spouští. V šabloně, která běží v sadě Visual Studio, můžete přetypovat this.Host , abyste IServiceProvider získali přístup ke službám, jako je integrované vývojové prostředí (IDE). Příklad:

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

Použití jiné sady pomocných metod

V rámci procesu generování textu se soubor šablony transformuje na třídu, která je vždy pojmenovaná GeneratedTextTransformationa dědí z TextTransformation. Pokud chcete místo toho použít jinou sadu metod, můžete napsat vlastní třídu a zadat ji v direktivě šablony. Vaše třída musí dědit z TextTransformation.

<#@ template inherits="MyUtilityClass" #>

Direktiva assembly slouží k odkazování na sestavení, kde lze nalézt kompilovanou třídu.