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á GeneratedTextTransformation
a 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.