Aracılığıyla paylaş


İzlenecek yol: Modele Erişen Metin Şablonunda Hata Ayıklama

Etki alanına özgü bir dil çözümünde metin şablonlarını değiştirdiğinizde veya eklediğinizde, altyapı şablonu kaynak koda dönüştürdüğünde veya oluşturulan kodu derlediğinde hatalarla karşılaşabilirsiniz. Aşağıdaki kılavuzda, metin şablonunda hata ayıklamak için yapabileceğiniz bazı işlemler gösterilmektedir.

Not

Genel olarak metin şablonları hakkında daha fazla bilgi için bkz . Kod Oluşturma ve T4 Metin Şablonları. Metin şablonlarında hata ayıklama hakkında daha fazla bilgi için bkz . İzlenecek Yol: Metin Şablonunda Hata Ayıklama.

Etki Alanına Özgü Dil Çözümü Oluşturma

Bu yordamda, aşağıdaki özelliklere sahip etki alanına özgü bir dil çözümü oluşturursunuz:

Metin şablonu oluşturma

Çözümünüz için bir metin şablonu ekleyin.

Metin şablonu oluşturmak için

  1. Çözümü derleyin ve hata ayıklayıcıda çalıştırmaya başlayın. (Derleme menüsü, Çözümü Yeniden Oluştur'a tıklayın ve hata ayıklama menüsünde Hata Ayıklamayı Başlat'a tıklayın.) Visual Studio'nun yeni bir örneği Hata Ayıklama projesini açar.

  2. Hata Ayıklama projesine adlı DebugTest.tt bir metin dosyası ekleyin.

  3. DebugTest.tt Özel Araç özelliğinin olarak TextTemplatingFileGeneratorayarlandığından emin olun.

Metin şablonundan modele erişen hata ayıklama yönergeleri

Metin şablonundaki deyimlerden ve ifadelerden bir modele erişebilmeniz için önce oluşturulan yönerge işlemcisini çağırmanız gerekir. Oluşturulan yönerge işlemcisini çağırmak, modelinizdeki sınıfların metin şablonu kodunda özellik olarak kullanılabilmesini sağlar. Daha fazla bilgi için bkz . Metin Şablonlarından Modellere Erişme.

Aşağıdaki yordamlarda, yanlış yönerge adında ve yanlış özellik adında hata ayıklayacaksınız.

Yanlış yönerge adında hata ayıklamak için

  1. DebugTest.tt içindeki kodu aşağıdaki kodla değiştirin:

    Not

    Kod bir hata içeriyor. Hata ayıklamak için hataya neden olacaksınız.

    <#@ template language="C#" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation"#>
    <#@ output extension=".txt" #>
    <#@ modelRoot processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=ExampleModel" #>
    
    Model: <#= this.ExampleModel #>
    <#
    foreach (ExampleElement element in this.ExampleModel.Elements)
    {
    #>
        Element: <#= element.Name #>
    <#
    }
    #>
    
  2. Çözüm Gezgini'da DebugTest.tt sağ tıklayın ve ardından Özel Aracı Çalıştır'a tıklayın.

    Hata Listesi penceresinde şu hata görüntülenir:

    'DebuggingTestLanguageDirectiveProcessor' adlı işlemci 'modelRoot' adlı yönergeyi desteklemiyor. Dönüştürme çalıştırılmaz.

    Bu durumda, yönerge çağrısı yanlış bir yönerge adı içeriyor. Yönerge adı olarak belirttiniz modelRoot , ancak doğru yönerge adı şeklindedir DebuggingTestLanguage.

  3. Koda atlamak için Hata Listesi penceresindeki hatayı çift tıklatın.

  4. Kodu düzeltmek için yönerge adını olarak DebuggingTestLanguagedeğiştirin.

    Değişiklik vurgulanır.

    <#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=ExampleModel" #>
    
  5. Çözüm Gezgini'da DebugTest.tt sağ tıklayın ve ardından Özel Aracı Çalıştır'a tıklayın.

    Şimdi sistem metin şablonunu dönüştürür ve karşılık gelen çıkış dosyasını oluşturur. Hata Listesi penceresinde hata görmezsiniz.

Yanlış özellik adında hata ayıklamak için

  1. DebugTest.tt içindeki kodu aşağıdaki kodla değiştirin:

    Not

    Kod bir hata içeriyor. Hata ayıklamak için hataya neden olacaksınız.

    <#@ template language="C#" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation"#>
    <#@ output extension=".txt" #>
    <#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #>
    
    Model: <#= this.ExampleModel #>
    <#
    foreach (ExampleElement element in this.ExampleModel.Elements)
    {
    #>
        Element: <#= element.Name #>
    <#
    }
    #>
    
  2. Çözüm Gezgini'da DebugTest.tt sağ tıklayın ve ardından Özel Aracı Çalıştır'a tıklayın.

    Hata Listesi penceresi görüntülenir ve şu hatalardan birini görüntüler:

    (C#)

    Derleme dönüştürmesi: Microsoft.VisualStudio.TextTemplating<GUID>. GeneratedTextTransformation', 'ExampleModel' için bir tanım içermiyor

    (Visual Basic)

    Derleme dönüştürmesi: 'ExampleModel', 'Microsoft.VisualStudio.TextTemplating GUID'sinin<> üyesi değil. GeneratedTextTransformation'.

    Bu durumda, metin şablonu kodu yanlış bir özellik adı içeriyor. Özellik adı olarak belirttiniz ExampleModel , ancak doğru özellik adı şeklindedir LibraryModel. Aşağıdaki kodda gösterildiği gibi provides parametresinde doğru özellik adını bulabilirsiniz:

    <#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #>
    
  3. Koda atlamak için Hata Listesi penceresindeki hatayı çift tıklatın.

  4. Kodu düzeltmek için metin şablonu kodunda özellik adını olarak LibraryModel değiştirin.

    Değişiklikler vurgulanır.

    <#@ template language="C#" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation"#>
    <#@ output extension=".txt" #>
    <#@ DebuggingTestLanguage processor="DebuggingTestLanguageDirectiveProcessor" requires="fileName='Sample.ddd'" provides="ExampleModel=LibraryModel" #>
    
    Model: <#= this.LibraryModel #>
    <#
    foreach (ExampleElement element in this.LibraryModel.Elements)
    {
    #>
        Element: <#= element.Name #>
    <#
    }
    #>
    
  5. Çözüm Gezgini'da DebugTest.tt sağ tıklayın ve ardından Özel Aracı Çalıştır'a tıklayın.

    Şimdi sistem metin şablonunu dönüştürür ve karşılık gelen çıkış dosyasını oluşturur. Hata Listesi penceresinde hata görmezsiniz.