Sdílet prostřednictvím


Návod: Zápis vizualizéru v jazyce C#

Důležité

Počínaje verzí 17.9 sady Visual Studio 2022 je nyní možné psát vizualizéry v .NET 6.0 nebo novějším, které běží mimo proces díky novému modelu VisualStudio.Extensibility. Informace o rozšířeních vytvořených pomocí nového modelu najdete v dokumentaci k vizualizérům ladicího programu sady Visual Studio . Pokud potřebujete podporovat starší verze sady Visual Studio nebo chcete odeslat vlastní vizualizéry jako součást knihovny DLL, použijte informace v tomto článku, které platí jenom pro starší model vývoje rozšíření (VSSDK).

Tento návod ukazuje, jak pomocí jazyka C# napsat jednoduchý vizualizér. Vizualizér, který vytvoříte v tomto názorném postupu, zobrazí obsah řetězce pomocí formuláře Windows. Tento jednoduchý vizualizér řetězců není zvlášť užitečný, ale zobrazuje základní kroky, které je třeba provést, abyste vytvořili užitečnější vizualizéry pro jiné datové typy.

Poznámka:

Zobrazená dialogová okna a příkazy nabídek se můžou lišit od těch, které jsou popsány v nápovědě, v závislosti na vašem aktivním nastavení nebo verzi. Pokud chcete změnit nastavení, přejděte do nabídky Nástroje a zvolte Nastavení importu a exportu. Další informace naleznete v tématu resetování nastavení.

Kód vizualizéru musí být umístěn v souboru DLL, který ladicí program čte. Prvním krokem je proto vytvoření projektu knihovny tříd pro knihovnu DLL.

Ruční vytvoření vizualizéru

Dokončete následující úlohy a vytvořte vizualizér.

Vytvořte projekt knihovny tříd

  1. Pokud chcete vytvořit nový projekt knihovny tříd, vyberte Soubor>nový>projekt.

  2. V rozevíracím seznamu jazyka vyberte C#.

  3. Do vyhledávacího pole zadejte knihovnu tříd. Vyberte knihovnu tříd (.NET Framework) a pak vyberte Další.

  4. V dialogovém okně zadejte název MyFirstVisualizera pak vyberte Vytvořit.

V případě projektu vizualizéru se ujistěte, že jste vybrali knihovnu tříd rozhraní .NET Framework, a ne .NET. I když vizualizér musí být .NET Framework, volající aplikace může být .NET.

Po vytvoření knihovny tříd musíte přidat odkaz na Microsoft.VisualStudio.DebuggerVisualizers.DLL soubor, abyste mohli použít třídy definované tam. Než přidáte odkaz, musíte některé třídy přejmenovat, aby používaly smysluplné názvy.

Přejmenování Class1.cs a přidání microsoft.VisualStudio.DebuggerVisualizers

  1. V Průzkumníku řešení klikněte pravým tlačítkem na Class1.cs a v místní nabídce vyberte Přejmenovat .

  2. Změňte název z Class1.cs na něco smysluplného, například DebuggerSide.cs.

    Poznámka:

    Visual Studio automaticky změní deklaraci třídy v DebuggerSide.cs tak, aby odpovídala novému názvu souboru. Pokud se zobrazí výzva k dokončení akce, vyberte Ano.

  3. V Průzkumníku řešení klikněte pravým tlačítkem myši na Odkazy a v místní nabídce zvolte Přidat odkaz .

  4. V dialogovém okně Přidat odkaz na kartě Procházet vyberte Procházet a vyhledejte Microsoft.VisualStudio.DebuggerVisualizers.DLL.

    Knihovnu DLL najdete v <instalačním adresáři>Visual Studio\Common7\IDE\PublicAssemblies podadresáři aplikace Visual Studio.

  5. Vyberte OK.

  6. V DebuggerSide.cs přidejte následující direktivy using :

    using Microsoft.VisualStudio.DebuggerVisualizers;
    

Teď jste připraveni vytvořit kód pro ladicí program. Tento kód se spustí v ladicím programu a zobrazí informace, které chcete vizualizovat. Nejprve musíte změnit deklaraci objektu DebuggerSide ke konfiguraci dědičnosti ze základní třídy DialogDebuggerVisualizer.

