Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DSL modellerini herhangi bir uygulamada açabilirsiniz.
Visual Studio uzantısından Bu amaçla ModelBus'ı kullanabilirsiniz. ModelBus, modeldeki bir modele veya öğelere başvurmak ve taşınıp taşınmadığını bulmak için standart mekanizma sağlar. Daha fazla bilgi için bkz . Visual Studio Modelbus kullanarak Modelleri Tümleştirme.
Hedef çerçeve
Uygulama projenizin Hedef çerçevesini .NET Framework 4 veya üzeri olarak ayarlayın.
DSL modelini okumak istediğiniz uygulamanın Visual Studio projesini açın.
Çözüm Gezgini'de projeye sağ tıklayın ve ardından Özellikler'e tıklayın.
Proje özellikleri penceresinde, Uygulama sekmesinde Hedef çerçeve alanını .NET Framework 4 (veya üzeri) olarak ayarlayın.
Not
Hedef çerçeve .NET Framework 4 İstemci Profili olmamalıdır.
Başvurular
Visual Studio uygulama projenize şu başvuruları ekleyin:
Microsoft.VisualStudio.Modeling.Sdk.11.0- Başvuru Ekle iletişim kutusundaki .NET sekmesinin altında bunu görmüyorsanız Gözat sekmesine tıklayın ve öğesine
%Program Files%\Microsoft Visual Studio\2022\YourVSversionSKU\VSSDK\VisualStudioIntegration\Common\Assembliesgidin.
- Başvuru Ekle iletişim kutusundaki .NET sekmesinin altında bunu görmüyorsanız Gözat sekmesine tıklayın ve öğesine
DSL projenizin bölme klasörünün altında bulabileceğiniz DSL derlemeniz. Adı genellikle şu biçimdedir: Şirketiniz.YourProject
.Dsl.dll.
DSL'deki önemli sınıflar
DSL'nizi okuyan kodu yazabilmeniz için önce DSL'niz tarafından oluşturulan bazı sınıfların adlarını bilmeniz gerekir. DSL çözümünüzde Dsl projesini açın ve GeneratedCode klasörüne bakın. Alternatif olarak, proje Başvurularınızdaki DSL derlemesine çift tıklayın ve DSL ad alanını Object Browser'da açın.
Tanımlamanız gereken sınıflar şunlardır:
YourDslRootClass - Bu, içindeki kök sınıfın
DslDefinition.dsladıdır.YourDslName
SerializationHelper- Bu sınıf DSL projenizde tanımlanırSerializationHelper.cs.YourDslName
DomainModel- Bu sınıf DSL projenizde tanımlanırDomainModel.cs.
Dosyadan okuma
Aşağıdaki örnek, önemli sınıfların aşağıdaki gibi olduğu bir DSL okumak için tasarlanmıştır:
FamilyTreeModel
FamilyTreeSerializationHelper
FamilyTreeDomainModel
Bu DSL'deki diğer etki alanı sınıfı Kişi'dir.
using System;
using Microsoft.VisualStudio.Modeling;
using Company.FamilyTree; // Your DSL namespace
namespace StandaloneReadDslConsole
{ class Program
{ static void Main(string[] args)
{
// The path of a DSL model file:
string dslModel = @"C:\FamilyTrees\Tudor.ftree";
// Set up the Store to read your type of model:
Store store = new Store(
typeof(Company.FamilyTree.FamilyTreeDomainModel));
// The Model type generated by the DSL:
FamilyTreeModel familyTree;
// All Store changes must be in a Transaction:
using (Transaction t =
store.TransactionManager.BeginTransaction("Load model"))
{
familyTree =
FamilyTreeSerializationHelper.Instance.
LoadModel(store, dslModel, null, null, null);
t.Commit(); // Don't forget this!
}
// Now we can read the model:
foreach (Person p in familyTree.People)
{
Console.WriteLine(p.Name);
foreach (Person child in p.Children)
{
Console.WriteLine(" " + child.Name);
}
} } } }
Dosyaya kaydetme
Önceki koda aşağıdaki ekleme modelde bir değişiklik yapar ve bunu bir dosyaya kaydeder.
using (Transaction t =
store.TransactionManager.BeginTransaction("update model"))
{
// Create a new model element:
Person p = new Person(store);
// Set its embedding relationship:
p.FamilyTreeModel = familyTree;
// - same as: familyTree.People.Add(p);
// Set its properties:
p.Name = "Edward VI";
t.Commit(); // Don't forget this!
}
// Save the model:
try
{
SerializationResult result = new SerializationResult();
FamilyTreeSerializationHelper.Instance
.SaveModel(result, familyTree, @"C:\FamilyTrees\Tudor-upd.ftree");
// Report any error:
if (result.Failed)
{
foreach (SerializationMessage message in result)
{
Console.WriteLine(message);
}
}
}
catch (System.IO.IOException ex)
{ ... }