25
public static class Extensions{
public static void Dump<T>(this T o) { }
public static void Dump<T>(this T o, string s) { }}

これらの行により、LINQPad から VS にコードをコピーし、.Dump() を使用してすべての行をコメントアウトせずに実行できますが、それだけでは十分ではありません... http://code.google.com/p/linqpadvisualizer/ - あまり快適ではありません: (

VS で LINQPad を検索して得た最良の結果は、Pat Kujawa による以下のコードを含むこのサイトです。

using System.Diagnostics;
using System.IO;
public static class Extensions
{
public static void Dump<T>(this T o)
{
    string localUrl = Path.GetTempFileName() + ".html";
    using (var writer = LINQPad.Util.CreateXhtmlWriter(true))
    {
        writer.Write(o);
        File.WriteAllText(localUrl, writer.ToString());
    }
    Process.Start(localUrl);
}
}

しかし、エラー 1 'LINQPad' という名前は現在のコンテキストには存在しません

ネット上にLINQPad.dllが見つかりませんでした

4

3 に答える 3

32

これは LINQPadの dll ではありません。LINQPad.exe自体を参照する必要があります。

Visual Studio でプロジェクトを右クリック -> [参照の追加] -> exe バイナリ ファイルの場所を参照します。通常はインストール ディレクトリにありC:\Program Files\LINQPad\ます -> を選択しますLINQPad.exe

完了したら、ファイルに「using ディレクティブ」を追加できます。

using System.Diagnostics;
using System.IO;
using LINQPad;

メソッドLINQPad.Util.CreateXhtmlWriterが使用できるようになります。

于 2011-03-24T03:11:32.913 に答える
20

上記の回答に加えて、Visual Studio (2015) 内で「インプレース」デバッグを行う簡単な解決策を見つけました。


準備

  1. Ray Vega が書いたように、LinqPad の x86 バージョン (Visual Studio はまだ 64 ビットではないことに注意してください!) への参照を追加します (つまり、[参照の追加] ->通常はインストール ディレクトリ C:\Program Files\ にある exe バイナリ ファイルの場所を参照します)。 LINQPad\ -> LINQPad.exe を選択します。)

  2. ダンプを使用するスコープで、次を追加します。

    public static dynamic dump = LINQPad.Util.CreateXhtmlWriter();
    
  3. ダンプするには、ダンプが必要な場所にコードを追加します。

    dump.Write(obj); // obj = the object to dump
    
  4. 必要に応じてブレークポイントを追加します。

注: LinqPad .Dump()メソッドとの互換性が必要な場合は、手順 2. と 3. の代わりに次のように宣言します。

public static class DumpExtension
{
    private static dynamic dump = LINQPad.Util.CreateXhtmlWriter();
    public static T Dump<T>(this T objToDump)
    {
        dump.Write(objToDump);
        return objToDump;
    }
}

この場合、return objToDumpステートメントがある行にブレークポイントを配置します。


視覚化

ウォッチ ウィンドウで、追加します。

    dump.ToString()

スパイグラス アイコンをクリックし、[HTML ビジュアライザー] を選択します。 Htmlビジュアライザー

ブレークポイントに到達したら、スパイグラスをクリックすると、ポップアップ ウィンドウが開き、レンダリングされたダンプが表示されます (LinqPad で表示されるのと同じように)。

ダンプ例

この例では、式

        dump.Write(new string[] { "a", "b" });

または(上記の拡張メソッドを使用して他の構文を使用する場合)

        (new string[] { "a", "b" }).Dump();

レンダリングされました。

ご了承ください

  • を使用しているため、プロジェクトの参照dynamicに明示的に追加する必要がある場合があります。そうしないと、エラー メッセージが表示されます。ここでMicrosoft.CSharpの議論を参照してください。
  • .NET Framework 4.5.2 以降を使用する必要があります。それより低いバージョンのフレームワークは機能しません
  • LinqPad と同様に、ダンプしたものはすべて追加されます。
  • これは単体テストでのみ使用し、本番コードでは使用しないでください。アプリケーションをデプロイするときにダンプ ステートメントがまだ存在するためです。もちろん、すべてのダンプ ステートメント (準備セクションの手順 2. のステートメントを含む) を次の#ifようなステートメントで囲むことができます。

    #if DEBUG dump.Write(new string[] { "a", "b" }); #endif

    LinqPad 参照を DEBUG 構成のみにバインドする場合は、それを実現する方法のヒントをここ(または詳細についてはここ) で見つけることができます。

于 2016-07-05T08:50:27.900 に答える