Dědit z DialogDebuggerVisualizer

  1. V DebuggerSide.cs přejděte na následující řádek kódu:

    public class DebuggerSide
    
  2. Změňte kód na:

    public class DebuggerSide : DialogDebuggerVisualizer
    
  3. Přidejte prázdný konstruktor, abyste mohli předat konstruktoru základní třídy zásadu serializace, která bude použita ke komunikaci mezi komponentami vizualizéru.

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

    Poznámka:

    Vzhledem k problémům se zabezpečením popsaným v aspektech speciálního ladicího programu pro .NET 5.0+ počínaje sadou Visual Studio 2022 verze 17.11 nebudou vizualizéry moct určit Legacy zásady formátovače.

  4. DialogDebuggerVisualizer má jednu abstraktní metodu (Show), kterou je nutné přepsat.

Přepište metodu DialogDebuggerVisualizer.Show

Do public class DebuggerSidepole přidejte následující metodu:

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

Metoda Show obsahuje kód, který ve skutečnosti vytváří vizualizační dialogové okno nebo jiné prvky uživatelského rozhraní a zobrazuje informace, které byly předány do vizualizéru z ladicího programu. Musíte přidat kód, který vytvoří dialogové okno a zobrazí informace. V tomto názorném postupu použijete okno se zprávou Windows Forms. Nejprve musíte přidat odkaz a using direktivu pro System.Windows.Forms.

Přidejte System.Windows.Forms

  1. V Průzkumníku řešení klikněte pravým tlačítkem myši na Odkazy a v místní nabídce zvolte Přidat odkaz .

  2. V dialogovém okně Přidat odkaz na kartě Procházet vyberte Procházet a vyhledejte System.Windows.Forms.DLL.

    Knihovnu DLL najdete v C:\Windows\Microsoft.NET\Framework\v4.0.30319.

  3. Vyberte OK.

  4. V DebuggerSide.cs přidejte následující direktivy using :

    using System.Windows.Forms;
    

Teď přidáte nějaký kód pro vytvoření a zobrazení uživatelského rozhraní vizualizéru. Vzhledem k tomu, že tato ukázka je vaším prvním vizualizérem, můžete uživatelské rozhraní zachovat jednoduché a používat okno se zprávami.

Zobrazení výstupu vizualizéru v dialogovém okně

  1. Show Do metody přidejte následující řádek kódu:

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

    Tento ukázkový kód nezahrnuje zpracování chyb. Zpracování chyb byste měli zahrnout do skutečného vizualizéru nebo jakéhokoli jiného typu aplikace.

  2. V nabídce Sestavení zvolte Sestavit MyFirstVisualizer. Projekt by se měl úspěšně sestavit. Před pokračováním opravte všechny chyby sestavení.

Kód na straně ladicího programu je teď dokončený. Existuje však ještě jeden krok; atribut, který určuje, jakou kolekci tříd používá vizualizátor na straně ladění.

Přidání typu pro vizualizaci kódu na straně ladění

V kódu debuggeru určíte typ (zdroj objektu), který chcete vizualizovat pro ladicí program pomocí atributu DebuggerVisualizerAttribute. Vlastnost Target nastaví typ pro vizualizaci.

  1. Přidejte následující kód atributu do DebuggerSide.cs za direktivy using , ale před namespace MyFirstVisualizer:

    [assembly:System.Diagnostics.DebuggerVisualizer(
    typeof(MyFirstVisualizer.DebuggerSide),
    typeof(VisualizerObjectSource),
    Target = typeof(System.String),
    Description = "My First Visualizer")]
    
  2. V nabídce Sestavení zvolte Sestavit MyFirstVisualizer. Projekt by se měl úspěšně sestavit. Před pokračováním opravte všechny chyby sestavení.

    V tuto chvíli je dokončen první vizualizér. Pokud jste postupovali správně, můžete vizualizér sestavit a nainstalovat ho do sady Visual Studio. Před instalací vizualizéru do sady Visual Studio byste ho ale měli otestovat, abyste měli jistotu, že běží správně. Teď vytvoříte testovací sadu pro spuštění vizualizéru bez jeho instalace do sady Visual Studio.

