Megosztás a következőn keresztül:


Kód érvényesítése függőségi diagramokkal

Miért érdemes függőségi diagramokat használni?

Annak érdekében, hogy a kód ne ütközzen a kialakításával, ellenőrizze a kódot függőségi diagramokkal a Visual Studióban. Ez segíthet Önnek:

  • Ütközések keresése a kódban lévő függőségek és a függőségi diagram függőségei között.

  • Keresse meg azokat a függőségeket, amelyeket érinthetnek a javasolt módosítások.

    Szerkesztheti például a függőségi diagramot a lehetséges architektúraváltozások megjelenítéséhez, majd érvényesítheti a kódot az érintett függőségek megtekintéséhez.

  • Kód újrabontása vagy áttelepítése másik kialakításba.

    Olyan kódot vagy függőségeket kereshet, amelyekhez munka szükséges, amikor a kódot egy másik architektúrába helyezi át.

Követelmények

  • Visual Studio

    .NET Core-projekthez tartozó függőségi diagram létrehozásához a Visual Studio 2019 16.2-es vagy újabb verziójával kell rendelkeznie.

  • Olyan megoldás, amely függőségi diagrammal rendelkező modellezési projekttel rendelkezik. Ezt a függőségi diagramot c# vagy Visual Basic projektekben érvényesíteni kívánt összetevőkhöz kell csatolni. Lásd: Függőségi diagramok létrehozása a kódból.

Annak megtekintéséhez, hogy a Visual Studio mely kiadásai támogatják ezt a funkciót, tekintse meg az architektúra- és modellezési eszközök kiadásának támogatását.

A kódot manuálisan is érvényesítheti a Visual Studióban megnyitott függőségi diagramból vagy parancssorból. A kód automatikusan érvényesíthető helyi buildek vagy Azure Pipelines-buildek futtatásakor is.

Fontos

Ha rétegérvényesítést szeretne futtatni a Team Foundation Server (TFS) használatával, akkor a Visual Studio ugyanazon verzióját is telepítenie kell a buildkiszolgálóra.

Élő függőség érvényesítése

A függőség érvényesítése valós időben történik, és a hibák azonnal megjelennek a hibalistában.

  • Az élő ellenőrzés a C# és a Visual Basic esetében támogatott.

  • Ha élő függőségek érvényesítésekor teljes körű megoldáselemzést szeretne engedélyezni, nyissa meg a hibalistában megjelenő aranysáv beállítási beállításait.

    • Ha nem szeretné látni a megoldás összes architektúra problémáját, véglegesen eltávolíthatja az aranysávot.
    • Ha nem engedélyezi a teljes megoldáselemzést, az elemzés csak a szerkesztett fájlok esetében történik.
  • Amikor a projekteket az élő érvényesítés engedélyezésére frissíti, egy párbeszédpanelen látható az átalakítás előrehaladása.

  • Az élő függőség ellenőrzésére szolgáló projekt frissítésekor a NuGet-csomag verziója az összes projekt esetében ugyanaz lesz, és a legmagasabb használatban lévő verzió.

  • Új függőség-érvényesítési projekt hozzáadása projektfrissítést indít el.

Annak ellenőrzése, hogy egy elem támogatja-e az érvényesítést

A több alkalmazás között megosztott projektekben lévő webhelyekhez, Office-dokumentumokhoz, egyszerű szöveges fájlokhoz és fájlokhoz csatolhat rétegeket, de az ellenőrzési folyamat nem tartalmazza őket. Az érvényesítési hibák nem jelennek meg olyan projektekre vagy szerelvényekre mutató hivatkozások esetében, amelyek külön rétegekhez vannak csatolva, ha ezek között a rétegek között nem jelennek meg függőségek. Ezek a hivatkozások csak akkor minősülnek függőségnek, ha a kód ezeket a hivatkozásokat használja.

  1. A függőségi diagramon jelöljön ki egy vagy több réteget, kattintson a jobb gombbal a kijelölésre, majd kattintson a Hivatkozások megtekintése parancsra.

  2. A Rétegkezelőben tekintse meg az Ellenőrzés támogatása oszlopot. Ha az érték hamis, az elem nem támogatja az érvényesítést.

Egyéb .NET-szerelvények és projektek belefoglalása az ellenőrzéshez

