2

VS2008でデバッガビジュアライザーを作成しました。同じ.dllに私が作成した2つのクラスがあります:-

  • BinaryDataDebuggerVisualizer
  • ImageDebuggerVisualizer

画像1は正常に機能しますが(たとえば、虫眼鏡はデバッグモードで表示されます)、byte []画像(BinaryDataDV)では機能しません。私のビジュアライザーは、バイナリデータをモーダルウィンドウに画像として表示します(データが正当な画像の場合)。リリースモードでコードにコンパイルしてから、.dllをC:\ Users \\ Documents \ Visual Studio 2008\Visualizersにドロップしました

これは、私がvisを「定義」するために使用したコードです...

を使用して

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次に、デバッグ中にコードを一時停止したときに、その行で(ブレークポイントを使用して)変数にカーソルを合わせます。

砂時計なし:(

誰かが何が悪いのかについて何か考えがありますか?

4

1 に答える 1

8

残念ながら、これは不可能です。Debugger Visualizerフレームワークには、配列タイプまたはオブジェクトで機能できないという制限があります。

http://msdn.microsoft.com/en-us/library/e2zc529c.aspx

ページからの引用:「オブジェクトまたは配列を除く任意の管理対象クラスのオブジェクトのカスタムビジュアライザーを作成できます」

于 2008-12-06T10:21:43.057 に答える