デバッガービジュアライザーが機能していませんか?間違って登録しましたか?
-
19-08-2019 - |
質問
VS2008でデバッガビジュアライザーを作成しました。同じ.dllに2つのクラスを作成しました:-
- BinaryDataDebuggerVisualizer
- ImageDebuggerVisualizer
画像1は正常に機能します(たとえば、デバッグモードで拡大鏡が表示されます)が、byte [] 1(BinaryDataDV)に対しては機能しません。私のビジュアライザーは、バイナリデータをモーダルウィンドウに画像として表示します(データが正当な画像である場合)。リリースモードでコードにコンパイルし、C:\ Users \\ Documents \ Visual Studio 2008 \ Visualizersに.dllをドロップしました
これは、可視性を「定義」するために使用したコードです...
使用
System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Microsoft.VisualStudio.DebuggerVisualizers;
using Foo.DebuggerVisualizers;
[assembly: DebuggerVisualizer(
typeof (BinaryDataDebuggerVisualizer),
typeof (VisualizerObjectSource),
Target = typeof (byte[]),
Description = "Binary Data to Image Visualizer")]
namespace Foo.DebuggerVisualizers
{
public class BinaryDataDebuggerVisualizer : DialogDebuggerVisualizer
{
protected override void Show(IDialogVisualizerService windowService,
IVisualizerObjectProvider objectProvider)
{
... my code in here
}
}
}
デバッガビジュアライザーソリューションで単体テストを行いました。これは、正当な(および違法な)イメージファイルを正しく表示するコードを起動してテストします。だから、コードは大丈夫だと思う。
実際のソリューションにいるとき、これが私がしていることです(デバッグモードで変数の上にカーソルを置いたときに拡大鏡が表示されることを期待しています)。
byte[] data = File.ReadAllBytes("Chick.jpg");
その行で(ブレークポイントを使用して)デバッグ中にコードを一時停止したときに、変数data
にカーソルを合わせます。
砂時計なし:(
誰が間違っているかについてのアイデアはありますか?
解決
残念ながら、これは不可能です。 Debugger Visualizerフレームワークには、配列タイプまたはオブジェクトで機能することを妨げる制限があります。
http://msdn.microsoft.com/en-us/library/ e2zc529c.aspx
ページからの引用:<!> quot; ObjectまたはArray <!> quot;を除く、マネージクラスのオブジェクトに対してカスタムビジュアライザーを作成できます。