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


Útmutató: Vizualizáció írása C nyelven#

Fontos

A Visual Studio 2022 17.9-es verziójától kezdve a vizualizációk mostantól az új VisualStudio.Bővíthetőségi modellel futó .NET 6.0+-ban is írhatók. Az új modellel létrehozott bővítményeket a Visual Studio hibakereső vizualizációinak létrehozása című témakörben találja. Ha támogatnia kell a Visual Studio régebbi verzióit, vagy egy kódtár DLL-jének részeként szeretné szállítani az egyéni vizualizációkat, használja a cikkben található információkat, amelyek csak a bővítményfejlesztés régebbi modelljére (VSSDK) vonatkoznak.

Ez az útmutató bemutatja, hogyan írhat egyszerű vizualizációkat C# használatával. Az ebben az útmutatóban létrehozott vizualizáció egy Windows-űrlap használatával jeleníti meg egy sztring tartalmát. Ez az egyszerű sztringábrázoló önmagában nem különösen hasznos, de azokat az alapvető lépéseket mutatja be, amelyeket követve hasznosabb vizualizációkat hozhat létre más adattípusokhoz.

Megjegyzés:

A megjelenő párbeszédpanelek és menüparancsok eltérhetnek a súgóban leírtaktól az aktív beállításoktól vagy kiadástól függően. A beállítások módosításához nyissa meg az Eszközök menüt, és válassza az Importálási és exportálási beállítások lehetőséget. További információ: Alaphelyzetbe állítási beállítások.

A vizualizációs kódot a hibakereső által beolvasott DLL-fájlba kell helyezni. Ezért az első lépés egy Osztálytár-projekt létrehozása a DLL-hez.

Manuális vizualizátor létrehozása

Vizualizáció létrehozásához hajtsa végre az alábbi feladatokat.

Osztálytárprojekt létrehozása

  1. Új osztálykönyvtár projekt létrehozásához válassza a Fájl>Új>Projekt menüpontot.

  2. A nyelvi legördülő menüben válassza a C# lehetőséget.

  3. A keresőmezőbe írja be az osztálytárat. Válassza az Osztálytár (.NET-keretrendszer), majd a Tovább gombot.

  4. A párbeszédpanelen adja meg a nevet MyFirstVisualizer, majd válassza a Létrehozás lehetőséget.

A vizualizációs projekt esetében győződjön meg arról, hogy a .NET-keretrendszer osztálytárát választja, nem pedig a .NET-et. Bár a vizualizációnak .NET-keretrendszernek kell lennie, a hívó alkalmazás lehet .NET.

Az osztálytár létrehozása után hozzá kell adnia egy hivatkozást a Microsoft.VisualStudio.DebuggerVisualizers.DLL fájlhoz, hogy az ott meghatározott osztályokat használhassa. A hivatkozás hozzáadása előtt át kell neveznie néhány osztályt, hogy értelmes neveket használjon.

Nevezze át Class1.cs, és adja hozzá a Microsoft.VisualStudio.DebuggerVisualizerst

  1. A Megoldáskezelőben kattintson a jobb gombbal Class1.cs, és válassza az Átnevezés lehetőséget a helyi menüben.

  2. Módosítsa a nevet Class1.cs valami értelmesre, például DebuggerSide.cs.

    Megjegyzés:

    A Visual Studio automatikusan módosítja az osztálydeklarációt DebuggerSide.cs az új fájlnévnek megfelelően. Ha megjelenik egy üzenet a művelet befejezéséhez, válassza az Igen lehetőséget.

  3. A Megoldáskezelőben kattintson a jobb gombbal a Hivatkozások elemre , és válassza a Helyi menü Hivatkozás hozzáadása parancsát.

  4. A Hivatkozás hozzáadása párbeszédpanel Tallózás lapján válassza a Tallózás lehetőséget, és keresse meg a Microsoft.VisualStudio.DebuggerVisualizers.DLL.

    A DLL <a Visual Studio telepítési könyvtárának Visual Studio Install Directory>\Common7\IDE\PublicAssemblies alkönyvtárában található.

  5. Kattintson az OK gombra.

  6. A DebuggerSide.cs adja hozzá a következőket az using irányelvekhez:

    using Microsoft.VisualStudio.DebuggerVisualizers;
    

Most már készen áll a hibakereső-oldali kód létrehozására. Ez a kód a hibakeresőn belül fut a vizualizálni kívánt információk megjelenítéséhez. Először módosítania kell az objektum deklarációját, hogy konfigurálja az DebuggerSide öröklést az alaposztályból DialogDebuggerVisualizer.

