Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Proč používat diagramy závislostí?
Abyste měli jistotu, že kód není v konfliktu s jeho návrhem, ověřte kód pomocí diagramů závislostí v sadě Visual Studio. To vám může pomoct:
Najděte konflikty mezi závislostmi v kódu a závislostmi v diagramu závislostí.
Vyhledejte závislosti, které by mohly být ovlivněny navrhovanými změnami.
Diagram závislostí můžete například upravit tak, aby zobrazoval potenciální změny architektury, a pak kód ověřte, aby se zobrazily ovlivněné závislosti.
Refaktoring nebo migrace kódu do jiného návrhu
Vyhledejte kód nebo závislosti, které vyžadují práci při přesunutí kódu do jiné architektury.
Požadavky
Visual Studio
Pokud chcete vytvořit diagram závislostí pro projekt .NET Core, musíte mít Visual Studio 2019 verze 16.2 nebo novější.
Řešení, které má projekt modelování s diagramem závislostí. Tento diagram závislostí musí být propojený s artefakty v projektech jazyka C# nebo Visual Basic, které chcete ověřit. Viz Vytváření diagramů závislostí z kódu.
Pokud chcete zjistit, které edice sady Visual Studio tuto funkci podporují, přečtěte si téma Podpora edice pro nástroje pro architekturu a modelování.
Kód můžete ověřit ručně z otevřeného diagramu závislostí v sadě Visual Studio nebo z příkazového řádku. Kód můžete také automaticky validovat při spouštění místních buildů nebo buildů v Azure Pipelines.
Důležité
Pokud chcete spouštět ověřování vrstev pomocí Team Foundation Serveru (TFS), musíte na svůj buildový server nainstalovat také stejnou verzi sady Visual Studio.
Živé ověřování závislostí
Ověřování závislostí probíhá v reálném čase a chyby se okamžitě zobrazují v seznamu chyb.
Živé ověřování je podporováno pro C# a Visual Basic.
Pokud chcete povolit úplnou analýzu řešení při použití živého ověřování závislostí, otevřete nastavení možností ze zlatého pruhu, který se zobrazí v seznamu chyb.
- Zlatý pruh můžete trvale zavřít, pokud vás nezajímá zobrazení všech problémů s architekturou ve vašem řešení.
- Pokud nepovolíte úplnou analýzu řešení, analýza se provede jenom u upravovaných souborů.
Při upgradu projektů na povolení živého ověření se v dialogovém okně zobrazí průběh převodu.
Při aktualizaci projektu pro ověření živých závislostí se verze balíčku NuGet upgraduje tak, aby byla stejná pro všechny projekty a je to nejvyšší použitá verze.
Přidání nového projektu ověřování závislostí aktivuje aktualizaci projektu.
Kontrola, jestli položka podporuje ověření
Vrstvy můžete propojit s weby, dokumenty Office, soubory ve formátu prostého textu a soubory v projektech, které jsou sdíleny napříč více aplikacemi, ale proces ověřování je nebude obsahovat. Chyby ověřování se nezobrazí pro odkazy na projekty nebo sestavení, která jsou propojena s samostatnými vrstvami, pokud se mezi těmito vrstvami nezobrazí žádné závislosti. Tyto odkazy se nepovažují za závislosti, pokud kód tyto odkazy nepoužívá.
V diagramu závislostí vyberte jednu nebo více vrstev, klikněte pravým tlačítkem myši na výběr a potom klikněte na zobrazit odkazy.
V Průzkumníku vrstev se podívejte na sloupec Podporuje ověřování . Pokud je hodnota false, položka nepodporuje ověření.
Zahrnout další sestavení a projekty .NET pro ověření
Při přetažení položek do diagramu závislostí se odkazy na odpovídající sestavení nebo projekty .NET automaticky přidají do složky Odkazy na vrstvy v projektu modelování. Tato složka obsahuje odkazy na sestavení a projekty, které jsou analyzovány během ověřování. Můžete zahrnout další sestavení a projekty .NET pro ověření, aniž byste je ručně přetáhli do diagramu závislostí.
V Průzkumníku řešení klikněte pravým tlačítkem myši na projekt modelování nebo na složku Odkazy na vrstvu a potom klikněte na přidat odkaz.
V dialogovém okně Přidat odkaz vyberte sestavení nebo projekty a klepněte na tlačítko OK.
Ruční ověření kódu
Pokud máte otevřený diagram závislostí, který je propojen s položkami řešení, můžete z diagramu spustit příkaz Ověřit pomocí zkratky. Příkazový řádek můžete také použít ke spuštění příkazu msbuild s vlastní vlastností /p:ValidateArchitecture nastavenou na True. Například při provádění změn v kódu pravidelně ověřte vrstvu, abyste mohli včas zachytit konflikty závislostí.
Ověření kódu z otevřeného diagramu závislostí
Klikněte pravým tlačítkem myši na plochu diagramu a potom klikněte na ověřit architekturu.
Poznámka:
Ve výchozím nastavení je vlastnost Akce sestavení v souboru diagramu závislostí (.layerdiagram) nastavena na Ověřit, aby byl diagram zahrnut do procesu ověřování.
Okno Seznam chyb hlásí všechny chyby, ke kterým došlo. Další informace o chybách ověřování najdete v tématu Řešení potíží s ověřováním vrstev.
Pokud chcete zobrazit zdroj jednotlivých chyb, poklikejte na chybu v okně Seznam chyb .
Poznámka:
Visual Studio může místo zdroje chyby zobrazit mapu kódu. K tomu dochází v případě, že kód má závislost na sestavení, které není určeno diagramem závislostí, nebo kód chybí závislost určená diagramem závislostí. Zkontrolujte mapu kódu nebo kód a zjistěte, jestli má závislost existovat. Další informace o mapách kódu najdete v tématu Mapování závislostí napříč vašimi řešeními.
Informace o správě chyb najdete v tématu Řešení chyb ověřování vrstev.
Ověření kódu na příkazovém řádku
Otevřete příkazový řádek sady Visual Studio.
Vyberte jednu z následujících možností:
Pokud chcete ověřit kód proti určitému projektu modelování v řešení, spusťte MSBuild s následující vlastní vlastností.
msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true-or-
Přejděte do složky, která obsahuje soubor projektu modelování (.modelproj) a diagram závislostí, a pak spusťte MSBuild s následující vlastní vlastností:
msbuild /p:ValidateArchitecture=truePokud chcete ověřit kód pro všechny projekty modelování v řešení, spusťte MSBuild s následující vlastní vlastností:
msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true-or-
Přejděte do složky řešení, která musí obsahovat projekt modelování, který obsahuje diagram závislostí, a spusťte MSBuild s následující vlastní vlastností:
msbuild /p:ValidateArchitecture=trueZobrazí se všechny chyby, ke kterým dojde. Další informace o nástroji MSBuild naleznete v tématu MSBuild a MSBuild – úloha.
Další informace o chybách ověřování najdete v tématu Řešení potíží s ověřováním vrstev.
Správa chyb ověřování
Během procesu vývoje můžete chtít během ověřování potlačit některé hlášené konflikty. Můžete například potlačit chyby, které už řešíte nebo které nejsou relevantní pro váš konkrétní scénář. Když potlačíte chybu, je vhodné protokolovat pracovní položku v Team Foundation.
Výstraha
Abyste mohli vytvořit nebo propojit pracovní položku, musíte být již připojeni ke správě zdrojového kódu TFS (SCC). Pokud se pokusíte otevřít připojení k jinému systému TFS SCC, Visual Studio automaticky zavře aktuální řešení. Před pokusem o vytvoření nebo propojení s pracovní položkou se ujistěte, že jste již připojeni k příslušné SCC. V pozdějších verzích sady Visual Studio nejsou příkazy nabídky dostupné, pokud nejste připojení k SCC.
Vytvoření pracovní položky pro chybu ověření
- V okně Seznam chyb klikněte pravým tlačítkem myši na chybu, přejděte na příkaz Vytvořit pracovní položku a potom klikněte na typ pracovní položky, kterou chcete vytvořit.
Pomocí těchto úloh můžete spravovat chyby ověřování v okně Seznam chyb :
| do | Postupujte takto: |
|---|---|
| Potlačení vybraných chyb během ověřování | Klepněte pravým tlačítkem myši na jednu nebo více vybraných chyb, přejděte na příkaz Spravovat chyby ověření a klepněte na tlačítko Potlačit chyby. Potlačené chyby se zobrazí s přeškrtnutím formátování. Při příštím spuštění ověření se tyto chyby nezobrazí. Potlačené chyby se sledují v souboru .suppressions pro odpovídající soubor diagramu závislostí. |
| Přestat potlačovat vybrané chyby | Klikněte pravým tlačítkem myši na vybranou potlačenou chybu nebo chyby, přejděte na příkaz Spravovat chyby ověření a potom klikněte na tlačítko Zastavit potlačení chyb. Vybrané potlačené chyby se zobrazí při příštím spuštění ověření. |
| Obnovit všechny potlačené chyby v okně Seznam chyb | Klikněte pravým tlačítkem na libovolné místo v okně Seznam chyb , přejděte na příkaz Spravovat chyby ověření a potom klepněte na příkaz Zobrazit všechny potlačené chyby. |
| Skrýt všechny potlačené chyby v okně Seznam chyb | Klikněte pravým tlačítkem na libovolné místo v okně Seznam chyb , přejděte na příkaz Spravovat chyby ověření a potom klepněte na tlačítko Skrýt všechny potlačené chyby. |
Automatické ověření kódu
Ověření vrstvy můžete provést při každém spuštění místního sestavení. Pokud váš tým používá Azure DevOps, můžete provést ověření vrstvy pomocí řízeného odevzdání, které můžete nastavit vytvořením vlastní úlohy MSBuild, a použít sestavy sestavení ke shromažďování chyb ověření. Pokud chcete vytvořit zamknutá sestavení vrácení se změnami, přečtěte si článek o vrácení se změnami v TFVC.
Automatické ověření kódu během místního sestavení
Pomocí textového editoru otevřete soubor projektu modelování (.modelproj) a pak zadejte následující vlastnost:
<ValidateArchitecture>true</ValidateArchitecture>
- nebo -
V Průzkumníku řešení klikněte pravým tlačítkem myši na projekt modelování, který obsahuje diagram závislostí nebo diagramy, a potom klepněte na příkaz Vlastnosti.
V okně Vlastnosti nastavte vlastnost Validate Architecture projektu modelování na Hodnotu True.
To zahrnuje projekt modelování v procesu ověřování.
V Průzkumníku řešení klikněte na soubor diagramu závislostí (.layerdiagram), který chcete použít k ověření.
V okně Vlastnosti se ujistěte, že je vlastnost Akce sestavení diagramu nastavená na Ověřit.
To zahrnuje diagram závislostí v procesu ověřování.
Informace o správě chyb v okně Seznam chyb najdete v tématu Řešení chyb ověřování vrstev.
Řešení potíží s ověřováním vrstev
Následující tabulka popisuje problémy s ověřováním vrstev a jejich řešení. Tyto problémy se liší od chyb, které vyplývají z konfliktů mezi kódem a návrhem. Další informace o těchto chybách naleznete v Řešení problémů s ověřením vrstev.
| Issue | Možná příčina | Resolution |
|---|---|---|
| K chybám ověřování nedochází podle očekávání. | Ověřování nefunguje na diagramech závislostí, které jsou zkopírovány z jiných diagramů závislostí v Průzkumníku řešení a které jsou ve stejném projektu modelování. Diagramy závislostí, které se tímto způsobem zkopírují, obsahují stejné odkazy jako původní diagram závislostí. | Přidejte do projektu modelování nový diagram závislostí. Zkopírujte prvky ze zdrojového diagramu závislostí do nového diagramu. |
Řešení chyb ověřování vrstev
Když ověříte kód proti diagramu závislostí, dojde k chybám ověření v případě, že je kód v konfliktu s návrhem. Například následující podmínky můžou způsobit chyby ověřování:
Artefakt se přiřadí nesprávné vrstvě. V tomto případě přesuňte artefakt.
Komponenta, jako je třída, používá jinou třídu způsobem, jenž je v konfliktu s vaší architekturou. V tomto případě refaktorujte kód tak, aby odebral závislost.
Pokud chcete tyto chyby vyřešit, aktualizujte kód, dokud se během ověřování nezobrazí žádné další chyby. Tuto úlohu můžete provést iterativním způsobem.
Následující část popisuje syntaxi, která se v těchto chybách používá, vysvětluje význam těchto chyb a navrhuje, co můžete udělat při jejich řešení nebo správě.
| Syntax | Description |
|---|---|
| ArtifactN(ArtifactTypeN) |
ArtifactN je artefakt, který je přidružený k vrstvě v diagramu závislostí. ArtifactTypeN je typ ArtifactN, například třída nebo metoda, například: MySolution.MyProject.MyClass.MyMethod(Method) |
| NamespaceNameN | Jméno prostoru jmen. |
| LayerNameN | Název vrstvy v diagramu závislostí |
| DependencyType | Typ vztahu závislostí mezi Artifact1 a Artifact2. Například Artifact1 má relaci Volání s Artifact2. |
| Syntaxe chyb | Popis chyby |
|---|---|
| DV0001: Neplatná závislost | Tento problém se hlásí, když element kódu (obor názvů, typ, člen) namapovaný na vrstvu odkazuje na prvek kódu namapovaný na jinou vrstvu, ale mezi těmito vrstvami v diagramu ověřování závislostí obsahujícím tyto vrstvy neexistuje žádná šipka závislostí. Jedná se o porušení omezení závislostí. |
| DV1001: Neplatný název oboru názvů | Tento problém je hlášen u elementu kódu přidruženého k vrstvě, která vlastnost Allowed Namespace Names neobsahuje obor názvů, ve kterém je tento prvek kódu definován. Jedná se o porušení omezení pojmenování. Všimněte si, že syntaxe "Allowed Namespace Names" (Povolené názvy oborů názvů) je seznam oborů názvů oddělený středníky, ve kterých mohou být definovány prvky kódu, které jsou přidruženy k vrstvě. |
| DV1002: Závislost na neodkazovatelném oboru názvů | Tento problém se hlásí u elementu kódu přidruženého k vrstvě a odkazování na jiný prvek kódu definovaný v oboru názvů, který je definován ve vlastnosti Unreferenceable Namespace vrstvy. Jedná se o porušení omezení pojmenování. Všimněte si, že vlastnost Unreferenceable Namespaces je definována jako seznam oborů názvů oddělených středníkem, na které by se nemělo odkazovat v elementech kódu přidružených k této vrstvě. |
| DV1003: Nepovolený název jmenného prostoru | Tento problém je hlášen u elementu kódu přidruženého k vrstvě, která vlastnost Disallowed Namespace Names obsahuje obor názvů, ve kterém je tento prvek kódu definován. Jedná se o porušení omezení pojmenování. Všimněte si, že vlastnost "Nepovolit název oboru názvů" je definována jako seznam oborů názvů oddělených středníkem, ve kterých by neměly být definovány prvky kódu přidružené k této vrstvě. |
| DV2001: Stav diagramu vrstev | Tento problém se hlásí v projektu, který neobsahuje soubor diagramu závislostí, ale odkazuje na analyzátory ověření závislostí. Pokud se nepoužilo ověřování závislostí, můžete odebrat Microsoft.DependencyValidation.Analyzers přímo z Průzkumníka řešení nebo potlačit toto upozornění. Pokud chcete přidat diagram závislostí, podívejte se na vytváření diagramů závislostí z kódu. |
| DV2002: Základ nemapovaných typů | Tento problém se hlásí, když není prvek kódu namapován na žádnou vrstvu. |
| DV3001: Chybějící odkaz | Vrstva LayerName odkazuje na Artefakt, který nelze najít. Chybí odkaz na sestavení? |
| DV9001: Analýza architektury zjistila vnitřní chyby | Výsledky nemusí být dokončené. Další informace najdete v podrobném protokolu událostí sestavení nebo výstupním okně. |