Amikor elemeket húz a függőségi diagramra, a rendszer automatikusan hozzáadja a megfelelő .NET-szerelvényekre vagy projektekre mutató hivatkozásokat a modellezési projekt Réteghivatkozások mappájába. Ez a mappa az ellenőrzés során elemzett szerelvényekre és projektekre mutató hivatkozásokat tartalmaz. Az ellenőrzéshez más .NET-szerelvényeket és projekteket is hozzáadhat anélkül, hogy manuálisan húzta őket a függőségi diagramra.

  1. A Megoldáskezelőben kattintson a jobb gombbal a modellezési projektre vagy a Réteghivatkozások mappára, majd kattintson a Hivatkozás hozzáadása parancsra.

  2. A Hivatkozás hozzáadása párbeszédpanelen jelölje ki a szerelvényeket vagy projekteket, majd kattintson az OK gombra.

Kód manuális ellenőrzése

Ha van egy nyitott függőségi diagramja, amely a megoldáselemekhez van csatolva, a diagramon futtathatja a Parancsikon érvényesítése parancsot. A parancssor használatával futtathatja az msbuild parancsot a /p:ValidateArchitecture egyéni tulajdonság Igaz értékre állításával. Ha például módosítja a kódot, rendszeresen végezzen rétegellenőrzést, hogy korai időben észlelhesse a függőségi ütközéseket.

Kód ellenőrzése nyitott függőségi diagramból

  1. Kattintson a jobb gombbal a diagram felületére, majd kattintson az Architektúra ellenőrzése parancsra.

    Megjegyzés:

    Alapértelmezés szerint a függőségi diagram (.layerdiagram) fájl Build Action tulajdonsága érvényesítésre van állítva, hogy a diagram szerepeljen az ellenőrzési folyamatban.

    A Hibalista ablak minden előforduló hibát jelez. Az érvényesítési hibákról további információt a rétegérvényesítési problémák elhárítása című témakörben talál.

  2. Az egyes hibák forrásának megtekintéséhez kattintson duplán a Hibalista ablakban lévő hibára.

    Megjegyzés:

    Előfordulhat, hogy a Visual Studio a hiba forrása helyett egy kódleképezést jelenít meg. Ez akkor fordul elő, ha a kód függőséget tartalmaz a függőségi diagram által nem megadott szerelvényen, vagy a kódból hiányzik egy függőség, amelyet a függőségi diagram határoz meg. Tekintse át a kódleképezést vagy a kódot annak megállapításához, hogy léteznie kell-e a függőségnek. A kódtérképekről további információt a megoldások függőségeinek leképezése című témakörben talál.

  3. A hibák kezelésével kapcsolatban lásd: Rétegérvényesítési hibák elhárítása.

Kód érvényesítése a parancssorban

  1. Nyissa meg a Visual Studio parancssorát.

  2. A következők közül választhat:

    • Ha egy adott modellezési projekten szeretné érvényesíteni a kódot a megoldásban, futtassa az MSBuild parancsot az alábbi egyéni tulajdonsággal.

      msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true
      

      -vagy-

      Keresse meg a modellezési projektfájlt (.modelproj) tartalmazó mappát és a függőségi diagramot, majd futtassa az MSBuild parancsot a következő egyéni tulajdonsággal:

      msbuild /p:ValidateArchitecture=true
      
    • A megoldás összes modellezési projektjének kódjának ellenőrzéséhez futtassa az MSBuild parancsot a következő egyéni tulajdonsággal:

      msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true
      

      -vagy-

      Keresse meg a megoldásmappát, amelynek tartalmaznia kell egy függőségi diagramot tartalmazó modellezési projektet, majd futtassa az MSBuild parancsot a következő egyéni tulajdonsággal:

      msbuild /p:ValidateArchitecture=true
      

      Az esetlegesen előforduló hibák megjelennek a listában. További információ az MSBuildről: MSBuild és MSBuild Task.

    Az érvényesítési hibákról további információt a rétegérvényesítési problémák elhárítása című témakörben talál.

Érvényesítési hibák kezelése

A fejlesztési folyamat során előfordulhat, hogy el szeretné rejteni a jelentett ütközések egy részét a validálás során. Előfordulhat például, hogy el szeretné tiltani azokat a hibákat, amelyeket már kezel, vagy amelyek nem relevánsak az adott forgatókönyvhöz. Ha figyelmen kívül hagy egy hibát, célszerű rögzíteni egy munkaelemet a Team Foundation-ben.

Figyelmeztetés

A munkaelem létrehozásához vagy csatolásához már csatlakoznia kell a TFS-forráskód-vezérlőhöz (SCC). Ha egy másik TFS SCC-hez próbál kapcsolatot nyitni, a Visual Studio automatikusan bezárja az aktuális megoldást. A munkaelem létrehozása vagy csatolása előtt győződjön meg arról, hogy már csatlakozott a megfelelő SCC-hez. A Visual Studio későbbi kiadásaiban a menüparancsok nem érhetők el, ha nem csatlakozik SCC-hez.

