Özel mimari doğrulama katmanı Diyagram ekleme
İçinde Visual Studio Ultimate ve Visual Studio Premium, kullanıcıları kaynak kodunda doğrulamak bir Visual Studio karşı bir katman modeli kaynak kodun katman diyagramı üzerinde bağımlılıklara uyduğunu doğrulamak böylece proje.Standart doğrulama algoritması vardır, ancak kendi doğrulama uzantıları için tanımladığınız Visual Studio Ultimate ve Visual Studio Premium.
Kullanıcı seçtiğinde Mimariyi Doğrula standart doğrulama yöntemi çağrıldığında, önceden yüklenmiş herhangi bir doğrulama uzantıları tarafından izlenen bir Katman diyagramında komutu.
[!NOT]
Bir katman diyagramındaki doğrulama uml diyagramları doğrulama aynı değildir.Bir katman diyagramı ana amacı diyagramı program kodunu diğer bölümlerinde çözümü ile karşılaştırmak için yapmaktır.
İçine bir Visual Studio Tümleştirme Uzantısı (diğer dağıtmak, VSIX), katman doğrulama uzantınızı paketleyebilirsiniz Visual Studio Ultimate kullanıcılar.Doğrulayıcı, bir VSIX kendisi tarafından yerleştirebilir veya olarak diğer uzantıları aynı VSIX içinde birleştirebilirsiniz.Doğrulayıcının kodunu kendi yazsın Visual Studio başka bir uzantısı olarak değil aynı projede proje.
Uyarı |
---|
Doğrulama projesi oluşturduktan sonra kopyalama kod örneği sonunda, bu konu ve kendi için gerektiğini sonra Düzenle. |
Gereksinimler
Visual Studio Ultimate
Visual Studio SDK
Visual Studio Görselleştirme ve modelleme sdk
Yeni bir VSIX katman doğrulayıcısı tanımlama
Bir doğrulayıcı oluşturmanın en hızlı yöntemi proje şablonu kullanmaktır.Bu, aynı projeye kod ve VSIX bildirimini yerleştirir.
Proje şablonu kullanarak bir uzantısı tanımlamak için
Kullanarak yeni bir çözüm içindeki bir proje oluşturma Yeni bir proje komutunu Dosya menüsü.
İçinde Yeni bir proje iletişim kutusunda, altında Modelleme projeleri, select Katman Tasarımcısı doğrulama uzantısı.
Şablon küçük bir örnek içeren bir proje oluşturur.
Uyarı Uygun şablonu yapmak için:
Yapılan düzenleme LogValidationError isteğe bağlı bağımsız değişkenleri kaldırmak için errorSourceNodes ve errorTargetNodes.
Özel özellikleri kullanırsanız, belirtilen güncelleştirmeyi Özel Özellikler bir katman Diyagram ekleme.Ayrıca, bir model çözüm açmadan önce Mimari Gezgini'ni açın.
Doğrulamanızı tanımlayacağınız kodunu düzenleyin.Daha fazla bilgi için bkz: Doğrulama programlama.
Uzantının test etmek için bkz: Hata ayıklama katman doğrulama.
[!NOT]
Yalnızca belirli durumlarda yönteminizi çağrılacak ve kesme noktalarını otomatik olarak çalışmaz.Daha fazla bilgi için bkz: Hata ayıklama katman doğrulama.
Ana örneği uzantısı yüklemek için Visual Studio, veya başka bir bilgisayarda, .vsix , dosya bin\*.Yüklemek istediğiniz bilgisayara kopyalayın ve sonra çift tıklatın.Onu kaldırmak için Uzantı Yöneticisi üzerinde araçları menü.
Katman doğrulama için ayrı bir VSIX ekleme
Katman doğrulayıcıları, komutları ve diğer uzantıları içeren bir VSIX oluşturmak istiyorsanız, VSIX tanımlamak için bir proje ve işleyicileri için ayrı projeler oluşturmanız önerilir.Diğer modelleme uzantı türleri hakkında daha fazla bilgi için bkz: UML Modellerini ve Diyagramları Genişletme.
Katman doğrulama için ayrı bir VSIX eklemek için
Sınıf kitaplığı oluşturmak varolan veya yeni bir proje Visual Studio Ultimate çözüm.İçinde Yeni bir proje iletişim kutusunda, tıklatın Visual C# 'ı Class Library.Bu proje katman doğrulama sınıfı içerir.
Çözümünüze bir VSIX projesi oluşturun veya tanımlayın.Bir VSIX projesi adlı bir dosya içerir source.extension.vsixmanifest.Bir VSIX projesine eklemeniz gerekiyorsa, aşağıdaki adımları izleyin:
İçinde Yeni bir proje iletişim kutusunda, seçim Visual C#, genişletilebilirlik, VSIX proje.
İçinde Çözüm Gezgini, kısayol menüsünde VSIX projesinin başlangıç projesi olarak ayarla.
İçinde source.extension.vsixmanifestaltında varlıklarını, bir mef bileşeni olarak katman doğrulama projesi ekleyin:
Seçim Yeni.
İçinde Ekleme yeni kıymet iletişim kutusunda, küme:
Türü = Microsoft.VisualStudio.MefComponent
Kaynak = Geçerli çözümde bir proje
Proje = doğrulayıcısı projeniz
Ayrıca bir katman doğrulama eklemelisiniz:
Seçim Yeni.
İçinde Ekleme yeni kıymet iletişim kutusunda, küme:
Türü = Microsoft.VisualStudio.ArchitectureTools.Layer.Validator.Bu aşağı açılan listesindeki seçeneklerden biri değil.Klavyeden girmelisiniz.
Kaynak = Geçerli çözümde bir proje
Proje = doğrulayıcısı projeniz
Katman doğrulama projeye dönün ve aşağıdaki proje başvurularını ekleyin:
Reference
Ne yapmanıza izin verir
Microsoft.VisualStudio.GraphModel.dll
Okuma Mimarisi grafiği
Microsoft.VisualStudio.ArchitectureTools.Extensibility.CodeSchema.dll
Kod dom katmanları ile ilişkili okuyun
Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer.dll
Katman modeli okuma
Microsoft.VisualStudio.ArchitectureTools.Extensibility
Okuma ve şekilleri ve diyagramları güncelleyebilir.
System.ComponentModel.Composition
Yönetilen Genişletilebilirlik Çerçevesi (mef) kullanarak doğrulama bileşeni tanımlamak
Microsoft.VisualStudio.Modeling.Sdk.11.0
Modelleme uzantılarını tanımlayın
Doğrulayıcı kitaplığı projesi, doğrulama kodunu içeren sınıf dosyasında bu konunun sonundaki örnek kodu kopyalayın.Daha fazla bilgi için bkz: Doğrulama programlama.
Uzantının test etmek için bkz: Hata ayıklama katman doğrulama.
[!NOT]
Yalnızca belirli durumlarda yönteminizi çağrılacak ve kesme noktalarını otomatik olarak çalışmaz.Daha fazla bilgi için bkz: Hata ayıklama katman doğrulama.
VSIX ana örneği yüklemek için Visual Studio, veya başka bir bilgisayarda, .vsix , dosya bin VSIX projesinin dizin.VSIX yüklemek istediğiniz bilgisayara kopyalayın.Windows Gezgini'nde VSIX dosyasını çift tıklatın.(8 Windows Explorer dosya).
Onu kaldırmak için Uzantı Yöneticisi üzerinde araçları menü.
Programlama doğrulama
Katman doğrulama uzantısı tanımlamak için aşağıdaki özelliklere sahip bir sınıf tanımlayın:
Bildirimi genel biçimi aşağıdaki gibidir:
using System.ComponentModel.Composition; using Microsoft.VisualStudio.ArchitectureTools.Extensibility.CodeSchema; using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer; using Microsoft.VisualStudio.GraphModel; ... [Export(typeof(IValidateArchitectureExtension))] public partial class Validator1Extension : IValidateArchitectureExtension { public void ValidateArchitecture(Graph graph) { GraphSchema schema = graph.DocumentSchema; ... } }
Hata keşfettiğinizde, bunu kullanarak bildirebilirsiniz LogValidationError().
Uyarı İsteğe bağlı parametreleri kullanmayın LogValidationError.
Ne zaman kullanıcı çağırır Mimariyi Doğrula menü komutu, katmanları ve bir grafik oluşturmak için kendi yapıları katman çalışma zamanı sistemi analizleri yaparken.Grafik dört bölümden oluşur:
Katman modellerini Visual Studio çözüm düğümler ve bağlantılar grafik olarak temsil edilir.
Kodu, proje öğeleri ve diğer yapıların çözüm içinde tanımlanan ve düğümleri ve çözümleme işlemi tarafından keşfedilen bağımlılıkları gösteren bağlantılar olarak gösterilir.
Kod yapısı düğümlerinin katman düğümlerinden bağlantılar.
Doğrulayıcı tarafından bulunan hataları temsil eden düğümleri.
Grafik inşa standart doğrulama yöntemi denir.Bu tamamlandığında, tüm yüklenmiş uzantı doğrulama yöntemleri belirtilmemiş sırayla verilir.Grafik, geçirilen kadar her ValidateArchitecture grafik tarama ve bulduğu herhangi bir hata raporu yöntemi.
[!NOT]
Bu uml diyagramları için uygulanan doğrulama işlemi ile aynı değildir ve bu etki alanına özgü dil kullanılan doğrulama işlemi ile aynı değildir.
Doğrulama yöntemlerinin katman modeli veya geçerliliği kod değiştirmemelisiniz.
Grafik model içinde tanımlanan Microsoft.VisualStudio.GraphModel.Asıl kendi sınıfları GraphNode ve GraphLink.
Her düğüm ve bağlantı her öğe veya onu temsil eden ilişki türünü belirten bir veya daha fazla kategori vardır.Normal bir grafikte düğümler aşağıdaki kategorileri vardır:
Dsl.LayerModel
Dsl.Layer
Dsl.Reference
CodeSchema_Type
CodeSchema_Namespace
CodeSchema_Type
CodeSchema_Method
CodeSchema_Field
CodeSchema_Property
Kod içindeki öğelere bağlantılar katmanlardan "Temsil" kategorisi vardır.
Doğrulama hata ayıklama
Katman doğrulama uzantınızı hata ayıklamak için ctrl + F5 tuşlarına basın.Deneysel örneği Visual Studio açar.Bu örnekte, bir katman modeli oluşturun veya açın.Bu model kodu ile ilişkilendirilmiş olması gerekir ve en az bir bağımlılığı olmalıdır.
Bağımlılıklar içeren bir çözüm ile test
Doğrulama özellikleri var olmadığı sürece yürütülmez:
Katman diyagramı üzerinde en az bir bağımlılık bağlantısı yoktur.
Kod öğeleri ile ilişkili olan Katmanlar modeli vardır.
Deneysel örneği başlatılan ilk kez Visual Studio doğrulama uzantınızı test etmek için açın veya bu özelliklere sahip bir çözüm oluşturun.
Önce çalışma temiz çözüm mimarisi Doğrula
Doğrulama kodunuz güncelleştirdiğinizde, kullanın Temiz çözüm komutunu Yapı menüsündeki Doğrulama komutu sınamadan önce deneysel çözüm.Doğrulama sonuçlarını önbelleğe alındığı için bu gereklidir.Doğrulama yöntemleri test katman diyagramı veya kendi kod gerçekleştirmediyseniz yürütülmez.
Açıkça hata ayıklayıcısını Başlat
Doğrulama ayrı bir işlemde çalıştırır.Bu nedenle, kendi doğrulama yönteminde kesme tetiklenir değil.Doğrulama başladığında, işleme hata ayıklayıcı açıkça iliştirmelisiniz.
Doğrulama işlemi için hata ayıklayıcı için bir çağrı yerleştirmeye System.Diagnostics.Debugger.Launch() doğrulama yönteminizi başında.Hata ayıklama iletişim kutusu görüntülendiğinde, ana örneğini seçin Visual Studio.
Alternatif olarak, bir çağrı yerleştirmeye System.Windows.Forms.MessageBox.Show().İleti kutusu görüntülendiğinde, ana örneğine gidin Visual Studio ve hata ayıklama menüsünü tıklatın İşleme Ekle. Adlandırılmış İşlem Graphcmd.exe.
Her zaman ctrl + F5 tuşuna basarak deneysel örneği başlar (hata ayıklama olmadan Başlat).
Bir doğrulama uzantısı dağıtma
Kendi doğrulama uzantısı olan bir bilgisayara yüklemek için Visual Studio Ultimate veya Visual Studio Premium olan yüklü, hedef bilgisayarda VSIX dosyası açın.Bağımlı olduğu bir bilgisayara yüklemek için Team Foundation Yapısı olan yüklü, siz el ile VSIX içeriği uzantıları bir klasöre ayıklamanız gerekir.Daha fazla bilgi için bkz. Uzantısı model katmanı dağıtma.
Kod örneği
using System;
using System.ComponentModel.Composition;
using System.Globalization;
using System.Linq;
using System.Text.RegularExpressions;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.CodeSchema;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer;
using Microsoft.VisualStudio.GraphModel;
namespace Validator3
{
[Export(typeof(IValidateArchitectureExtension))]
public partial class Validator3Extension : IValidateArchitectureExtension
{
/// <summary>
/// Validate the architecture
/// </summary>
/// <param name="graph">The graph</param>
public void ValidateArchitecture(Graph graph)
{
if (graph == null) throw new ArgumentNullException("graph");
// Uncomment the line below to debug this extension during validation
// System.Windows.Forms.MessageBox.Show("Attach 2 to GraphCmd.exe with process id " + System.Diagnostics.Process.GetCurrentProcess().Id);
// Get all layers on the diagram
foreach (GraphNode layer in graph.Nodes.GetByCategory("Dsl.Layer"))
{
System.Threading.Thread.Sleep(100);
// Get the required regex property from the layer node
string regexPattern = "^[a-zA-Z]+$"; //layer[customPropertyCategory] as string;
if (!string.IsNullOrEmpty(regexPattern))
{
Regex regEx = new Regex(regexPattern);
// Get all referenced types in this layer including those from nested layers so each
// type is validated against all containing layer constraints.
foreach (GraphNode containedType in layer.FindDescendants().Where(node => node.HasCategory("CodeSchema_Type")))
{
// Check the type name against the required regex
CodeGraphNodeIdBuilder builder = new CodeGraphNodeIdBuilder(containedType.Id, graph);
string typeName = builder.Type.Name;
if (!regEx.IsMatch(typeName))
{
// Log an error
string message = string.Format(CultureInfo.CurrentCulture, Resources.InvalidTypeNameMessage, typeName);
this.LogValidationError(graph, typeName + "TypeNameError", message, GraphErrorLevel.Error, layer);
}
}
}
}
}
}
}