C#プログラムでブレークポイントを使用している場合、F#REPLを使用して コードを検査したいと思います。これはどんな方法でも可能ですか?Visual Studio 2012でデバッグ時にF#REPLを使用する方法はありますか?#
答えて
F#REPLでC#プロジェクトをデバッグできるはずです.F#ライブラリプロジェクトをデバッグするときに行いますが、C#アプリケーション/ライブラリも機能します(私は思っています)。
C#プロジェクトをコンパイルします。 F#対話型では、#r
ディレクティブ(ArthurFSharpの記事を参照)を使用してC#アセンブリを参照してください。 C#コードのどこかにブレークポイントを挿入します。
Visual Studioの場合、Tools
- >Attach to Process
にアクセスしてください。プロセスのリストでFsi.exe
を見つけてダブルクリックします。そこに表示されていない場合は、Fsiプロセスが開始されていることを確認してください(F#Interactiveウィンドウ内をクリックするだけです)。
F#Interactiveでは、設定したブレークポイントに達するコードを実行します。デバッガはあなたが望むようにブレークポイント上で実行を止めるべきです。一部のブレークポイントでデバッガが停止していない限り、実行中のC#アプリケーションの設定を変更するなど、FSI内から別のコードを実行することもできます。
重要: Windowsは、プロセスにロードされるたびにアセンブリをロックします。つまり、FSIが開いている限り、C#アプリケーションを再コンパイルすることはできません。修正は簡単ですが、C#アプリにいくつか変更を加えて再コンパイルしてテストを再開したい場合は、F#Interactiveウィンドウ内を右クリックし、コンテキストメニューの「Reset Interactive Session」をクリックしてください。プロセスが強制終了され、再起動されるので、もう一度やり直すことができます。 (FSIプロセスの再起動を忘れてアプリケーションを再コンパイルしようとすると、コンパイルに通常よりも少し時間がかかります。コンパイラが出力ファイルに書き込めないというエラーメッセージが表示されます)
デバッガを接続するさらに簡単な方法は、F#スクリプト内からSystem.Diagnostics.Debugger.Launch()を呼び出すことです。 –
#I
ディレクティブを使用してプロジェクトへのパスを含める必要があります。アセンブリをロードして使用することができます。次に、アセンブリ(#rディレクティブ)をロードし、名前空間を開き、メソッドを呼び出して(結果を調べる)ことができます。例えば
:
using System;
namespace ConsoleApplication1
{
public class Program
{
static void Main(string[] args)
{
PrintMessage();
}
public static void PrintMessage()
{
Console.WriteLine("Hello World!");
}
}
}
そしてF#インタラクティブで:
> #I "full path to debug directory";;
--> Added 'full path to debug directory' to library include path
> #r "ConsoleApplication1.exe";;
--> Referenced 'full path to debug directory\ConsoleApplication1.exe'
> open ConsoleApplication1;;
> Program.PrintMessage();;
Hello World!
val it : unit =()
PS:最初のプロジェクトをコンパイルする必要があります。
質問は、C#でブレークポイントを挿入し、それをF#REPLで見ることでした。これははるかに困難です - 実際にはいくつかの重大なトリッキーが必要です。 –
- 1. リモートコンピュータからVisual Studio 2012でAsp.Net Mvcアプリケーションをデバッグする方法
- 2. Visual Studio 2012でオブジェクトをディスクに保存する方法はありますか?
- 3. F#はデスクトップ用のVisual Studio 2012 Express用です
- 4. Visual Studio 2012で異なるdllとpdbを使用したデバッグ
- 5. Visual Studioでは、バックグラウンドスレッドを一時停止せずにWeb APIリクエストをデバッグする方法はありますか?
- 6. Visual StudioのCTRL + Fを使用する方法は?
- 7. Visual Studio Codeでブレークポイントベースのデバッガを使用してCKANをデバッグする方法はありますか?
- 8. Visual StudioコードにPowerShell ISEアドオンを使用する方法はありますか?
- 9. デバッグ出力ウィンドウでノイズメッセージを無効にする - Visual Studio 2012
- 10. Visual StudioにDLLをアンロードする方法はありますか?
- 11. Visual Studioでf#のクラスビューがありますか?
- 12. Visual Studio 2012でクイック検索を無効にする方法はありますか?
- 13. Visual Studio 2012のVB6コードのデバッグ
- 14. Visual Studioを使用してLuaコードをデバッグする方法
- 15. Visual Studioコードを使用してCucumberJSスクリプトをデバッグする方法
- 16. ビルド時にVisual Studio 2012とWeb Essentials 2012がクラッシュする
- 17. Visual Studio 2012でファイルを閉じるためのキーボードショートカットはありますか?
- 18. Visual Studio 2012のVisual Studio 2010スタイルの保留中の変更/チームエクスプローラを使用する方法はありますか?
- 19. Visual Studioにカスタム言語REPLを追加する方法
- 20. Visual Studioチームサービスコードカバレッジパブリッシングスタイルシートを回避する方法はありますか
- 21. Visual Studio 2012のタブオーダーの割り当てダイアログはどこにありますか?
- 22. 公開ボタンをクリックした後にVisual Studioでスクリプトをデバッグする方法はありますか?
- 23. Visual Studio 2005のASP.NETデバッグとリリースビルドはありますか
- 24. Visual Studio 2015用にopencvをビルドする方法はありますか?
- 25. Visual StudioまたはParallel NsightでCUDAカーネルをデバッグする方法
- 26. Visual Studio 2012で環境変数を設定する方法は?
- 27. Xamarin.AndroidでVisual StudioのF#プロジェクトフォルダの制限を回避する方法はありますか?
- 28. Visual StudioでScalaプログラミングを行う方法はありますか?
- 29. Visual Studio 2017のインストール中にVisual Studio 2015 SDKを再利用する方法はありますか?
- 30. Visual Studio 2012にコマンドを追加する方法は?
Visual Studioで直接ウィンドウを確認してください。これはF#REPLではありませんが、非常に便利です。 –
lambdaを使用できないので、C#の直後のウィンドウはうまくいっています – bradgonesurfing
そうです、それは非常にイライラすることに同意します。しかし、私はまだそれを公正な量を使用して見つける。 –