Érvényesítési hiba esetén feladat létrehozása

  • A Hibalista ablakban kattintson a jobb gombbal a hibára, mutasson a Munkaelem létrehozása pontra, majd kattintson a létrehozni kívánt munkaelem típusára.

Ezekkel a feladatokkal kezelheti az érvényesítési hibákat a Hibalista ablakban:

-tól-ig Kövesse az alábbi lépéseket
A kijelölt hibák letiltása az ellenőrzés során Kattintson a kijelölt hibákra jobb gombbal, mutasson a Hibák kezelése lehetőségre, majd kattintson a Hibák elnyomása parancsra.

Az elfojtott hibák áthúzott formázással jelennek meg. Amikor legközelebb futtatja az ellenőrzést, ezek a hibák nem jelennek meg.

Az elnyomott hibák a megfelelő függőségi diagramfájl .suppressions fájljában vannak nyomon követve.
A kijelölt hibák elnyomásának leállítása Kattintson a jobb gombbal a kijelölt letiltott hibára vagy hibákra, mutasson az Érvényesítési hibák kezelése menüpont fölé, majd kattintson a Hibák elnyomásának leállítása.

A kijelölt letiltott hibák az ellenőrzés következő futtatásakor jelennek meg.
Az összes elnyomott hiba helyreállítása a Hibalista ablakban Kattintson a jobb gombbal a Hibalista ablak tetszőleges pontjára, mutasson az Érvényesítési hibák kezelése pontra, majd kattintson az Összes letiltott hiba megjelenítése parancsra.
Az összes letiltott hiba elrejtése a Hibalista ablakban Jobb gombbal kattintson a Hibalista ablak tetszőleges pontjára, válassza az Érvényesítési hibák kezelése lehetőséget, majd kattintson az Elfojtott hibák elrejtése parancsra.

Kód automatikus ellenőrzése

A rétegellenőrzést minden alkalommal elvégezheti, amikor helyi buildet futtat. Ha a csapat az Azure DevOpsot használja, a rétegellenőrzést kapuval ellátott bejelentkezésekkel végezheti el, amelyet egyéni MSBuild-feladat létrehozásával adhat meg, és buildjelentések használatával gyűjtheti az érvényesítési hibákat. Kapus bejelentkezési build létrehozásához lásd a TFVC kapus bejelentkezést.

Kód automatikus ellenőrzése helyi build során

A modellezési projektfájl (.modelproj) megnyitásához használjon szövegszerkesztőt, majd adja meg a következő tulajdonságot:

<ValidateArchitecture>true</ValidateArchitecture>

-vagy-

  1. A Megoldáskezelőben kattintson a jobb gombbal a függőségi diagramot vagy diagramokat tartalmazó modellezési projektre, majd kattintson a Tulajdonságok parancsra.

  2. A Tulajdonságok ablakban állítsa a modellezési projekt Architektúra érvényesítése tulajdonságát Igaz értékre.

    Ez magában foglalja a modellezési projektet az ellenőrzési folyamat során.

  3. A Megoldáskezelőben kattintson az érvényesítéshez használni kívánt függőségi diagramfájlra (.layerdiagram).

  4. A Tulajdonságok ablakban győződjön meg arról, hogy a diagram Build Action tulajdonsága érvényesítési értékre van állítva.

    Ez magában foglalja a függőségi diagramot az érvényesítési folyamat során.

A hibalista ablak hibáinak kezeléséhez lásd: Rétegérvényesítési hibák elhárítása.

Rétegérvényesítési problémák elhárítása

Az alábbi táblázat a rétegérvényesítési problémákat és azok megoldását ismerteti. Ezek a problémák eltérnek a kód és a kialakítás közötti ütközésekből eredő hibáktól. További információ ezekről a hibákról: Rétegérvényesítési problémák elhárítása.

Issue Lehetséges ok Resolution
Az érvényesítési hibák nem a várt módon fordulnak elő. Az érvényesítés nem működik olyan függőségi diagramokon, amelyeket a Megoldáskezelő más függőségi diagramjaiból másolnak, és amelyek ugyanabban a modellezési projektben találhatók. az ily módon másolt függőségi diagramok ugyanazokat a hivatkozásokat tartalmazzák, mint az eredeti függőségi diagram. Adjon hozzá egy új függőségi diagramot a modellezési projekthez.

Másolja az elemeket a forrásfüggőség-diagramról az új diagramra.

Rétegérvényesítési hibák elhárítása

