Aracılığıyla paylaş


Domain-Specific Dillerini Kullanmaya Başlama

Bu konuda, Visual Studio için Modelleme SDK'sı ile oluşturulan etki alanına özgü bir dili (DSL) tanımlama ve kullanma ile ilgili temel kavramlar açıklanmaktadır.

Uyarı

Metin Şablonu Dönüştürme SDK'sı ve Visual Studio Modelleme SDK'sı, Visual Studio'nun belirli özelliklerini yüklediğinizde otomatik olarak yüklenir. Diğer ayrıntılar için bu blog gönderisini inceleyin.

DLL'leri yeni kullanıyorsanız, bu depoda bulabileceğiniz VMSDK Laboratuvarı üzerinden çalışmanızı öneririz

Domain-Specific Dili ile ne yapabilirsiniz?

Alanına özgü dil, belirli bir amaç için kullanılmak üzere tasarlanmış, genellikle grafiksel bir gösterimdir. Buna karşılık, UML gibi diller genel amaçlıdır. DSL'de model öğesi türlerini ve bunların ilişkilerini ve bunların ekranda nasıl sunulduğunu tanımlayabilirsiniz.

DSL tasarladığınızda, bunu Visual Studio Tümleştirme Uzantısı (VSIX) paketinin bir parçası olarak dağıtabilirsiniz. Kullanıcılar Visual Studio'da DSL ile çalışır:

Aile ağacı diyagramı, araç kutusu ve gezgin

Notasyon bir DSL'nin yalnızca bir parçasıdır. VSIX paketiniz, notasyonla birlikte, kullanıcıların modellerinden içerik düzenleme ve oluşturmada yardımcı olabilecekleri araçlar içerir.

DLL'lerin temel uygulamalarından biri program kodu, yapılandırma dosyaları ve diğer yapıtlar oluşturmaktır. Özellikle bir ürünün çeşitli varyantlarının oluşturulacağı büyük projelerde ve ürün hatlarında, DLL'lerden değişken yönlerinin birçoğunu oluşturmak, güvenilirlikte büyük bir artış ve gereksinimlere çok hızlı bir yanıt verebilir.

Bu genel bakışın geri kalanı, Visual Studio'da etki alanına özgü bir dil oluşturma ve kullanma ile ilgili temel işlemleri tanıtır.

Önkoşullar

DSL tanımlamak için aşağıdaki bileşenleri yüklemiş olmanız gerekir:

