İzlenecek Yol: C# ile Görselleştirici Yazma
Önemli
Visual Studio 2022 sürüm 17.9'dan başlayarak, görselleştiriciler artık yeni VisualStudio.Genişletilebilirlik modeli kullanılarak işlem dışı çalışan .NET 6.0+ dilinde yazılabilir. Visual Studio'nun eski sürümlerini desteklemek veya özel görselleştiricilerini bir kitaplık DLL'sinin parçası olarak göndermek istemedikleri sürece görselleştirici yazarlarının Visual Studio hata ayıklayıcısı görselleştiricileri oluşturma bölümündeki yeni belgelere başvurmalarını öneririz.
Bu izlenecek yol, C# kullanarak basit bir görselleştirici yazmayı gösterir. Bu kılavuzda oluşturduğunuz görselleştirici, Windows Formu kullanarak bir dizenin içeriğini görüntüler. Bu basit dize görselleştiricisi özellikle kendi içinde kullanışlı değildir, ancak diğer veri türleri için daha kullanışlı görselleştiriciler oluşturmak için izlemeniz gereken temel adımları gösterir.
Not
Gördüğünüz iletişim kutuları ve menü komutları, etkin ayarlarınıza veya sürümünüze bağlı olarak Yardım'da açıklananlardan farklı olabilir. Ayarlarınızı değiştirmek için Araçlar menüsüne gidin ve Ayarlar İçeri ve Dışarı Aktar'ı seçin. Daha fazla bilgi için bkz . Ayarları sıfırlama.
Görselleştirici kodu, hata ayıklayıcının okuduğu bir DLL dosyasına yerleştirilmelidir. Bu nedenle, ilk adım DLL için bir Sınıf Kitaplığı projesi oluşturmaktır.
El ile görselleştirici oluşturma
Görselleştirici oluşturmak için aşağıdaki görevleri tamamlayın.
Sınıf kitaplığı projesi oluşturma
Yeni bir sınıf kitaplığı projesi oluşturmak için Dosya>Yeni Proje'yi> seçin.
Dil açılan listesinde C# öğesini seçin.
Arama kutusuna sınıf kitaplığı girin. Sınıf Kitaplığı (.NET Framework) öğesini ve ardından İleri'yi seçin.
İletişim kutusuna adını
MyFirstVisualizer
girin ve Oluştur'u seçin.
Görselleştirici projesi için .NET değil bir .NET Framework sınıf kitaplığı seçtiğinizden emin olun. Görselleştiricinin .NET Framework olması gerekse de, çağıran uygulama .NET olabilir.
Sınıf kitaplığını oluşturduktan sonra, orada tanımlanan sınıfları kullanabilmek için Microsoft.VisualStudio.DebuggerVisualizers.DLL
dosyaya bir başvuru eklemeniz gerekir. Başvuruyu eklemeden önce bazı sınıfları anlamlı adlar kullanacak şekilde yeniden adlandırmanız gerekir.
Class1.cs yeniden adlandırın ve Microsoft.VisualStudio.DebuggerVisualizers ekleyin
Çözüm Gezgini'da Class1.cs sağ tıklayın ve bağlam menüsünden Yeniden Adlandır'ı seçin.
Class1.cs adını DebuggerSide.cs gibi anlamlı bir adla değiştirin.
Not
Visual Studio, yeni dosya adıyla eşleşecek şekilde DebuggerSide.cs sınıf bildirimini otomatik olarak değiştirir. Eylemi tamamlamak için bir istem görürseniz Evet'i seçin.
Çözüm Gezgini'da Başvurular'a sağ tıklayın ve kısayol menüsünde Başvuru Ekle'yi seçin.
Başvuru Ekle iletişim kutusundaki Gözat sekmesinde Gözat'ı seçin ve Microsoft.VisualStudio.DebuggerVisualizers.DLL bulun.
DLL dosyasını <Visual Studio'nun yükleme dizininin Visual Studio Install Directory>\Common7\IDE\PublicAssemblies alt dizininde bulabilirsiniz.
Tamam'ı seçin.
DebuggerSide.cs yönergelerine
using
aşağıdakileri ekleyin:using Microsoft.VisualStudio.DebuggerVisualizers;
Artık hata ayıklayıcı tarafı kodu oluşturmaya hazırsınız. Bu kod, görselleştirmek istediğiniz bilgileri görüntülemek için hata ayıklayıcısı içinde çalışır. İlk olarak, temel sınıfından DebuggerSide
DialogDebuggerVisualizer
devralmayı yapılandırmak için nesnesinin bildirimini değiştirmeniz gerekir.
DialogDebuggerVisualizer'dan Devral
DebuggerSide.cs aşağıdaki kod satırına gidin:
public class DebuggerSide
Kodu şu şekilde değiştirin:
public class DebuggerSide : DialogDebuggerVisualizer
Temel sınıfın oluşturucusunun görselleştirici bileşenleri arasında iletişim kurmak için kullanılacak serileştirme ilkesini geçirebilmeniz için boş bir oluşturucu ekleyin.
public DebuggerSide() : base(FormatterPolicy.NewtonsoftJson) // or FormatterPolicy.Json { }
Not
Visual Studio 2022 sürüm 17.11'den başlayarak .NET 5.0+ için özel hata ayıklayıcısı tarafında dikkat edilmesi gerekenler bölümünde açıklanan güvenlik sorunları nedeniyle görselleştiriciler biçimlendirici ilkesini belirtemez
Legacy
.DialogDebuggerVisualizer
geçersiz kılmanız gereken bir soyut yönteme (Show
) sahiptir.
DialogDebuggerVisualizer.Show yöntemini geçersiz kılma
içine public class DebuggerSide
aşağıdaki yöntemi ekleyin:
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
}
yöntemi, Show
görselleştirici iletişim kutusunu veya başka bir kullanıcı arabirimini oluşturan kodu içerir ve hata ayıklayıcıdan görselleştiriciye geçirilen bilgileri görüntüler. İletişim kutusunu oluşturan ve bilgileri görüntüleyen kodu eklemeniz gerekir. Bu kılavuzda bir Windows Forms ileti kutusu kullanacaksınız. İlk olarak, System.Windows.Forms için bir başvuru ve using
yönerge eklemeniz gerekir.
System.Windows.Forms Ekleme
Çözüm Gezgini'da Başvurular'a sağ tıklayın ve kısayol menüsünde Başvuru Ekle'yi seçin.
Başvuru Ekle iletişim kutusundaki Gözat sekmesinde Gözat'ı seçin ve System.Windows.Forms.DLL bulun.
DLL dosyasını C:\Windows\Microsoft.NET\Framework\v4.0.30319 konumunda bulabilirsiniz.
Tamam'ı seçin.
DebuggerSide.cs yönergelerine
using
aşağıdakileri ekleyin:using System.Windows.Forms;
Şimdi, görselleştiricinizin kullanıcı arabirimini oluşturmak ve göstermek için bazı kodlar ekleyin. Bu örnek ilk görselleştiriciniz olduğundan, kullanıcı arabirimini basit tutabilir ve bir İleti Kutusu kullanabilirsiniz.
İletişim kutusunda Görselleştirici Çıktısını gösterme
Show
yönteminde aşağıdaki kod satırını ekleyin:MessageBox.Show(objectProvider.GetObject().ToString());
Bu örnek kod, hata işlemeyi içermez. Hata işlemeyi gerçek bir görselleştiriciye veya başka bir uygulama türüne eklemeniz gerekir.
Oluştur menüsünde MyFirstVisualizer'ı Derle'yi seçin. Proje başarıyla derlenmelidir. Devam etmeden önce derleme hatalarını düzeltin.
Hata ayıklayıcısı yan kodu artık tamamlandı. Ancak bir adım daha var; debuggee tarafına hangi sınıf koleksiyonunun görselleştiriciyi içerdiğini bildiren öznitelik.
Debuggee-side kodu için görselleştirilecek türü ekleme
Hata ayıklayıcı tarafı kodunda, özniteliğini kullanarak DebuggerVisualizerAttribute debuggee için görselleştirilecek türü (nesne kaynağı) belirtirsiniz. Target
özelliği, görselleştirmek için türünü ayarlar.
yönergelerinden sonra
using
ancak öncenamespace MyFirstVisualizer
DebuggerSide.cs aşağıdaki öznitelik kodunu ekleyin:[assembly:System.Diagnostics.DebuggerVisualizer( typeof(MyFirstVisualizer.DebuggerSide), typeof(VisualizerObjectSource), Target = typeof(System.String), Description = "My First Visualizer")]
Oluştur menüsünde MyFirstVisualizer'ı Derle'yi seçin. Proje başarıyla derlenmelidir. Devam etmeden önce derleme hatalarını düzeltin.
Bu noktada, ilk görselleştiriciniz tamamlanmıştır. Adımları doğru izlediyseniz görselleştiriciyi derleyebilir ve Visual Studio'ya yükleyebilirsiniz. Ancak Visual Studio'ya bir görselleştirici yüklemeden önce, doğru çalıştığından emin olmak için bunu test etmelisiniz. Şimdi görselleştiriciyi Visual Studio'ya yüklemeden çalıştırmak için bir test koşumu oluşturacaksınız.
Görselleştiriciyi göstermek için test yöntemi ekleme
sınıfına
public DebuggerSide
aşağıdaki yöntemi ekleyin:public static void TestShowVisualizer(object objectToVisualize) { VisualizerDevelopmentHost visualizerHost = new VisualizerDevelopmentHost(objectToVisualize, typeof(DebuggerSide)); visualizerHost.ShowVisualizer(); }
Oluştur menüsünde MyFirstVisualizer'ı Derle'yi seçin. Proje başarıyla derlenmelidir. Devam etmeden önce derleme hatalarını düzeltin.
Ardından, görselleştirici DLL'nizi çağırmak için yürütülebilir bir proje oluşturmanız gerekir. Kolaylık olması için Konsol Uygulaması projesi kullanın.
Çözüme konsol uygulaması projesi ekleme
Çözüm Gezgini çözüme sağ tıklayın, Ekle'yi ve ardından Yeni Proje'yi seçin.
Dosya>Yeni Proje'yi> seçin. Dil açılan listesinde C# öğesini seçin. Arama kutusuna konsol uygulaması yazın ve ardından Konsol Uygulaması (.NET Framework) veya .NET için Konsol Uygulaması'nı seçin. İleri'yi seçin. Görüntülenen iletişim kutusuna adını
MyTestConsole
yazın ve Oluştur'u seçin.
Not
Test koşumunu kullanarak görselleştiriciyi kolayca test etmek istiyorsanız bir .NET Framework konsol uygulaması oluşturun. Bunun yerine bir .NET konsol uygulaması oluşturabilirsiniz, ancak daha sonra açıklanan test koşumu henüz .NET için desteklenmediğinden, bunu test etmek için görselleştiriciyi yüklemeniz gerekir. .NET konsol uygulaması için önce burada konsol uygulamasını oluşturun, gerekli DLL ve proje başvurularını ekleyin ve ardından Hata ayıklamaya yönelik veri nesnesi ekleme başlığında açıklanan adımları izleyin. ASP.NET Core senaryoları için bkz . .NET 5.0+ için özel hata ayıklayıcısı tarafı konuları.
Şimdi, MyTestConsole'un MyFirstVisualizer'ı çağırabilmesi için gerekli başvuruları eklemeniz gerekir.
MyTestConsole'a gerekli başvuruları ekleme
Çözüm Gezgini'da MyTestConsole'a sağ tıklayın ve kısayol menüsünde Başvuru Ekle'yi seçin.
Başvuru Ekle iletişim kutusunda Gözat sekmesini açın ve Microsoft.VisualStudio.DebuggerVisualizers.DLL seçin.
Tamam'ı seçin.
MyTestConsole öğesine sağ tıklayın ve Yeniden Başvuru Ekle'yi seçin.
Başvuru Ekle iletişim kutusunda Projeler sekmesini açın ve MyFirstVisualizer'ı seçin.
Tamam'ı seçin.
Şimdi test koşumunu tamamlamak için kodu ekleyin.
MyTestConsole'a kod ekleme
Çözüm Gezgini'da Program.cs sağ tıklayın ve kısayol menüsünde Yeniden Adlandır'ı seçin.
Program.cs adını TestConsole.cs gibi daha anlamlı bir adla düzenleyin.
Not
Visual Studio, TestConsole.cs'daki sınıf bildirimini yeni dosya adıyla eşleşecek şekilde otomatik olarak değiştirir.
TestConsole.cs yönergelerine
using
aşağıdaki kodu ekleyin:using MyFirstVisualizer;
yönteminde
Main
aşağıdaki kodu ekleyin:String myString = "Hello, World"; DebuggerSide.TestShowVisualizer(myString);
Artık ilk görselleştiricinizi test etmeye hazırsınız.
Görselleştiriciyi test edin
Çözüm Gezgini'da, MyTestConsole'a sağ tıklayın ve kısayol menüsünde Başlangıç Projesi Olarak Ayarla'yı seçin.
Hata Ayıkla menüsünde Başlat'ı seçin.
Konsol uygulaması başlatılır ve Görselleştirici görüntülenir ve "Hello, World" dizesini görüntüler.
Tebrikler. İlk görselleştiricinizi oluşturup test etmişsiniz!
Görselleştiricinizi yalnızca test koşumundan çağırmak yerine Visual Studio'da kullanmak istiyorsanız yüklemeniz gerekir. Daha fazla bilgi için bkz . Nasıl yapılır: Görselleştirici Yükleme.
Debuggee-side veri nesnesi ekleme
Bu bölümde, veri nesnesinden System.String
özel bir veri nesnesine geçebilirsiniz.
Çözüm Gezgini çözüme sağ tıklayın, Ekle'yi ve ardından Yeni Proje'yi seçin. Dil açılan listesinde C# öğesini seçin. Arama kutusuna sınıf kitaplığı yazın ve ardından Sınıf Kitaplığı (.NET Framework) veya .NET Standard için Sınıf Kitaplığı'nı seçin.
Not
.NET Framework test konsolu uygulaması kullanıyorsanız bir .NET Framework sınıf kitaplığı projesi oluşturduğunuzdan emin olun.
İleri'yi seçin. Görüntülenen iletişim kutusuna adını
MyDataObject
yazın ve Oluştur'u seçin.(Yalnızca.NET Standart sınıf kitaplığı) Çözüm Gezgini'de projeye sağ tıklayın ve Proje Dosyasını Düzenle'yi seçin. değerini olarak
<TargetFramework>
netstandard2.0
değiştirin.<TargetFramework>netstandard2.0</TargetFramework>
Ad alanının içinde
MyDataObject
varsayılan kodu aşağıdaki kodla değiştirin.[Serializable] public class CustomDataObject { public CustomDataObject() { this.MyData = "MyTestData"; } public string MyData { get; set; } }
Bu örnekte olduğu gibi salt okunur bir görselleştirici için VisualizerObjectSource yöntemlerinin uygulanması gerekmez.
Ardından MyFirstVisualizer projesini yeni veri nesnesini kullanacak şekilde güncelleştirin.
myFirstVisualizer projesinin altındaki Çözüm Gezgini, Başvurular düğümüne sağ tıklayın ve Başvuru Ekle'yi seçin.
Projeler'in altında MyDataObject projesini seçin.
DebuggerSide.cs öznitelik kodunda Hedef değerini olarak değiştirerek
System.String
MyDataObject.CustomDataObject
güncelleştirin.Target = typeof(MyDataObject.CustomDataObject),
MyFirstVisualizer projesinde yönteminin kodunu
Show
aşağıdaki kodla değiştirin.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);
Yukarıdaki kod, Formun başlığında göstermek için veri nesnesinin bir özelliğini kullanır.
Ardından konsol uygulamasını özel veri nesnesini kullanacak şekilde güncelleştirin.
myTestConsole projesinin altındaki Çözüm Gezgini, Başvurular veya Bağımlılıklar düğümüne sağ tıklayın ve öğesine
MyDataObject
bir proje başvurusu ekleyin.Program.cs yöntemindeki
Main
kodu aşağıdaki kodla değiştirin.// String myString = "Hello, World"; CustomDataObject customDataObject = new CustomDataObject(); DebuggerSide.TestShowVisualizer(customDataObject);
(.NET konsol uygulaması) Test koşumunun desteklenmediğinden çağrısı
TestShowVisualizer
bir try-catch deyimi içine alın.try { DebuggerSide.TestShowVisualizer(customDataObject); } catch (Exception) { }
Konsol uygulamasının görselleştiriciye bir çalışma zamanı başvurusu gerekir. Açıklama satırı yerine önceki kodu koruyarak başvuruyu koruyabilirsiniz.
.NET Framework konsol uygulaması için test koşumunu çalıştırabilir (F5 tuşuna basın) veya Nasıl yapılır: Görselleştirici Yükleme başlığı altında yönergeleri izleyebilirsiniz.
Uygulamayı test koşumunu kullanarak çalıştırırsanız, uygulama Windows Formunu gösterir.
.NET konsol uygulaması için ve
MyDataObject.dll
öğesini Nasıl yapılır: Görselleştirici Yükleme bölümünde açıklanan klasörlere kopyalayınMyFirstVisualizer.dll
.Görselleştiriciyi yükledikten sonra bir kesme noktası ayarlayın, konsol uygulamasını çalıştırın ve üzerine
customDataObject
gelin. Her şey doğru ayarlandıysa büyüteç simgesini görmeniz gerekir.Büyüteçten MyFirstVisualizer'ı seçtiğinizde, başlıkta veri nesnesi metnini içeren Formu görürsünüz.