2010-08-13 13 views
6

मैंने अपना खुद का डीबगर विजुअलाइज़र लिखा था।विजुअल स्टूडियो मेरे डीबगर विज़ुअलाइज़र को लोड नहीं कर रहा है

यह, और विशेषताएं, अपनी स्वयं की असेंबली में हैं। कक्षा में डीबग होने वाली असेंबली में कोई संदर्भ या गुण नहीं हैं - मैं ड्रॉप-इन डीएल बनाना चाहता हूं जो लोगों के उपयोग के लिए वैकल्पिक है।

जिस कक्षा में मैं डीबग करने की कोशिश कर रहा हूं वह एक सामान्य है।

[assembly: System.Diagnostics.DebuggerVisualizer(
     typeof(Financials.Debugging.CellTableVisualizer), 
     typeof(VisualizerObjectSource), 
     Target = typeof(Financials.Transformation.IFinCellTable), 
     Description = "FinCell Table Visualizer")] 
[assembly: System.Diagnostics.DebuggerVisualizer(
     typeof(Financials.Debugging.CellTableVisualizer), 
     typeof(VisualizerObjectSource), 
     Target = typeof(Financials.Transformation.FinCellTable<Financials.FinCell.FinHeaderCell>), 
     Description = "FinCell Table Visualizer")] 

namespace Financials.Debugging 
{ 
    public class CellTableVisualizer : DialogDebuggerVisualizer 
    { 
     protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) 
     { 
      if (windowService == null) throw new ArgumentNullException("windowService"); 
      if (objectProvider == null) throw new ArgumentNullException("objectProvider"); 

      var data = (IFinCellTable)objectProvider.GetObject(); 
      using (var displayForm = new CellTableVizForm()) 
      { 
       displayForm.PopulateForm(data); 
       windowService.ShowDialog(displayForm); 
      } 
     } 
    } 
} 

मैं दृश्य स्टूडियो 2010 चला रहा हूँ, और निम्न निर्देशिका .dll और विजुअलाइज़र सभा के .pdb शामिल हैं::

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers 

मैं

[Serializable] 
public class FinCellTable<S> : IFinCellTable, IEnumerable<List<FinCell.IFinCell>> 
    where S : class, FinCell.IFinHeaderCell, FinCell.IFinCell, new() 

यहाँ विजुआलाइज़र है IFinCellTable के उदाहरण पर ब्रेकपॉइंट रखें जो विशेष रूप से FinCellTable है। यह आवर्धक ग्लास नहीं दिखाता है।

मैंने विजुअल स्टूडियो को एक और विजुअल स्टूडियो का उपयोग करके डीबग किया क्योंकि पहले वीएस डिबगिंग था। मैंने आउटपुट विंडो को पहले वीएस लोड डीएल के रूप में देखा। जब मैंने डेटाटेबल पर विज़ुअलाइज़र ट्रिगर किया, तो दूसरे वीएस ने आउटपुट किया कि यह माइक्रोसॉफ्ट को लोड किया गया है। विज़ुअल स्टूडियो। डेबगर वीसुअलइज़र.dll और माइक्रोसॉफ्ट। विज़ुअल स्टूडियो। डीबगर .डेटासेटविज़ुअलइज़र.dll (बाद में मैंने सही निर्देशिका से बाद में)। (मॉड्यूल विंडो समान व्यवहार करती है/दिखाती है।)

तो जाहिर है कि मेरी डीबगर विजुअलाइज़र ड्रॉप-इन असेंबली वीएस द्वारा लोड नहीं की जाती है, इसलिए यह आवर्धक ग्लास दिखाना नहीं जानता है।

विज़ुअलाइज़र को आगे बढ़ाने के लिए दृश्य स्टूडियो कैसे प्राप्त करते हैं, इसलिए ड्रॉप-इन विज़ुअलाइज़र काम और आपको अपना मूल कोड संपादित करने की आवश्यकता नहीं है?

+0

कुछ भी बाहर नहीं निकलता है। विज़ुअलाइज़र की प्रतिलिपि बनाने के बाद आपने * V * को पुनरारंभ किया है, है ना? –

+0

क्या आपको कुछ प्रकार के UI या पर्यावरण रीलोड करने की आवश्यकता है?यह पूर्व संस्करणों में ऐड-ऑन के लिए आवश्यक था। –

+0

अजीब। मैंने वही किया जो आपने यहां वर्णन किया है: http://www.adamjamesnaylor.com/HowToWriteADebugVisualiserInVisualStudio.aspx और यह ठीक काम करने लग रहा था। जैसा कि मिशेल पूछता है, क्या आप वाकई सही फ़ोल्डर में हैं? मैं पूछता हूं क्योंकि काम पर मेरा विजुअल स्टूडियो उपयोगकर्ता फ़ोल्डर नेटवर्क शेयर पर है और वीएस शेयर को एक्सेस करने का प्रयास करते समय सुरक्षा अपवाद फेंकता है। –

उत्तर

3

जंगली अनुमान: क्या आप सुनिश्चित हैं कि सही फ़ाइलें C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers में हैं, C:\Users\<you>\AppData\Local\VirtualStore\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers में नहीं?

यदि हां, तो यह UAC Virtualization के कारण है।

0

मेरा मानना ​​है कि इस उपकरण> विकल्प में निष्क्रिय किया जा सकता: आप DebuggerDisplay या DebuggerTypeProxy के प्रभाव नहीं दिख रहा है तो यह सुनिश्चित करें कि उपकरण> विकल्प> डिबगिंग> सामान्य> वस्तुओं के कच्चे संरचना चर खिड़कियों में दिखाएँ चेक नहीं किया गया।

0

इसे रखने के लिए सही फ़ोल्डर है: सी: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ Packages \ Debugger \ Visualizers। एक बार जब आप यह डीएलएल डालते हैं और दृश्य स्टूडियो को पुनरारंभ करते हैं तो आपको "अभिव्यक्ति" प्रकार के चर पर "आवर्धक ग्लास" प्राप्त करना चाहिए (डिबगिंग मोड में आप इसे घड़ी विंडो में प्राप्त करेंगे और जब आप अपने माउस कर्सर को चर पर ले जाएं)

1

यह सवाल 5 वर्ष से अधिक पुराना है, इसलिए मुझे लगता है यह अब मूल पोस्टर के लिए प्रासंगिक है, लेकिन किसी और को कुछ इसी तरह करने का प्रयास कर के लिए: जब लक्ष्य एक अंतरफलक है

System.Diagnostics.DebuggerVisualizer काम नहीं करता है । आपको एक ठोस प्रकार निर्दिष्ट करना होगा। आपको प्रत्येक कंक्रीट प्रकार पर विशेषता निर्दिष्ट करना है जिसे आप विज़ुअलाइज़ करना चाहते हैं:

[System.Diagnostics.DebuggerVisualizer("Financials.Debugging.CellTableVisualizer, Financials.Debugging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...")] 
[Serializable] 
public class FinCellTable<S> : IFinCellTable, IEnumerable<List<FinCell.IFinCell>> 
    where S : class, FinCell.IFinHeaderCell, FinCell.IFinCell, new() 
{ 
संबंधित मुद्दे