Öröklődés a DialogDebuggerVisualizertől

  1. A(z) DebuggerSide.cs fájlban menjen a következő kódsorra:

    public class DebuggerSide
    
  2. Módosítsa a kódot a következőre:

    public class DebuggerSide : DialogDebuggerVisualizer
    
  3. Adjon hozzá egy üres konstruktort, hogy átadhassa az alaposztály konstruktorának a vizualizáció összetevői közötti kommunikációhoz használt szerializálási házirendet.

    public DebuggerSide() : base(FormatterPolicy.NewtonsoftJson) // or FormatterPolicy.Json
    {
    }
    

    Megjegyzés:

    A .NET 5.0+ hibakereső oldalának speciális szempontjaiban ismertetett biztonsági problémák miatt a Visual Studio 2022 17.11-es verziójától kezdve a megjelenítők nem fogják tudni meghatározni a Legacy formázási szabályzatot.

  4. DialogDebuggerVisualizer egy absztrakt metódussal (Show) rendelkezik, amelyet felül kell bírálnia.

A DialogDebuggerVisualizer.Show metódus felülbírálása

Adja public class DebuggerSidehozzá a következő metódust:

protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
}

A Show metódus tartalmazza azt a kódot, amely ténylegesen létrehozza a vizualizáció párbeszédpanelét vagy más felhasználói felületét, és megjeleníti a vizualizációnak a hibakeresőtől kapott információkat. Hozzá kell adnia a párbeszédpanelt létrehozó kódot, és meg kell jelennie az információknak. Ebben a bemutatóban egy Windows Forms üzenetmezőt használ. Először is, hozzá kell adnia egy hivatkozást és egy using utasítást a System.Windows.Forms-hoz.

System.Windows.Forms hozzáadása

  1. A Megoldáskezelőben kattintson a jobb gombbal a Hivatkozások elemre , és válassza a Helyi menü Hivatkozás hozzáadása parancsát.

  2. A Hivatkozás hozzáadása párbeszédpanel Tallózás lapján válassza a Tallózás lehetőséget, és keresse meg a System.Windows.Forms.DLL.

    A DLL a C:\Windows\Microsoft.NET\Framework\v4.0.30319 fájlban található.

  3. Kattintson az OK gombra.

  4. A DebuggerSide.cs adja hozzá a következőket az using irányelvekhez:

    using System.Windows.Forms;
    

Most hozzáad néhány kódot a vizualizáció felhasználói felületének létrehozásához és megjelenítéséhez. Mivel ez a minta az első vizualizáció, a felhasználói felület egyszerű marad, és használhat egy Üzenetdobozt.

A Vizualizáció kimenetének megjelenítése párbeszédpanelen

  1. A(z) Show metódusban adja hozzá a következő kódsort:

    MessageBox.Show(objectProvider.GetObject().ToString());
    

    Ez a példakód nem tartalmaz hibakezelést. A hibakezelést egy valós vizualizációban vagy bármilyen más típusú alkalmazásban is meg kell adnia.

  2. A Build menüben válassza a Build MyFirstVisualizer lehetőséget. A projektnek sikeresen létre kell épülnie. A folytatás előtt javítsa ki a buildelési hibákat.

A hibakereső oldalkódja befejeződött. Van azonban még egy lépés; az attribútum, amely azt jelzi, hogy a hibakeresési oldal melyik osztálygyűjteményből áll a vizualizáció.

Adja hozzá a hibakeresési oldali kód vizualizációjának típusát

A hibakeresőoldali kódban meg kell adnia a hibakeresés vizualizációjának típusát (az objektumforrást) az DebuggerVisualizerAttribute attribútum használatával. A Target tulajdonság a vizualizáció típusát állítja be.

  1. Adja hozzá a következő attribútumkódot a DebuggerSide.cs-hez a using direktívák után, de a namespace MyFirstVisualizer előtt.

    [assembly:System.Diagnostics.DebuggerVisualizer(
    typeof(MyFirstVisualizer.DebuggerSide),
    typeof(VisualizerObjectSource),
    Target = typeof(System.String),
    Description = "My First Visualizer")]
    
  2. A Build menüben válassza a Build MyFirstVisualizer lehetőséget. A projektnek sikeresen létre kell épülnie. A folytatás előtt javítsa ki a buildelési hibákat.

    Ekkor az első vizualizáció befejeződött. Ha helyesen követte a lépéseket, létrehozhatja a vizualizációt, és telepítheti a Visual Studióba. Mielőtt azonban vizualizációt telepít a Visual Studióba, tesztelje, hogy megfelelően fut-e. Most létrehoz egy teszthámot a vizualizáció futtatásához anélkül, hogy a Visual Studióba telepíti.

