2013-04-16 11 views
5

私はバグを探しています。オブジェクトの内容を私のローカルウィンドウをファイルにダンプして、Notepad ++で正しく動作する別のオブジェクトレコードと比較できるようにすると、本当に役に立ちます。問題はこれです。コードにバグがあるのか​​、レコードに不一致があるのか​​わかりません。Visual Studio 2012でオブジェクトをディスクに保存する方法はありますか?

オブジェクト/変数をディスクに保存する方法はありますか?

私はthis拡張子を見つけ、残念ながらそれだけでVS 2010のためである、と私はあなたがObjectDumper project on CodePlexを使用することができ、2012年

+0

、あなたが見つかった拡張子は、基本的にはzipファイルで、あなたが内容を抽出、.zipファイルに拡張子を変更することができ、チャンス11へのバージョン(それのXML内のVSIXファイルで)、rezip、エクステンションを元に戻して2012年にインストールしてください。これは必ずしも機能するとは限りませんが、一発の価値があり、時間を節約できます。 – JMK

+0

それは素晴らしい考えです!私はプラグインを変換することができましたが、メニューでそれをクリックするとVSがクラッシュします。 – northben

+0

とにかく価値のあることに、私はMVVM in the Boxと同じ問題を抱え、2010年のインストールが終了しました! – JMK

答えて

5

を持っています。 NuGetパッケージとしても利用できます。

0

イミディエイトウィンドウを開き、オブジェクト名を入力してください。単純なプロパティとその値を出力します。しかし、オブジェクトであるプロパティはうまく処理されません。

また、JSONシリアライザを使用してシリアル化し、デバッグコンソールで表示することもできます。

+0

私はイミディエイトウィンドウでオブジェクトを表示する方法を知っています。これらの値を何らかの形で保持して、それらを同じオブジェクトの別のインスタンスと比較できるようにする必要があります。 – northben

0

Log4NetとObjectDumperを使ってオブジェクトをダンプする実験を少し行いました。

私のブログの記事をチェックアウト:Logging Complete Objects with Log4Net

基本的にあなたがあなた自身のIObjectRendererを作成し、それを設定し、次にあなたができるだけでlog.Debug(yourObject)

 

public class Log4NetObjectLogger : IObjectRenderer 
    { 
     public void RenderObject(RendererMap rendererMap, object obj, TextWriter writer) 
     { 
      var ex = obj as Exception; 

      //if its not an exception, dump it. If it's an exception, log extended details. 
      if (ex == null) 
      { 
       //by default log up to 10 levels deep. 
       ObjectDumper.Write(obj,10,writer); 
      } 
      else 
      { 
       while (ex != null) 
       { 
        RenderException(ex, writer); 
        ex = ex.InnerException; 
       } 
      } 
     } 

     private void RenderException(Exception ex, TextWriter writer) 
     { 
      writer.WriteLine(string.Format("Type: {0}", ex.GetType().FullName)); 
      writer.WriteLine(string.Format("Message: {0}", ex.Message)); 
      writer.WriteLine(string.Format("Source: {0}", ex.Source)); 
      writer.WriteLine(string.Format("TargetSite: {0}", ex.TargetSite)); 
      RenderExceptionData(ex, writer); 
      writer.WriteLine(string.Format("StackTrace: {0}", ex.StackTrace)); 
     } 

     private void RenderExceptionData(Exception ex, TextWriter writer) 
     { 
      foreach (DictionaryEntry entry in ex.Data) 
      { 
       writer.WriteLine(string.Format("{0}: {1}", entry.Key, entry.Value)); 
      } 
     } 
    } 

 
2

私は少し遅れによパーティーが、私はあなたが探しているものを正確に実行するObject ExporterというVisual Studioエクステンションを作成しました。これはデバッグウィンドウ(現時点ではローカルウィンドウに限定されている)内のオブジェクトをJSON、XMLまたはCSharpオブジェクトの初期化コードにエクスポートします。

拡張がここで見つけることができます:詳細と https://visualstudiogallery.msdn.microsoft.com/c6a21c68-f815-4895-999f-cd0885d8774f

ブログ記事: http://www.omarelabd.net/exporting-objects-from-the-visual-studio-debugger/

1

私はOzCodeで働いています。これはVisual Studio用のデバッグ拡張機能であり、将来のバージョンでインスタンスをXML、jsonまたはC#コードとしてエクスポートする機能に取り組んでいます。
早アクセスプレビューはVisual Studio's marketplaceからダウンロードできます。 大量のデータを迅速にエクスポートできる商用グレードのソリューションです。

choosing eport format

私はあなたがそれを試してみる示唆 - あなたはOzCodeをインストールするとエクスポートを使用すると、データティップ・ウィンドウを開き、「エクスポート」を選択するだけです。

側の注意点として

Exporting image

関連する問題