Dodawanie sprawdzania poprawności architektury niestandardowe diagramy warstwy
W Visual Studio Ultimate i Visual Studio Premium, użytkownicy mogą sprawdzić poprawność kodu źródłowego w Visual Studio projektu przed model warstwy, aby mogli zweryfikować, że kod źródłowy jest zgodny ze współzależnościami diagram warstwy.Jest algorytm sprawdzania poprawności standardowego, ale można zdefiniować własne rozszerzenia sprawdzania poprawności dla Visual Studio Ultimate i Visual Studio Premium.
Gdy użytkownik wybierze Sprawdzania poprawności architektury polecenie z diagramu warstwy, wywoływana jest metoda standardowych sprawdzania poprawności, a następnie wszystkie rozszerzenia sprawdzania poprawności, które zostały zainstalowane.
[!UWAGA]
Sprawdzanie poprawności na diagramie warstwy nie jest taka sama, jak sprawdzanie poprawności na diagramach UML.Na diagramie warstwy głównym celem jest porównać diagram z kodu programu w innych częściach rozwiązanie.
Rozszerzenie sieci warstwy sprawdzania poprawności można spakować do Visual Studio Integration rozszerzenie (VSIX), który można rozpowszechniać wśród innych Visual Studio Ultimate użytkowników.Można umieścić swoje modułu sprawdzania poprawności w VSIX samodzielnie lub można połączyć je w tym samym VSIX jako inne rozszerzenia.Powinno się pisać kodu modułu sprawdzania poprawności w sobie Visual Studio projektu, nie w tym samym projekcie jako inne rozszerzenia.
![]() |
---|
Po utworzeniu projektu sprawdzania poprawności, należy skopiować Przykładowy kod źródłowy na końcu tego tematu i następnie edytować, że do własnych potrzeb. |
Wymagania
Visual Studio Ultimate
Visual Studio SDK
Visual Studio wizualizacji i modelowania zestawu SDK
Definiowanie walidator warstwy w nowych VSIX
Najszybszą metodą tworzenia walidator jest użycie szablonu projektu.To umieszcza kod i manifestu VSIX do tego samego projektu.
Aby zdefiniować rozszerzenie przy użyciu szablonu projektu
Tworzenie projektu w nowe rozwiązanie, za pomocą Nowy projekt polecenie na pliku menu.
W Nowy projekt dialogowe, pod Modelowanie projektów, wybierz Rozszerzenie sprawdzania poprawności projektanta warstwy.
Ten szablon tworzy projekt zawierający krótki przykład.
Przestroga
Aby szablon działać poprawnie:
Edytowanie połączeń w celu LogValidationError usunąć argumentów opcjonalnych errorSourceNodes i errorTargetNodes.
Jeśli używasz właściwości niestandardowe, należy zastosować aktualizację wymienionych w Dodawanie właściwości niestandardowe do diagramu warstwy.Ponadto Otwórz Eksploratora architektury, przed otwarciem rozwiązania modelu.
Edytuj swoje sprawdzania poprawności w definicji.Aby uzyskać więcej informacji, zobacz Sprawdzania poprawności Programming.
Aby przetestować rozszerzenie, zobacz Debugowanie sprawdzania poprawności warstwy.
[!UWAGA]
Twoja forma będzie wywoływana tylko w szczególnych okolicznościach, a użycie punktów przerwania nie będzie działać automatycznie.Aby uzyskać więcej informacji, zobacz Debugowanie sprawdzania poprawności warstwy.
Aby zainstalować rozszerzenie w głównym wystąpienie Visual Studio, lub na innym komputerze, należy znaleźć .vsix plik w bin\*.Skopiuj go do komputera, w którym chcesz go zainstalować, a następnie kliknij go dwukrotnie.Aby odinstalować go, należy użyć Extension Manager na Narzędzia menu.
Dodawanie modułu sprawdzania poprawności warstwę do oddzielnego VSIX
Jeśli chcesz utworzyć jeden VSIX, zawierającego warstwy walidatorów, poleceń i innych rozszerzeń, zaleca się utworzenie jednego projektu do zdefiniowania VSIX i oddzielnymi projektami dla programu obsługi.Aby uzyskać informacje o innych typach rozszerzeń modelowania, zobacz Rozszerzanie modeli UML i diagramów.
Aby dodać sprawdzanie poprawności warstwę do oddzielnego VSIX
Tworzenie biblioteki klas projektu w nowe lub istniejące Visual Studio Ultimate rozwiązanie.W Nowy projekt okno dialogowe, kliknij przycisk Visual C# a następnie kliknij przycisk Biblioteka klas.Ten projekt będzie zawierać klasy warstwy sprawdzania poprawności.
Identyfikacji lub utworzyć projekt VSIX w rozwiązaniu.Projekt VSIX zawiera plik o nazwie source.extension.vsixmanifest.Jeśli trzeba dodać projekt VSIX, wykonaj następujące kroki:
W Nowy projekt okno dialogowe Wybierz Visual C#, rozszerzalności, Projektu VSIX.
W Solution Explorer, w menu skrótów programu VSIX project jako projekt uruchamiania.
W source.extension.vsixmanifest, w obszarze aktywów, dodać warstwy sprawdzania poprawności projektu jako składnik MEF:
Wybierz polecenie Nowy.
W Dodać nowego środka okno dialogowe, zestaw:
Typ = Microsoft.VisualStudio.MefComponent
Źródło = projektu w bieżącym rozwiązaniu
Projekt = modułu sprawdzania poprawności projektu
Należy również dodać go jako przy sprawdzaniu poprawności warstwy:
Wybierz polecenie Nowy.
W Dodać nowego środka okno dialogowe, zestaw:
Typ = Microsoft.VisualStudio.ArchitectureTools.Layer.Validator.Nie jest jedną z opcji z listy rozwijanej.Należy wprowadzać go przy użyciu klawiatury.
Źródło = projektu w bieżącym rozwiązaniu
Projekt = modułu sprawdzania poprawności projektu
Powróć do warstwy sprawdzania poprawności projektu i dodać następujące odwołanie projektu:
Informacje o odwołaniach
Co to pozwala robić
Microsoft.VisualStudio.GraphModel.dll
Odczytać ten wykres architektury
Microsoft.VisualStudio.ArchitectureTools.Extensibility.CodeSchema.dll
Odczytać DOM kod skojarzony z warstwami
Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer.dll
Odczytać warstwy modelu
Microsoft.VisualStudio.ArchitectureTools.Extensibility
Przeczytaj i aktualizację kształtów i diagramów.
System.ComponentModel.Composition
Zdefiniuj składnik sprawdzania poprawności przy użyciu zarządzanych rozszerzeń Framework (MEF)
Microsoft.VisualStudio.Modeling.Sdk.11.0
Zdefiniować rozszerzenia modelowania
Skopiuj kod przykładowy na końcu tego tematu w pliku klasy w projekcie modułu sprawdzania poprawności biblioteki zawierają kod do swojej sprawdzania poprawności.Aby uzyskać więcej informacji, zobacz Sprawdzania poprawności Programming.
Aby przetestować rozszerzenie, zobacz Debugowanie sprawdzania poprawności warstwy.
[!UWAGA]
Twoja forma będzie wywoływana tylko w szczególnych okolicznościach, a użycie punktów przerwania nie będzie działać automatycznie.Aby uzyskać więcej informacji, zobacz Debugowanie sprawdzania poprawności warstwy.
Aby zainstalować VSIX w głównym wystąpienie Visual Studio, lub na innym komputerze, należy znaleźć .vsix plik w bin katalogu projektu VSIX.Skopiuj go do komputera, na którym chcesz zainstalować VSIX.Kliknij dwukrotnie plik VSIX w Eksploratorze Windows.(Eksplorator plików w systemie Windows 8).
Aby odinstalować go, należy użyć Extension Manager na Narzędzia menu.
Sprawdzanie poprawności programowania
Aby zdefiniować rozszerzenie sprawdzania poprawności warstwy, definiuje klasy, która ma następujące cechy:
Ogólny formularz zgłoszenia jest następująca:
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; ... } }
Po wykryciu błędu, możesz to zgłosić za pomocą LogValidationError().
Przestroga
Nie należy używać następujące parametry opcjonalne z LogValidationError.
Kiedy użytkownik wywoła Sprawdzania poprawności architektury polecenia menu, system plików wykonywalnych warstwy analizuje warstw i ich artefakty, przedstawić na wykresie.Wykres ma cztery części:
Modele warstwy Visual Studio rozwiązanie, które są reprezentowane jako węzły i łączy na wykresie.
Kod, elementy projektu i inne przedmioty, które są zdefiniowane w roztworze i reprezentowane jako węzły i łącza, które reprezentują zależności odkryta przez proces analizy.
Łączy z węzłów warstwy do węzłów artefakt kodu.
Węzły, które reprezentują błędy wykryte przez moduł sprawdzania poprawności.
Gdy wykres została skonstruowana, wywoływana jest metoda standardowych sprawdzania poprawności.Po zakończeniu tej operacji, wszelkich zainstalowanych rozszerzeń sprawdzania poprawności są wywoływane w nieokreślonej kolejności.Wykres jest przekazywana do każdej ValidateArchitecture metodę, która pozwala na skanowanie wykresu i zgłosić wszelkie błędy, które znajdzie.
[!UWAGA]
Nie jest taka sama, jak proces sprawdzania poprawności, która jest stosowana do diagramów UML, a nie jest taka sama, jak proces sprawdzania poprawności, które mogą być używane w języków.
Metody sprawdzania poprawności nie należy zmieniać warstwy modelu lub kod, który jest sprawdzany.
Graph model określa się w Microsoft.VisualStudio.GraphModel.Jego główne klasy są GraphNode i GraphLink.
Wszystkie węzły i każde łącze ma jedną lub więcej kategorii, które określają typ element lub relacji, który reprezentuje.Węzły typowe wykresu mają następujące kategorie:
Dsl.LayerModel
Dsl.Layer
Dsl.Reference
CodeSchema_Type
CodeSchema_Namespace
CodeSchema_Type
CodeSchema_Method
CodeSchema_Field
CodeSchema_Property
Łączy z warstwy do elementów w kodzie mieć kategorii "Reprezentuje".
Debugowanie sprawdzania poprawności
Aby debugować Twojego rozszerzenia sprawdzania poprawności warstwy, naciśnij klawisze CTRL + F5.Wystąpienie doświadczalnych Visual Studio zostanie otwarty.W tym wypadku Otwórz lub Utwórz warstwy modelu.Ten model musi być skojarzony z kodem i musi mieć co najmniej jedną współzależność.
Przetestować rozwiązanie, które zawiera zależności
Sprawdzanie poprawności nie jest wykonywana, chyba że występują następujące cechy:
Istnieje co najmniej jedno łącze zależność na diagramie warstwy.
Brak warstwy w modelu, które są skojarzone z elementów kodu.
Uruchomić wystąpienie doświadczalnych po raz pierwszy Visual Studio Aby przetestować Twojego rozszerzenia sprawdzania poprawności, należy otworzyć lub utworzyć rozwiązanie, które ma te cechy.
Wykonywania czystego roztworu azotanu srebra przed sprawdzania poprawności architektury
Po zaktualizowaniu kod sprawdzania poprawności, należy użyć Optymalnym rozwiązaniem polecenie na budować menu w roztworze doświadczalnych, zanim zaczniesz testować polecenie Sprawdź poprawność.Jest to konieczne, ponieważ wyniki sprawdzania poprawności są buforowane.Jeśli nie zostały zaktualizowane na diagramie warstwy testu lub jego kodu, metody sprawdzania poprawności nie zostanie wykonana.
Jawnie uruchomić debugera
Sprawdzanie poprawności rozpoczyna się w oddzielnym procesie.W związku z tym punkty przerwania w swoje metody sprawdzania poprawności nie zostanie wyzwolony.Należy dołączyć debuger do procesu jawnie podczas sprawdzania poprawności została uruchomiona.
Aby dołączyć debuger do procesu sprawdzania poprawności, należy wstawić wywołanie System.Diagnostics.Debugger.Launch() na początku swoje metody sprawdzania poprawności.Gdy pojawi się okno dialogowe debugowania, zaznacz głównym wystąpienia Visual Studio.
Alternatywnie, można wstawić wywołanie System.Windows.Forms.MessageBox.Show().Kiedy pojawi się okno komunikatu, przejdź do głównego wystąpienie Visual Studio i program Debug: polecenie menu, kliknij Dołącz do procesu. Wybierz proces, który nosi nazwę Graphcmd.exe.
Zawsze uruchamiaj doświadczalnych wystąpienie przez naciśnięcie klawiszy CTRL + F5 (Start bez debugowania).
Wdrażanie rozszerzenie sprawdzania poprawności
Aby zainstalować rozszerzenie sprawdzania poprawności na komputerze, na którym Visual Studio Ultimate lub Visual Studio Premium jest zainstalowana, otwórz plik VSIX na komputerze docelowym.Aby zainstalować na komputerze, na którym Team Foundation Build jest zainstalowany, należy ręcznie wyodrębnić zawartość VSIX do folderu rozszerzeń.Aby uzyskać więcej informacji, zobacz Wdrażanie modelowania rozszerzenie warstwy.
Przykładowy kod
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);
}
}
}
}
}
}
}