Přidání testovací metody pro zobrazení vizualizéru

  1. Do třídy public DebuggerSidepřidejte následující metodu:

    public static void TestShowVisualizer(object objectToVisualize)
    {
       VisualizerDevelopmentHost visualizerHost = new VisualizerDevelopmentHost(objectToVisualize, typeof(DebuggerSide));
       visualizerHost.ShowVisualizer();
    }
    
  2. V nabídce Sestavení zvolte Sestavit MyFirstVisualizer. Projekt by se měl úspěšně sestavit. Před pokračováním opravte všechny chyby sestavení.

    Dále musíte vytvořit spustitelný projekt pro volání knihovny DLL vizualizéru. Pro zjednodušení použijte projekt konzolové aplikace.

Přidání projektu konzolové aplikace do řešení

  1. V Průzkumníku řešení klikněte pravým tlačítkem na řešení, zvolte Přidat a pak vyberte Nový projekt.

  2. Zvolte Soubor>nový>projekt. V rozevíracím seznamu jazyka zvolte C#. Do vyhledávacího pole zadejte konzolovou aplikaci a pak zvolte konzolovou aplikaci (.NET Framework) nebo konzolovou aplikaci pro .NET. Vyberte Další. V dialogovém okně, které se zobrazí, zadejte název MyTestConsolea pak vyberte Vytvořit.

Poznámka:

Pokud chcete vizualizér snadno otestovat pomocí testovacího svazku, vytvořte konzolovou aplikaci rozhraní .NET Framework. Místo toho můžete vytvořit konzolovou aplikaci .NET, ale testovací sada popsaná později není pro .NET podporovaná, takže k jeho otestování budete muset nainstalovat vizualizér. Pro konzolovou aplikaci .NET nejprve vytvořte konzolovou aplikaci, přidejte požadované odkazy na knihovny DLL a projekty a pak postupujte podle kroků popsaných v Sekci Přidání datového objektu na straně ladicího programu. Informace o scénářích ASP.NET Core najdete v tématu Zvláštní aspekty na straně ladicího programu pro .NET 5.0 nebo novější.

Teď musíte přidat potřebné odkazy, aby MyTestConsole mohl volat MyFirstVisualizer.

Přidání nezbytných odkazů na MyTestConsole

  1. V Průzkumníku řešení klikněte pravým tlačítkem myši na MyTestConsole a v místní nabídce zvolte Přidat referenci.

  2. V dialogovém okně Přidat odkaz otevřete kartu Procházet a vyberte Microsoft.VisualStudio.DebuggerVisualizers.DLL.

  3. Vyberte OK.

  4. Klikněte pravým tlačítkem myši na MyTestConsole a znovu zvolte Přidat odkaz .

  5. V dialogovém okně Přidat odkaz otevřete kartu Projekty a vyberte MyFirstVisualizer.

  6. Vyberte OK.

Nyní přidáte kód pro dokončení testovacího prostředí.

Přidání kódu do MyTestConsole

  1. V Průzkumníku řešení klikněte pravým tlačítkem na Program.cs a v místní nabídce zvolte Přejmenovat .

  2. Upravte název z Program.cs na něco smysluplnějšího, například TestConsole.cs.

    Poznámka:

    Visual Studio automaticky změní deklaraci třídy v TestConsole.cs tak, aby odpovídala názvu nového souboru.

  3. Do TestConsole.cs přidejte do using direktiv následující kód:

    using MyFirstVisualizer;
    
  4. V metodě Mainpřidejte následující kód:

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

Teď jste připraveni otestovat svůj první vizualizér.

Testování vizualizéru

  1. V Průzkumníku řešení klikněte pravým tlačítkem na MyTestConsole a v místní nabídce zvolte Nastavit jako spouštěný projekt .

  2. V nabídce Ladění zvolte Start.

    Konzolová aplikace se spustí, zobrazí se vizualizér a ukáže řetězec "Hello, World".

Blahopřejeme. Vytvořili jste a otestovali svůj první vizualizér!

