Metody narzędziowe szablonu tekstu
Istnieje kilka metod, które są zawsze dostępne podczas pisania kodu w Visual Studio tekst szablonu.Metody te są zdefiniowane w TextTransformation.
Porada |
---|
Można również używać innych metod i usługi świadczone przez środowisko hosta w szablonie zwykły tekst (nieprzetworzony).Na przykład można rozpoznać ścieżki pliku, rejestrowanie błędów i uzyskać usługi świadczone przez Visual Studio i załadować dowolne pakiety.Aby uzyskać więcej informacji, zobacz Accessing Visual Studio from a Text Template. |
Metod zapisu
Można użyć Write() i WriteLine() metod, aby dołączyć tekst wewnątrz bloku kodu standardowych, zamiast korzystać z bloku kodu wyrażenie.Następujące bloki kodu dwa są funkcjonalnie równoważne.
Blok kodu z bloku wyrażenie
<#
int i = 10;
while (i-- > 0)
{ #>
<#= i #>
<# }
#>
Blok kodu przy użyciu WriteLine()
<#
int i = 10;
while (i-- > 0)
{
WriteLine((i.ToString()));
}
#>
Może znaleźć przydatne do korzystania z jednego z tych metod narzędzie zamiast bloku wyrażenie wewnątrz bloku kodu długie z zagnieżdżonych instrukcji sterujących.
Write() i WriteLine() metody mają dwa overloads, taką, która przyjmuje parametr będący pojedynczym ciągiem i który przyjmuje ciąg formatu kompozytowe plus tablicę obiektów, aby uwzględnić w ciągu (takich jak Console.WriteLine() metody).Następującego wykorzystania dwóch WriteLine() są funkcjonalnie równoważne:
<#
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 wcięcia
Do formatowania danych wyjściowych szablonu tekstu, można użyć metody wcięcia.TextTransformation Klasa ma CurrentIndent string właściwość, która pokazuje bieżące wcięcie tekstu szablonu i indentLengths to jest pole listy wcięcia, które zostały dodane.Można dodać wcięcia z PushIndent() metody i odjąć wcięcie z PopIndent() metody.Jeśli chcesz usunąć wszystkie wcięcia, użyj ClearIndent() metody.Następujący blok kodu pokazano sposób użycia tych metod:
<#
WriteLine(CurrentIndent + "Hello");
PushIndent(" ");
WriteLine(CurrentIndent + "Hello");
PushIndent(" ");
WriteLine(CurrentIndent + "Hello");
ClearIndent();
WriteLine(CurrentIndent + "Hello");
PushIndent(" ");
WriteLine(CurrentIndent + "Hello");
#>
Ten blok kodu daje następujący wynik:
Hello
Hello
Hello
Hello
Hello
Błąd i ostrzeżenie metody
Można użyć metody narzędziowe błędów i ostrzeżeń, wiadomości, aby dodać Visual Studio lista błędów.Na przykład poniższy kod będzie dodać komunikat o błędzie do listy błędów.
<#
try
{
string str = null;
Write(str.Length.ToString());
}
catch (Exception e)
{
Error(e.Message);
}
#>
Dostęp do hosta i dostawcy usług
Właściwość this.Host można zapewnić dostęp do właściwości udostępniane przez hosta, który jest wykonywany szablonu.Aby użyć this.Host, należy ustawić hostspecific atrybutu w <@template#> dyrektywę:
<#@template ... hostspecific="true" #>
Typ this.Host zależy od typu host, w którym wykonywane jest szablon.W szablonie, który jest uruchomiony w Visual Studio, można oddać this.Host do IServiceProvider celu uzyskania dostępu do usług, takich jak IDE.Na przykład:
EnvDTE.DTE dte = (EnvDTE.DTE) ((IServiceProvider) this.Host)
.GetService(typeof(EnvDTE.DTE));
Za pomocą różnych zestaw metod, narzędzie
Jako część procesu generowania tekstu, plik szablonu jest przekształcany w klasy, która zawsze o nazwie GeneratedTextTransformation i dziedziczy z TextTransformation.Jeśli chcesz użyć innego zestawu metod zamiast tego, można pisać własne klasy i określić go w dyrektywie szablonu.Musi dziedziczyć po klasie TextTransformation.
<#@ template inherits="MyUtilityClass" #>
Użyj assembly dyrektywy, aby odwołać się za montaż, gdzie można znaleźć skompilowaną klasę.