Tesztmetódus hozzáadása a vizualizáció megjelenítéséhez

  1. Adja hozzá a következő metódust az osztályhoz public DebuggerSide:

    public static void TestShowVisualizer(object objectToVisualize)
    {
       VisualizerDevelopmentHost visualizerHost = new VisualizerDevelopmentHost(objectToVisualize, typeof(DebuggerSide));
       visualizerHost.ShowVisualizer();
    }
    
  2. A Build menüben válassza a Build MyFirstVisualizer lehetőséget. A projektnek sikeresen létre kell épülnie. A folytatás előtt javítsa ki a buildelési hibákat.

    Ezután létre kell hoznia egy végrehajtható projektet a vizualizációs DLL meghívásához. Az egyszerűség kedvéért használjon konzolalkalmazás-projektet.

Konzolalkalmazás-projekt hozzáadása a megoldáshoz

  1. A Megoldáskezelőben kattintson a jobb gombbal a megoldásra, válassza a Hozzáadás, majd az Új projekt lehetőséget.

  2. Válassza a Fájl>Új>Projekt lehetőséget. A nyelvi legördülő menüben válassza a C# lehetőséget. A keresőmezőbe írja be a konzolalkalmazást, majd válassza a Konzolalkalmazás (.NET-keretrendszer) vagy a . NET-konzolalkalmazás lehetőséget. Válassza a Következőlehetőséget. A megjelenő párbeszédpanelen írja be a nevet MyTestConsole, majd válassza a Létrehozás lehetőséget.

Megjegyzés:

Ha egyszerűen tesztelni szeretné a vizualizációt egy tesztköteg használatával, hozzon létre egy .NET-keretrendszer-konzolalkalmazást. Ehelyett létrehozhat egy .NET-konzolalkalmazást, de a később ismertetett tesztköteg még nem támogatott a .NET-ben, ezért telepítenie kell a vizualizációt a teszteléshez. .NET-konzolalkalmazás esetén először itt hozza létre a konzolalkalmazást, adja hozzá a szükséges DLL-eket és projekthivatkozásokat, majd kövesse a hibakeresési oldali adatobjektum hozzáadása című cikkben leírt lépéseket. Az ASP.NET Core forgatókönyvek esetében lásd a .NET 5.0+ speciális hibakereső-oldali szempontjait.

Most hozzá kell adnia a szükséges hivatkozásokat, hogy a MyTestConsole meghívhassa a MyFirstVisualizert.

A MyTestConsole szükséges hivatkozásainak hozzáadása

  1. A Megoldáskezelőben kattintson a jobb gombbal a MyTestConsole elemre , és válassza a helyi menü Hivatkozás hozzáadása parancsát.

  2. A Hivatkozás hozzáadása párbeszédpanelen nyissa meg a Tallózás lapot, és válassza a Microsoft.VisualStudio.DebuggerVisualizers.DLL.

  3. Kattintson az OK gombra.

  4. Kattintson a jobb gombbal a MyTestConsole elemre , és válassza ismét a Hivatkozás hozzáadása lehetőséget .

  5. A Hivatkozás hozzáadása párbeszédpanelen nyissa meg a Projektek lapot, és válassza a MyFirstVisualizer lehetőséget.

  6. Kattintson az OK gombra.

Most adja hozzá a kódot a tesztköteg befejezéséhez.

Kód hozzáadása a MyTestConsole-hoz

  1. A Megoldáskezelőben kattintson a jobb gombbal Program.cs, és válassza az Átnevezés parancsot a helyi menüben.

  2. Módosítsa a Program.cs nevet valami értelmesebbre, például TestConsole.cs.

    Megjegyzés:

    A Visual Studio automatikusan módosítja az osztálydeklarációt TestConsole.cs az új fájlnévnek megfelelően.

  3. A TestConsole.cs adja hozzá a következő kódot az using irányelvekhez:

    using MyFirstVisualizer;
    
  4. A metódusban Mainadja hozzá a következő kódot:

    String myString = "Hello, World";
    DebuggerSide.TestShowVisualizer(myString);
    

Most már készen áll az első vizualizáció tesztelésére.

A vizualizáció tesztelése

  1. A Megoldáskezelőben kattintson a jobb gombbal a MyTestConsole elemre, és válassza a Beállítás indítási projektként parancsot.

  2. A Hibakeresés menüben válassza a Startlehetőséget.

    Elindul a konzolalkalmazás, és megjelenik a Vizualizáció, és megjeleníti a "Hello, World" sztringet.

Gratulálok. Elkészítette és tesztelte az első vizualizációját!

Ha a vizualizációt a Visual Studióban szeretné használni ahelyett, hogy csak a tesztkötegből szeretné meghívni, telepítenie kell. További információért lásd: Hogyan telepítsünk vizualizálót.

Hibakeresési oldali adatobjektum hozzáadása

