46

C#Interactiveは、イミディエイトウィンドウよりもはるかに強力なようです(少なくとも、LINQでよく使用されるラムダ式を処理します。VisualStudioのデバッグ「クイックウォッチ」ツールとラムダ式を参照してください)が、次のようには使用できないようです。デバッガーコンテキストを認識していないため、置換。デバッガコンテキストにアクセスする方法はありますか?

F#インタラクティブでデバッガーコンテキストを取得するのを見てきましたが、同じものが必要になる場合がありますが、新しい/異なるものが利用できる可能性があります。

http://extendedimmediatewin.codeplex.com/は便利かもしれませんが、かなり死んでいるように見えますが、2011年10月18日に、VB.Net(http://extendedimmediatewin.codeplex.com/discussions/75589)。

4

3 に答える 3

50

完全なソリューションではありませんが、VS2015では、Initialize Interactive with Projectを実行した後、[ Debug ] > [ AttachtoProcess]を使用してプロセスに接続できInteractiveHost.exeます。

その後、プロジェクトから関数をデバッグできます。ただし、Kevinが説明したように、インタラクティブウィンドウで1回限りの関数をデバッグすることはできません。

補足として、https://stackoverflow.com/a/40650343/467110は、プロジェクトでインタラクティブを正常に初期化するために、ソリューションを開く前にC#インタラクティブウィンドウを開く必要がある場合があることを指摘しています

于 2017-03-30T01:29:41.447 に答える
47

免責事項:私はマイクロソフトのRoslynチームで働いています。

残念ながら、現在デバッガコンテキストを取得する方法はありません。私たちはそれが役立つことを認識しており、Roslynの主要な成果物が完成するにつれて、さらに調査して何ができるかを確認したいと考えています。

于 2011-10-26T03:20:28.217 に答える
2

C#Interactive内で実行できます

System.Diagnostics.Debugger.Launch();

デバッガーを要求します。これにより、開いているVisualStudioインスタンスまたは接続する新しいインスタンスのいずれかを選択するように求めるウィンドウが表示されます。Visual Studioの[プロジェクトでインタラクティブを読み込む]オプションを使用したとすると、コードがインタラクティブで実行されると、開いているソリューションのブレークポイントがヒットするようになります。

既存のコードなしでデバッガーが必要な場合-挿入できるようになりました

System.Diagnostics.Debugger.Debug();

Interactiveに入れたコードを呼び出します(ただし、「チャンク」を1回押す必要があります。つまり、「Enter」を1回押す必要があります)。「locals」ウィンドウを介してローカル変数を調べ、インタラクティブコンテキストに対してコードを実行できます。 「即時」ウィンドウを介して。

于 2022-01-11T17:18:10.820 に答える