Bileşen Link
Visual Studio (herhangi bir sürüm) http://go.microsoft.com/fwlink/?LinkId=185579
Visual Studio uzantısı geliştirme iş yükünü seçin (Visual Studio SDK'sını içerir) https://go.microsoft.com/fwlink/?linkid=2166172
Modelleme SDK'sı (varsayılan olarak yüklenmez)
Sınıf Tasarımcısı (varsayılan olarak yüklenmez) Yükleyicinin Tek Tek Bileşenler sekmesindeki "Kod araçları" bölümü

Uyarı

Metin Şablonu Dönüştürme bileşeni, Visual Studio uzantısı geliştirme iş yükünün bir parçası olarak otomatik olarak yüklenir. Bunu Visual Studio Yükleyicisi'nin Tek bileşenler sekmesinden SDK'lar, kitaplıklar ve çerçeveler kategorisinin altından da yükleyebilirsiniz. Tek tek bileşenler sekmesinden Modelleme SDK'sı bileşenini yükleyin.

DSL Çözümü Oluşturma

Etki alanına özgü yeni bir dil oluşturmak için, Domain-Specific Dili proje şablonunu kullanarak yeni bir Visual Studio çözümü oluşturursunuz.

  1. Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın.

  2. Yeni bir proje oluşturun.

    • Arama alanına etki alanı yazın

    • Domain-Specific Dil Tasarımcısı'nı ve ardından İleri'yi tıklatın.

    Yeni DSL projesi oluşturma

  3. Yeni projenizi yapılandırın.

    Yeni projenizi yapılandırma

    • Proje adı kutusuna FamilyTree yazın. Oluştur'utıklayın.
  4. Domain-Specific Dil Tasarımcısı Sihirbazı açılır ve şablon DSL çözümlerinin listesini görüntüler.

    En Az Dil şablonu

    • Bir açıklama görmek için her şablona tıklayın,

    Şablonlar yararlı başlangıç noktalarıdır. Her biri, ihtiyaçlarınıza göre düzenleyebileceğiniz, tam işlevsel bir DSL sağlar. Normalde, oluşturmak istediğiniz şablona en yakın şablonu seçersiniz.

    • Bu izlenecek yol için En Az Dil şablonunu seçin. Nextöğesine tıklayın.
  5. Yeni Model Dosya Türünü Tanımla

    Yeni model dosya türünü tanımlama

    • DSL'niz için model dosyaları hangi uzantıyı kullanmalıdır? alanına bir dosya adı uzantısı ftree girin. Bu, DSL'nizin örneklerini içeren dosyaların kullanacağı uzantıdır.

    Önemli

    Bilgisayarınızdaki veya DSL'yi yüklemek istediğiniz herhangi bir bilgisayarda herhangi bir uygulamayla ilişkili olmayan bir uzantı seçmelisiniz. Örneğin, docx ve htm kabul edilemez dosya adı uzantıları olabilir. Girdiğiniz uzantı DSL olarak kullanılıyorsa sihirbaz sizi uyarır. Bu durumda farklı bir dosya adı uzantısı kullanmayı göz önünde bulundurun. Eski deneysel tasarımcıları temizlemek için Visual Studio SDK Deneysel örneğini de sıfırlayabilirsiniz. Windows Başlat menüsünde Visual Studio'yu Sıfırla yazın ve ardından Visual Studio sürümünüzle eşleşen Microsoft Visual Studio Deneysel Örneğini Sıfırla komutunu çalıştırın.

  6. Diğer sayfaları inceleyin ( İleri'ye tıklayın) ve ardından Son'a tıklayın.

    DSL Çözümü Özeti

    İki proje içeren bir çözüm oluşturulur. Dsl ve DslPackage olarak adlandırılırlar. DslDefinition.dsl adlı bir diyagram dosyası açılır.

    Uyarı

    İki projedeki klasörlerde görebileceğiniz kodun çoğu DslDefinition.dsl dosyasından oluşturulur. Bu nedenle DSL'nizde yapılan değişikliklerin çoğu bu dosyada yapılır.

Kullanıcı arabirimi artık aşağıdaki resme benzer.

dsl tasarımcısı

Bu çözüm, etki alanına özgü bir dili tanımlar. Daha fazla bilgi için bkz. Domain-Specific Dil Araçları Kullanıcı Arabirimine Genel Bakış.

DSL çözümünün önemli parçaları

Yeni çözümün aşağıdaki yönlerine dikkat edin:

  • Dsl\DslDefinition.dsl Bu, DSL çözümü oluşturduğunuzda gördüğünüz dosyadır. Çözümdeki neredeyse tüm kod bu dosyadan oluşturulur ve DSL tanımında yaptığınız değişikliklerin çoğu burada yapılır. Daha fazla bilgi için bkz. DSL Tanım Diyagramı ile Çalışma.

  • Dsl projesi Bu proje, etki alanına özgü dili tanımlayan kodu içerir.

  • DslPackage projesi Bu proje, DSL örneklerinin Visual Studio'da açılmasını ve düzenlenmesini sağlayan kod içerir.

DSL'yi çalıştırma

DSL çözümünü oluşturduğunuz anda çalıştırabilirsiniz. Daha sonra DSL tanımını aşamalı olarak değiştirebilir ve her değişiklik sonrasında çözümü yeniden çalıştırabilirsiniz.

DSL ile deneme yapmak için

  1. Oluştur menüsünde Tüm T4 Şablonlarını Dönüştür'e tıklayın. Bu işlem, kaynak kodun çoğunu DslDefinition.dsl'den yeniden oluşturur.

    Uyarı

    DslDefinition.dsl dosyasını her değiştirdiğinizde çözümü yeniden oluşturmadan önce Tüm T4 Şablonlarını Dönüştür'e tıklamanız gerekir. Bu adımı otomatikleştirebilirsiniz. Daha fazla bilgi için bkz. Tüm Şablonları Dönüştürmeyi Otomatikleştirme.

  2. F5 tuşuna basın veya Hata Ayıkla menüsünde Hata Ayıklamayı Başlat'a tıklayın.

    DSL derlenir ve Visual Studio'nun deneysel örneğine yüklenir.

    Visual Studio'nun deneysel bir örneği başlatılır. Deneysel örnek, ayarlarını, Visual Studio uzantılarının hata ayıklama amacıyla kaydedildiği kayıt defterinin ayrı bir alt ağacından alır. Visual Studio'nun normal örneklerinin orada kayıtlı uzantılara erişimi yoktur.

  3. Visual Studio'nun deneysel örneğinde Çözüm Gezgini'ndenSample.ftree adlı model dosyasını açın.

    - veya -

    Hata ayıklama projesine sağ tıklayın, Ekle seçeneğinin üzerine gelin ve Yeni Öğe...'ye tıklayın. Yeni Öğe Ekle iletişim kutusunda DSL dosya türünü seçin (örneğimizde FamilyTree).

    Model dosyası boş diyagram olarak açılır.

    Araç kutusu açılır ve diyagram türüne uygun araçları görüntüler. Alternatif olarak , Görünüm / Araç Kutusu menüsüne tıklayarak araç kutusunu gösterebilirsiniz.

  4. Diyagramda şekil ve bağlayıcı oluşturmak için araçları kullanın.

    1. Şekil oluşturmak için Örnek Şekil aracından diyagrama sürükleyin.

    2. İki şekli bağlamak için Örnek Bağlayıcı aracına tıklayın, ilk şekle tıklayın ve ardından ikinci şekle tıklayın.

  5. Şekilleri değiştirmek için etiketlerine tıklayın.

Deneysel Visual Studio'nuz aşağıdaki örneğe benzer:

Visual Studio'da etki alanına özgü dil örnek ağacı

Modelin İçeriği

DSL örneği olan bir dosyanın içeriğine model adı verilir. Model, modelöğelerini ve öğeler arasındaki bağlantıları içerir. DSL tanımı, modelde ne tür model öğelerinin ve bağlantıların bulunabileceğini belirtir. Örneğin, En Az Dil şablonundan oluşturulan bir DSL'de bir model öğesi türü ve bir bağlantı türü vardır.

DSL tanımı, modelin diyagramda nasıl görüneceğini belirtebilir. Çeşitli şekil ve bağlayıcı stilleri arasından seçim yapabilirsiniz. Bazı şekillerin diğer şekillerin içinde görünmesini belirtebilirsiniz.

Modeli düzenlerken Gezgin görünümünde bir modeli ağaç olarak görüntüleyebilirsiniz. Diyagrama şekil eklediğinizde model öğeleri de gezginde görünür. Diyagram olmasa bile gezgin kullanılabilir.

Visual Studio'nun hata ayıklama örneğinde Gezgin'i göremiyorsanız, Görünüm menüsünde Diğer Windows'un üzerine gelin ve Dil Gezgininiz'e<tıklayın>.

DSL'nizin API'si

DSL'niz, DSL örneği olan modelleri okumanızı ve güncelleştirmenizi sağlayan bir API oluşturur. API'nin bir uygulaması, bir modelden metin dosyaları oluşturmaktır. Daha fazla bilgi için bkz. T4 Metin Şablonlarını kullanarak Tasarım Zamanı Kod Oluşturma.

Hata ayıklama çözümünde ".tt" uzantısına sahip şablon dosyalarını açın. Bu örnekler modellerden nasıl metin oluşturabileceğinizi gösterir ve DSL'nizin API'sini test etmenizi sağlar. Örneklerden biri Visual Basic'te, diğeri Visual C# dilinde yazılmıştır.

Her şablon dosyasının altında, oluşturduğu dosya bulunur. Çözüm Gezgini'nde şablon dosyasını genişletin ve oluşturulan dosyayı açın.

Şablon dosyası, modeldeki tüm öğeleri listeleyen kısa bir kod kesimi içerir.

Oluşturulan dosya sonucu içerir.

Bir model dosyasını değiştirdiğinizde, dosyaları yeniden oluşturduktan sonra oluşturulan dosyalarda ilgili değişiklikleri görürsünüz.

Model dosyasını değiştirdikten sonra metin dosyalarını yeniden oluşturmak için

  1. Visual Studio'nun deneysel örneğinde model dosyasını kaydedin.

  2. Her .tt dosyasındaki dosya adı parametresinin denemeler için kullandığınız model dosyasına başvurduğundan emin olun. .tt dosyasını kaydedin.

  3. Oluştur menüsünde Tüm T4 Şablonlarını Dönüştür'e tıklayın.

    - veya -

    Yeniden oluşturmak istediğiniz şablonlara sağ tıklayın ve ardından Özel Aracı Çalıştır'a tıklayın.

Projeye istediğiniz sayıda metin şablonu dosyası ekleyebilirsiniz. Her şablon bir sonuç dosyası oluşturur.

Uyarı

DSL tanımını değiştirdiğinizde, siz güncelleştirmediğiniz sürece örnek metin şablonu kodu çalışmaz.

Daha fazla bilgi için bkz. Domain-Specific Dilinden Kod Oluşturma ve Domain-Specific Dilini Özelleştirmek için Kod Yazma.

DSL'yi özelleştirme

DSL tanımını değiştirmek istediğinizde, deneysel örneği kapatın ve ana Visual Studio örneğindeki tanımı güncelleştirin.

Uyarı

DSL tanımını değiştirdikten sonra, önceki sürümleri kullanarak oluşturduğunuz test modellerindeki bilgileri kaybedebilirsiniz. Örneğin, hata ayıklama çözümü, bazı şekilleri ve bağlayıcıları içeren Örnek adlı bir dosya içerir. DSL tanımınızı geliştirmeye başladıktan sonra görünür olmazlar ve dosyayı kaydettiğinizde kaybolurlar.

DSL'nize çok çeşitli uzantılar yapabilirsiniz. Aşağıdaki örnekler size olasılıklar ile ilgili bir izlenim verir.

Her değişiklikten sonra DSL tanımını kaydedin, Oluştur menüsünde Tüm T4 Şablonlarını Dönüştür'e tıklayın ve ardından değiştirilen DSL'yi denemek için F5 tuşuna basın.

Türleri ve Araçları Yeniden Adlandırma

Mevcut etki alanı sınıflarını ve ilişkilerini yeniden adlandırın. Örneğin, Minimum Dil şablonundan oluşturulan dsl tanımından başlayarak, DSL'nin aile ağaçlarını temsil etmelerini sağlamak için aşağıdaki yeniden adlandırma işlemlerini gerçekleştirebilirsiniz.

Etki alanı sınıflarını, ilişkilerini ve araçlarını yeniden adlandırmak için

  1. DslDefinition diyagramında ExampleModel'iFamilyTreeModel olarak, ExampleElement'iPerson olarak, TargetsChildren olarak (ve Ad'ı Parent olarak), Sources'i Parents olarak (ve Ad'ı Child olarak), ElementsPeople olarak ve DomainRelationship PersonReferencesChildrenParentsHaveChildren olarak yeniden adlandırın. Ayrıca ExampleConnector diyagram öğesini ChildConnector olarak yeniden adlandırın. Değiştirmek için her etikete tıklayabilirsiniz.

    DSL Tanımı diyagramı - aile ağacı modeli

  2. Öğeyi ve bağlayıcı araçlarını yeniden adlandırın.

    1. Çözüm Gezgini'nin altındaki sekmeye tıklayarak DSL Gezgini penceresini açın. Göremiyorsanız, Görünüm menüsünde Diğer Windows'un üzerine gelin ve DSL Gezgini'ne tıklayın. DSL Gezgini yalnızca DSL Tanımı diyagramı etkin pencere olduğunda görünür.

    2. Özellikler penceresini açın ve DSL Gezgini'ni ve Özellikleri aynı anda görebilecek şekilde konumlandırın.

    3. DSL Gezgini'nde Düzenleyici, Araç Kutusu Sekmeleri, <DSL'niz> ve ardından Araçlar'ı genişletin.

    4. ExampleElement'e tıklayın. Bu, öğe oluşturmak için kullanılan araç kutusu öğesidir.

    5. Özellikler penceresinde Name özelliğini Kişi olarak değiştirin.

      Caption özelliğinin de değiştiğine dikkat edin.

    6. Aynı şekilde , ExampleRelationship aracının adını ChildLink olarak değiştirin. Name özelliğinin bir kopyası olmaması için Caption özelliğini değiştirin. Örneğin, Alt Bağlantı girin.

  3. DSL'yi yeniden oluşturun.

    1. DSL Tanım dosyasını kaydedin.

    2. Oluştur menüsünde Tüm T4 Şablonlarını Dönüştür'e tıklayın.

    3. F5 tuşuna basın. Visual Studio'nun deneysel örneği görünene kadar bekleyin.

  4. Visual Studio'nun deneysel örneğindeki Hata Ayıklama çözümünde bir Test.ftree model dosyası açın. Öğeleri araç kutusundan üzerine sürükleyin. Araç başlıklarının ve Toolbox'taki tip adlarının değiştiğine dikkat et.

  5. Model dosyasını kaydedin.

  6. Çözüm Gezgini'nde bir .tt dosyası (FamilyTreeReport.tt) açın ve eski tür ve özellik adlarının oluşumlarını yeni adlarla değiştirin.

  7. .tt dosyasında belirtilen dosya adının test modelinizi belirttiğinden emin olun.

<#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" #>
<#@ output extension=".txt" #>
<#@ FamilyTree processor="FamilyTreeDirectiveProcessor" requires="fileName='Test.ftree'" #>

Generated material. Generating code in C#.

<#
  // When you change the DSL Definition, some of the code below may not work.

  foreach (Person person in this.FamilyTreeModel.People)
  {
#>
	<#= person.Name #>
<#    
  }
#>
  1. .tt dosyasını kaydedin. Güvenlik Uyarısı iletişim kutusunda Tamam'a tıklayın. .tt dosyasında kodu çalıştırmanın sonucunu görmek için oluşturulan dosyayı açın. Doğru olduğunu doğrulayın.

Visual Studio'nun deneysel örneğini kapatın.

Sınıflara Etki Alanı Özellikleri Ekleme

Etki alanı sınıfına, örneğin bir Kişinin doğum ve ölüm yıllarını temsil eden özellikler ekleyin.

Diyagramda yeni özelliklerin görünür olmasını sağlamak için model öğesini görüntüleyen şekle dekoratörler eklemeniz gerekir. Ayrıca özellikleri dekoratörlerle eşlemeniz gerekir.

Özellik eklemek ve bunları görüntülemek için
  1. Özellikleri ekleyin.

    1. DSL Tanımı diyagramında Kişi etki alanı sınıfına sağ tıklayın, Ekle'nin üzerine gelin ve Etki Alanı Özelliği'ne tıklayın.

    2. BirthYear ve DeathYear gibi yeni özellik adlarının listesini yazın. Her birinden sonra Enter tuşuna basın. Her yeni etki alanı özelliğini seçin ve Özellikler penceresinde Tür alanını Int32 olarak ayarlayın.

  2. Şekildeki özellikleri görüntüleyecek dekoratörler ekleyin.

    1. Kişi etki alanı sınıfından diyagramın diğer tarafına uzanan gri çizgiyi izleyin. Bu bir diyagram öğesi haritasıdır. Etki alanı sınıfını bir şekil sınıfına bağlar. ExampleShape'i PersonShape olarak yeniden adlandırın ve Özellikler'de Geometry alanını RoundedRectangle olarak değiştirin.

    2. Bu şekil sınıfına sağ tıklayın, Ekle'nin üzerine gelin ve Metin Dekoratörü'ne tıklayın.

    3. BirthDecorator ve DeathDecorator gibi adlara sahip iki dekoratör ekleyin. Dash adlı bir metin dekoratörü daha ekleyin ve Varsayılan Metin özelliğini -- değer (iki tire) olarak ayarlayın.

    4. Yeni dekoratörleri seçin ve Özellikler penceresinde Konum alanını ayarlayın. Bu, şekil üzerinde etki alanı özellik değerinin nerede görüntüleneceğini belirler. Örneğin, sırasıyla BirthDecorator ve DeathDecorator için InnerBottomLeft ve InnerBottomRight'ı ayarlayın. Dash için Position özelliğini InnerBottomCenter olarak ayarlayın.

      Bölme şekli tanımı

  3. Dekoratörleri özelliklere eşleyin.

    1. DSL Ayrıntıları penceresini açın. Genellikle Çıkış penceresinin yanındaki bir sekmede bulunur. Göremiyorsanız , Görünüm menüsünde Diğer Windows'un üzerine gelin ve DSL Ayrıntıları'na tıklayın.

    2. DSL tanımı diyagramında , Kişi etki alanı sınıfını şekil sınıfına bağlayan çizgiye tıklayın.

    3. DSL Ayrıntıları'nda, Dekoratör Haritalar sekmesinde eşlenmemiş bir dekoratör üzerindeki işaret kutusunu işaretleyin. Görüntüleme özelliği'nde, eşlenmek istediğiniz etki alanı özelliğini seçin. Örneğin, BirthDecorator öğesini BirthYear olarak eşleyin. DeathYear alan özelliğini metin dekoratörüne de eşleyin.

Etki alanı özelliğini metin dekoratörüne eşleme

  1. DSL'yi kaydedin, Oluştur menüsünde Tüm T4 Şablonlarını Dönüştür'e tıklayın ve F5 tuşuna basın.

  2. Hata Ayıklama projesine Tudors.ftree adlı yeni FamilyTree öğesi ekleyin. Tudors.ftree model diyagramında yeni Kişiler, Alt Bağlantılar ekleyin ve artık seçtiğiniz konumlara tıklayıp bunlara değer yazabildiğinizi doğrulayın. Buna ek olarak, bir Kişi şeklini seçtiğinizde Özellikler penceresinde yeni doğum yılı ve ölüm yılı özellikleri görüntülenir.

Tudors

  1. .tt dosyasında, her bir kişinin özelliklerini alan kod ekleyebilirsiniz. FamilyTreeReport.tt:
<#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" #>
<#@ output extension=".txt" #>
<#@ FamilyTree processor="FamilyTreeDirectiveProcessor" requires="fileName='Tudors.ftree'" #>

Generated material.

<#
  // When you change the DSL Definition, some of the code below may not work.

  foreach (Person person in this.FamilyTreeModel.People)
  {
#>
	<#= person.Name #> (<#= person.BirthYear #> - <#= person.DeathYear #>)
<#    
  }
#>

Oluşturulan FamilyTreeReport.txt:


Generated material.

	Henry VIII (1491 - 1547)
	Mary I (1516 - 1558)
	Elizabeth I (1533 - 1603)

Yeni Sınıflar Tanımla

Bir modele etki alanı sınıfları ve ilişkileri ekleyebilirsiniz. Örneğin, kasabaları temsil eden yeni bir sınıf ve bir şehirde yaşayan bir kişiyi temsil eden yeni bir ilişki oluşturabilirsiniz.

Model diyagramında farklı türleri ayırt etmek için etki alanı sınıflarını farklı şekil türlerine veya farklı geometri ve renklere sahip şekillere eşleyebilirsiniz.

Yeni etki alanı sınıfı eklemek ve görüntülemek için
  1. Bir etki alanı sınıfı ekleyin ve bunu model kökünün alt öğesi yapın.

    1. DSL Tanımı diyagramını (DslDefinition.dsl) açın. Araç Kutusu'nda İlişki Ekleme aracına tıklayın, DSL Tanımı diyagramında FamilyTreeModel kök sınıfına tıklayın ve sonra diyagramın boş bir bölümüne tıklayın.

      FamilyTreeModel'e bir ekleme ilişkisiyle bağlı olan yeni bir etki alanı sınıfı görüntülenir.

      Adını ayarlayın, örneğin Şehir.

      Uyarı

      Modelin kökü dışındaki her etki alanı sınıfı en az bir ekleme ilişkisinin hedefi olmalıdır veya ekleme işleminin hedefi olan bir sınıftan devralmalıdır. Bu nedenle, İlişki Katıştırma aracını kullanarak bir etki alanı sınıfı oluşturmak sık sık kullanışlıdır.

    2. Yeni sınıfa ad gibi bir etki alanı özelliği ekleyin.

  2. Kişi ve Kasaba arasında bir referans ilişkisi ekleyin.

    1. Başvuru İlişkisi aracına tıklayın, Şehir'e ve ardından Kişi'ye tıklayın.

    2. TownReferencesPersons ilişkisini Residence olarak yeniden adlandırın.

    3. İkametin solundaki KişileriSakinler olarak, Kasabaları ise sağda İkametler olarak adlandırın.

      DSL tanım parçası: aile ağacı kökü

      Uyarı

      Başvuru ilişkileri, model ağacının bir bölümünden diğerine çapraz başvuruları temsil eder.

  3. Model diyagramlarında kasabaları temsil eden bir şekil ekleyin.

    1. Bir Geometri Şeklini Araç Kutusu'ndan diyagrama sürükleyin ve örneğin TownShape olarak yeniden adlandırın.

    2. Özellikler penceresinde, yeni şeklin Dolgu Rengi ve Geometri gibi Görünüm alanlarını ayarlayın.

    3. Şehrin adını görüntülemek için bir Metin Dekoratörü ekleyin ve nameDecorator olarak yeniden adlandırın. Position özelliğini ayarlayın.

  4. Town etki alanı sınıfını TownShape ile eşleyin.

    1. Diyagram Öğesi Eşleme aracına tıklayın, ardından Town etki alanı sınıfına ve ardından TownShape şekil sınıfına tıklayın.

    2. DSL Ayrıntıları penceresinin Harita bağlayıcısı seçiliyken Dekoratör Haritalar sekmesinde NameDecorator'ı işaretleyin ve Görüntüleme Özelliği'ni Ad olarak ayarlayın.

  5. Kişi ve Kasabalar arasındaki ilişkiyi görüntülemek için bir bağlayıcı oluşturun.

    1. Bağlayıcıyı araç kutusundan diyagrama sürükleyin. Yeniden adlandırın ve görünüm özelliklerini ayarlayın.

    2. Yeni bağlayıcıyı Kişi ve Kasaba arasındaki ilişkiye bağlamak için Diyagram Öğesi Eşleme aracını kullanın.

      Şekil haritası eklenmiş Aile Ağacı tanımı

  6. Yeni bir Şehir oluşturmak için bir öğe aracı oluşturun.

    1. DSL Gezgini'ndeDüzenleyici'yi ve ardından Araç Kutusu Sekmeleri'ni genişletin.

    2. DSL'nize< sağ tıklayın> ve ardından Yeni Öğe Ekle Aracı'nı tıklatın.

    3. Yeni aracın Name özelliğini ayarlayın ve Class özelliğini Town olarak ayarlayın.

    4. Araç Kutusu Simgesi özelliğini ayarlayın. [...] öğesine tıklayın ve Dosya adı alanında "Kaynaklar\ExampleShapeToolBitmap.bmp" simge dosyasını seçin.

  7. Şehirler ve kişiler arasında bağlantı oluşturmak için bir bağlayıcı aracı oluşturun.

    1. DSL'nize< sağ tıklayın> ve ardından Yeni Bağlantı Aracı Ekle'ye tıklayın.

    2. Yeni aracın Name özelliğini ayarlayın.

    3. ConnectionBuilder özelliğinde ResidenceBuilder'ı seçin.

    4. Araç Kutusu Simgesini ("Kaynaklar\ExampleConnectorToolBitmap.bmp") ayarlayın.

  8. DSL Tanımını kaydedin, Tüm T4 Şablonlarını Dönüştür'e tıklayın ve F5 tuşuna basın.

  9. Visual Studio'nun deneysel örneğinde tudors.ftree model dosyasını açın. Şehirler ve kişiler arasında şehirler ve bağlantılar oluşturmak için yeni araçları kullanın. Yalnızca doğru öğe türleri arasında bağlantı oluşturabileceğinize dikkat edin.

  10. Her kişinin yaşadığı kasabayı listeleyen kod oluşturun. Metin şablonları, bu tür kodları çalıştırabileceğiniz yerlerden biridir. Örneğin, Hata Ayıklama çözümündeki mevcut FamilyTreeReport.tt dosyasını aşağıdaki kodu içerebilecek şekilde değiştirebilirsiniz:

<#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" #>
<#@ output extension=".txt" #>
<#@ FamilyTree processor="FamilyTreeDirectiveProcessor" requires="fileName='Tudors.ftree'" #>


<#
foreach (Person person in this.FamilyTreeModel.People)
{
#>
<#= person.Name #> (<#= person.BirthYear #> - <#= person.DeathYear #>) 
<#if (person.Residences != null) #> Residences:<#
foreach(Town town in person.Residences) {#><#= town.Name #>,<#}
#>
<#if (person.Children.Count > 0)
{#>

 Children:
<#
foreach(Person child in person.Children)
{
#>
	<#= child.Name #>
<#
}
}
#>

<#
}
#>
  

Sınıf yapısını anlamak için Sınıf Diyagramı'nı alabilir ve bunu *.tt dosyalarında kullanabilirsiniz. DomainClasses.cs (DomainClasses.tt yan dosyası) sağ tıklayın ve ardından Sınıf Diyagramını Görüntüle komutuna tıklayın.

Etki Alanı Sınıf Diyagramı

*.tt dosyasını kaydettiğinizde, kişi ve ikametgahlarının listesini içeren bir yan kuruluş dosyası oluşturulur. Daha fazla bilgi için bkz. Domain-Specific Dilinden Kod Oluşturma.

Doğrulama ve Komutlar

Doğrulama kısıtlamaları ekleyerek bu DSL'i daha da geliştirebilirsiniz. Bu kısıtlamalar, modelin doğru durumda olduğundan emin olmak için tanımlayabileceğiniz yöntemlerdir. Örneğin, bir çocuğun doğum tarihinin ebeveynlerinin doğum tarihinden daha geç olduğundan emin olmak için bir kısıtlama tanımlayabilirsiniz. DSL kullanıcısı kısıtlamaların herhangi birini bozan bir modeli kaydetmeye çalışırsa doğrulama özelliği bir uyarı görüntüler. Daha fazla bilgi için bkz . Domain-Specific Dilinde Doğrulama.

Kullanıcının çağırabileceği menü komutlarını da tanımlayabilirsiniz. Komutlar modeli değiştirebilir. Ayrıca Visual Studio'daki diğer modellerle ve dış kaynaklarla da etkileşimde bulunabilirler. Daha fazla bilgi için bkz . Nasıl yapılır: Standart Menü Komutunu Değiştirme.

DSL'yi dağıtma

Diğer kullanıcıların etki alanına özgü dili kullanmasına izin vermek için bir Visual Studio Uzantısı (VSIX) dosyası dağıtırsınız. Bu, DSL çözümünü oluştururken oluşturulur.

Çözümünüzün bin klasöründe .vsix dosyasını bulun. Yüklemek istediğiniz bilgisayara kopyalayın. Bu bilgisayarda VSIX dosyasına çift tıklayın. DSL, bu bilgisayardaki tüm Visual Studio örneklerinde kullanılabilir.

Visual Studio'nun deneysel örneğini kullanmak zorunda olmaması için DSL'yi kendi bilgisayarınıza yüklemek için aynı yordamı kullanabilirsiniz.

Daha fazla bilgi için bkz. Domain-Specific Dil Çözümlerini Dağıtma.

Eski Deneysel DSL'leri kaldırma

Artık istemediğiniz deneysel DLL'ler oluşturduysanız Visual Studio Deneysel örneğini sıfırlayarak bunları bilgisayarınızdan kaldırabilirsiniz.

Bu, tüm deneysel DLL'leri ve diğer deneysel Visual Studio uzantılarını bilgisayarınızdan kaldırır. Bunlar, hata ayıklama modunda yürütülen uzantılardır.

Bu yordam, VSIX dosyası yürütülerek tamamen yüklenmiş DCL'leri veya diğer Visual Studio uzantılarını kaldırmaz.

Visual Studio Deneysel örneğini sıfırlamak için

  1. Windows Başlat menüsünde Visual Studio'yu sıfırla yazın ve ardından Visual Studio sürümünüzle eşleşen Microsoft Visual Studio Deneysel Örneğini Sıfırla komutunu çalıştırın.

  2. Hala kullanmak istediğiniz tüm deneysel DLL'leri veya diğer deneysel Visual Studio uzantılarını yeniden oluşturun.