Pokud chcete použít vizualizér v sadě Visual Studio, musíte ho nainstalovat místo pouhého volání z testovacího prostředí. Další informace naleznete v tématu Postupy: Instalace vizualizéru.

Přidejte datový objekt na straně laděného procesu

V této části přepnete z datového objektu System.String na vlastní datový objekt.

  1. V Průzkumníku řešení klikněte pravým tlačítkem na řešení, zvolte Přidat a pak vyberte Nový projekt. V rozevíracím seznamu jazyka zvolte C#. Do vyhledávacího pole zadejte knihovnu tříd a pak zvolte knihovnu tříd (.NET Framework) nebo knihovnu tříd pro .NET Standard.

    Poznámka:

    Pokud používáte testovací konzolovou aplikaci rozhraní .NET Framework, ujistěte se, že jste vytvořili projekt knihovny tříd rozhraní .NET Framework.

  2. Vyberte Další. V dialogovém okně, které se zobrazí, zadejte název MyDataObjecta pak vyberte Vytvořit.

  3. (Pouze knihovna tříd .NET Standard) V Průzkumníku řešení klikněte pravým tlačítkem na projekt a zvolte Upravit soubor projektu. Změňte hodnotu <TargetFramework> na netstandard2.0.

    <TargetFramework>netstandard2.0</TargetFramework>
    
  4. MyDataObject Uvnitř oboru názvů nahraďte výchozí kód následujícím kódem.

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

    Pro vizualizér jen pro čtení, například v tomto příkladu, není nutné implementovat metody VisualizerObjectSource.

    Dále aktualizujte projekt MyFirstVisualizer tak, aby používal nový datový objekt.

  5. V Průzkumníku řešení v projektu MyFirstVisualizer klikněte pravým tlačítkem myši na uzel Odkazy a zvolte Přidat odkaz.

  6. V části Projekty vyberte projekt MyDataObject .

  7. V kódu atributu DebuggerSide.cs aktualizujte cílovou hodnotu a změňte System.String na MyDataObject.CustomDataObject.

    Target = typeof(MyDataObject.CustomDataObject),
    
  8. V projektu MyFirstVisualizer nahraďte kód metody Show následujícím kódem.

    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);
    

    Předchozí kód používá vlastnost datového objektu k zobrazení v názvu formuláře.

    Dále aktualizujte konzolovou aplikaci tak, aby používala vlastní datový objekt.

  9. V Průzkumníku řešení v projektu MyTestConsole klikněte pravým tlačítkem myši na uzel Odkazy nebo Závislosti a přidejte odkaz na MyDataObjectprojekt .

  10. V Program.cs nahraďte kód v Main metodě následujícím kódem.

    // String myString = "Hello, World";
    CustomDataObject customDataObject = new CustomDataObject();
    
    DebuggerSide.TestShowVisualizer(customDataObject);
    
  11. (konzolová aplikace .NET) Uzavřete volání do TestShowVisualizer příkazu try-catch, protože testovací sada není podporována.

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

    Konzolová aplikace potřebuje odkaz na modul runtime vizualizéru. Odkaz můžete zachovat tak, že ponecháte předchozí kód a nebudete ho zakomentovat.

  12. Pro konzolovou aplikaci rozhraní .NET Framework můžete spustit testovací sadu (stiskněte klávesu F5) nebo můžete postupovat podle pokynů v tématu Postupy: Instalace vizualizéru.

    Pokud aplikaci spustíte pomocí testovacího svazku, aplikace zobrazí formulář Windows.

  13. V případě konzolové aplikace .NET zkopírujte MyFirstVisualizer.dll a MyDataObject.dll do složek popsaných v tématu Postupy: Instalace vizualizéru.

  14. Po instalaci vizualizéru nastavte zarážku, spusťte konzolovou aplikaci a najeďte myší na customDataObject. Pokud je všechno správně nastavené, měli byste vidět ikonu lupy označenou jako VizualizérIcon.

    Ikona lupy vizualizéru

    Když z ikony s lupou zvolíte MyFirstVisualizer, zobrazí se formulář s textem datového objektu v názvu.

    Vizualizér zobrazující formulář Windows