Ebben a szakaszban az System.String adatobjektumról egyéni adatobjektumra vált.

  1. A Megoldáskezelőben kattintson a jobb gombbal a megoldásra, válassza a Hozzáadás, majd az Új projekt lehetőséget. A nyelvi legördülő menüben válassza a C# lehetőséget. A keresőmezőbe írja be az osztálytárat, majd válassza az Osztálytár (.NET-keretrendszer) vagy a .NET Standard osztálykönyvtára lehetőséget.

    Megjegyzés:

    Ha .NET-keretrendszer tesztkonzolalkalmazást használ, hozzon létre egy .NET-keretrendszerosztálytár-projektet.

  2. Válassza a Következőlehetőséget. A megjelenő párbeszédpanelen írja be a nevet MyDataObject, majd válassza a Létrehozás lehetőséget.

  3. (csak.NET Standard osztálykódtár) A Megoldáskezelőben kattintson a jobb gombbal a projektre, és válassza a Projektfájl szerkesztése parancsot. Módosítsa a <TargetFramework> értéket netstandard2.0értékre.

    <TargetFramework>netstandard2.0</TargetFramework>
    
  4. MyDataObject A névtérben cserélje le az alapértelmezett kódot a következő kódra.

    [Serializable] 
    public class CustomDataObject
    {
       public CustomDataObject()
       {
          this.MyData = "MyTestData";
       }
       public string MyData { get; set; }
    }
    

    Írásvédett vizualizációk esetében, például ebben a példában, nem szükséges implementálni a VisualizerObjectSource metódusait.

    Ezután frissítse a MyFirstVisualizer projektet az új adatobjektum használatára.

  5. A Megoldáskezelőben a MyFirstVisualizer projekt alatt kattintson a jobb gombbal a Hivatkozások csomópontra , és válassza a Hivatkozás hozzáadása lehetőséget.

  6. A Projektek területen válassza a MyDataObject projektet.

  7. A DebuggerSide.cs attribútumkódjában frissítse a célértéket, és váltsa a System.String következőre MyDataObject.CustomDataObject: .

    Target = typeof(MyDataObject.CustomDataObject),
    
  8. A MyFirstVisualizer projektben cserélje le a metódus kódját Show a következő kódra.

    var data = objectProvider.GetObject() as MyDataObject.CustomDataObject;
    
    // You can replace displayForm with your own custom Form or Control.  
    Form displayForm = new Form();
    displayForm.Text = data.MyData;
    windowService.ShowDialog(displayForm);
    

    Az előző kód az adatobjektum tulajdonságát használja az űrlap címében való megjelenítéshez.

    Ezután frissítse a konzolalkalmazást az egyéni adatobjektum használatára.

  9. A Megoldáskezelőben a MyTestConsole projekt alatt kattintson a jobb gombbal a Hivatkozások vagy függőségek csomópontra, és adjon hozzá egy projekthivatkozást.MyDataObject

  10. A Program.cs cserélje le a metódusban szereplő Main kódot a következő kódra.

    // String myString = "Hello, World";
    CustomDataObject customDataObject = new CustomDataObject();
    
    DebuggerSide.TestShowVisualizer(customDataObject);
    
  11. (.NET-konzolalkalmazás) Zárja be a meghívást TestShowVisualizer egy try-catch utasításba, mivel a tesztkeret nem támogatott.

    try
    {
          DebuggerSide.TestShowVisualizer(customDataObject);
    }
    catch (Exception) {
    }
    

    A konzolalkalmazásnak futtatókörnyezeti hivatkozásra van szüksége a vizualizációra. A hivatkozást úgy tarthatja fenn, hogy az előző kódot megtartja, ahelyett, hogy kikommentelné.

  12. .NET keretrendszer konzolalkalmazáshoz futtathatja a tesztkörnyezetet (nyomja meg az F5 gombot), vagy kövesse a "Vizualizáló telepítése" című útmutatót.

    Ha az alkalmazást a tesztköteg használatával futtatja, az alkalmazás megjeleníti a Windows űrlapot.

  13. .NET-konzolalkalmazások esetén másolja az MyFirstVisualizer.dll és a MyDataObject.dll tartalmakat a How to: Install a Visualizer (Vizualizáció telepítése) című témakörben leírt mappákba.

  14. A vizualizáció telepítése után állítson be egy töréspontot, futtassa a konzolalkalmazást, és mutasson az egérmutatóra customDataObject. Ha minden megfelelően van beállítva, akkor a nagyító ikonja, a VisualizerIcon kell megjelennie.

    Vizualizáció nagyító ikonja.

    Amikor kiválasztja a MyFirstVisualizert a nagyítóból, megjelenik az Űrlap az adatobjektum szövegével a címben.

    Windows-űrlapot megjelenítő vizualizáció