Aracılığıyla paylaş


Metin Şablonu Yardımcı Program Yöntemleri

Visual Studio metin şablonunda kod yazarken kullanabileceğiniz çeşitli yöntemler vardır. Bu yöntemler içinde TextTransformationtanımlanır.

İpucu

Konak ortamı tarafından sağlanan diğer yöntemleri ve hizmetleri normal (önceden işlenmemiş) bir metin şablonunda da kullanabilirsiniz. Örneğin, dosya yollarını, günlük hatalarını çözebilir ve Visual Studio ve yüklü paketler tarafından sağlanan hizmetleri alabilirsiniz. Daha fazla bilgi için bkz . Metin Şablonundan Visual Studio'ya Erişme.

Yazma yöntemleri

bir ifade kod bloğu kullanmak yerine standart bir kod bloğunun içine metin eklemek için ve WriteLine() yöntemlerini kullanabilirsinizWrite(). Aşağıdaki iki kod bloğu işlevsel olarak eşdeğerdir.

İfade bloğu içeren kod bloğu

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

WriteLine() kullanan kod bloğu

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

İç içe geçmiş denetim yapılarına sahip uzun bir kod bloğu içinde bir ifade bloğu yerine bu yardımcı program yöntemlerinden birini kullanmayı yararlı bulabilirsiniz.

Write() ve WriteLine() yöntemleri, biri tek bir dize parametresini, diğeri ise bileşik biçim dizesini ve dizeye dahil etmek üzere bir nesne dizisi (yöntemi gibiConsole.WriteLine()) alan iki aşırı yüklemeye sahiptir. aşağıdaki iki kullanım WriteLine() işlevsel olarak eşdeğerdir:

<#
    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");
#>

Girintileme yöntemleri

Metin şablonunuzun çıkışını biçimlendirmek için girintileme yöntemlerini kullanabilirsiniz. sınıfı, TextTransformation metin şablonundaki geçerli girintiyi gösteren bir CurrentIndent indentLengths dize özelliğine ve eklenen girintilerin listesi olan bir alana sahiptir. yöntemiyle PushIndent() bir girinti ekleyebilir ve yöntemiyle girintiyi PopIndent() çıkarabilirsiniz. Tüm girintileri kaldırmak istiyorsanız yöntemini kullanın ClearIndent() . Aşağıdaki kod bloğu bu yöntemlerin kullanımını gösterir:

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

Bu kod bloğu aşağıdaki çıkışı oluşturur:

Hello
        Hello
                Hello
Hello
        Hello

Hata ve uyarı yöntemleri

Visual Studio Hata Listesi'ne ileti eklemek için hata ve uyarı yardımcı programı yöntemlerini kullanabilirsiniz. Örneğin, aşağıdaki kod Hata Listesi'ne bir hata iletisi ekler.

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

Konak ve Hizmet Sağlayıcısına Erişim

özelliği this.Host , şablonu yürüten konak tarafından kullanıma sunulan özelliklere erişim sağlayabilir. kullanmak this.Hostiçin yönergesinde <@template#> özniteliğini ayarlamanız hostspecific gerekir:

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

türü this.Host , şablonun yürütülmekte olduğu konağın türüne bağlıdır. Visual Studio'da çalışan bir şablonda, IDE gibi hizmetlere erişim kazanmak için 'a yayınlayabilirsiniz this.Host IServiceProvider . Örneğin:

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

Farklı bir yardımcı program yöntemi kümesi kullanma

Metin oluşturma işleminin bir parçası olarak, şablon dosyanız her zaman adlı GeneratedTextTransformation ve öğesinden devralınan TextTransformationbir sınıfa dönüştürülür. Bunun yerine farklı bir yöntem kümesi kullanmak istiyorsanız, kendi sınıfınızı yazabilir ve şablon yönergesinde belirtebilirsiniz. Sınıfınız öğesinden TextTransformationdevralmalıdır.

<#@ template inherits="MyUtilityClass" #>

assembly Derlenen sınıfın bulunabileceği derlemeye başvurmak için yönergesini kullanın.