Ha egy függőségi diagramon ellenőrzi a kódot, érvényesítési hibák lépnek fel, ha a kód ütközik a tervvel. A következő feltételek például érvényesítési hibákat okozhatnak:

  • Egy összetevő nem a megfelelő réteghez van rendelve. Ebben az esetben helyezze át az artefaktumot.

  • Egy összetevő, például egy osztály, egy másik osztályt használ az architektúrával ütköző módon. Ebben az esetben újra kell létrehozni a kódot a függőség eltávolításához.

A hibák megoldásához frissítse a kódot, amíg az ellenőrzés során nem jelennek meg további hibák. Ezt a feladatot iteratív módon hajthatja végre.

Az alábbi szakasz ismerteti a hibákban használt szintaxist, ismerteti ezeknek a hibáknak a jelentését, és javasolja, hogy mit tehet a hibák elhárításához vagy kezeléséhez.

Syntax Leírás
ArtifactN(ArtifactTypeN) Az ArtifactN egy összetevő, amely a függőségi diagram egy rétegéhez van társítva.

Az ArtifactTypeN az ArtifactN típusa, például osztály vagy metódus, például:

MySolution.MyProject.MyClass.MyMethod(Metódus)
NamespaceNameN Egy névtér neve.
LayerNameN A függőségi diagram egy rétegének neve.
DependencyType Az Artifact1 és az Artifact2 közötti függőségi kapcsolat típusa. Az Artifact1 például híváskapcsolattal rendelkezik az Artifact2-vel.
Hibaszintaxis Hiba leírása
DV0001: Érvénytelen függőség Ez a probléma akkor jelentkezik, ha egy rétegre leképezett kódelem (névtér, típus, tag) egy másik rétegre leképezett kódelemre hivatkozik, de a rétegeket tartalmazó függőség-érvényesítési diagramban nincs függőségi nyíl a rétegek között. Ez egy függőségi kényszer megsértése.
DV1001: Érvénytelen névtérnév Ez a probléma egy olyan réteghez társított kódelemen jelentkezik, amelynél az "Engedélyezett névtérnevek" tulajdonság nem tartalmazza azt a névteret, amelyben ez a kódelem definiálva van. Ez az elnevezési kényszer megsértése. Vegye figyelembe, hogy az "Engedélyezett névtérnevek" szintaxisa azoknak a névtereknek a kettőspont-listája, amelyekben a réteghez társított kódelemek definiálhatók.
DV1002: Függőség a hivatkozhatatlan névtérre Ez a probléma egy réteghez társított kódelemen jelentkezik, és egy másik, a réteg "Nem meghatározható névtér" tulajdonságában definiált névtérben definiált kódelemre hivatkozik. Ez az elnevezési kényszer megsértése. Vegye figyelembe, hogy a "Nem meghatározható névterek" tulajdonság a névterek pontosvesszővel elválasztott listájaként van definiálva, amelyekre nem lehet hivatkozni a réteghez társított kódelemekben.
DV1003: Nem engedélyezett névtér neve Ez a probléma egy olyan réteghez társított kódelemen jelentkezik, amelyben a "Tiltott névtérnevek" tulajdonság tartalmazza azt a névteret, amelyben ez a kódelem definiálva van. Ez az elnevezési kényszer megsértése. Vegye figyelembe, hogy a "Nem engedélyezett névtérnév" tulajdonság olyan névterek pontosvesszővel elválasztott listájaként van definiálva, amelyekben a réteghez társított kódelemek nem definiálhatók.
DV2001: Rétegdiagram jelenléte Ez a probléma olyan projekten jelentkezik, amely nem tartalmaz függőségi diagramfájlt, hanem a függőség-érvényesítési elemzőkre hivatkozik. Ha a függőség-ellenőrzés nem lett használva, eltávolíthatja a "Microsoft.DependencyValidation.Analyzers" elemet közvetlenül a Megoldáskezelőből, vagy letilthatja ezt a figyelmeztetést. Függőségi diagram hozzáadásához lásd: Függőségi diagramok létrehozása a kódból.
DV2002: Nem megfeleltetett típusok alapja Ez a probléma akkor jelentkezik, ha egy kódelem egyik rétegre sem van leképezve.
DV3001: Hiányzó hivatkozás A(z) 'Rétegnév' réteg az 'Artefaktum' címre hivatkozik, amely nem található. Hiányzik egy szerelvényhivatkozás?
DV9001: Az architektúraelemzés belső hibákat talált Előfordulhat, hogy az eredmények nem teljesek. További információkért tekintse meg a buildesemény részletes naplóját vagy kimeneti ablakát.