実行時にブレークポイントを有効または無効にするにはどうすればよいですか? プラグインをデバッグする目的で、他の .net コードを実行できるテスト ワークベンチ アプリケーションを作成しています。ワークベンチ アプリ自体はデバッグ可能 (DebuggableNonUserCodeAttribute) ではありませんが、呼び出すユーザー コードはデバッグ可能である必要があります。ただし、実行時の特定の状況下では、ユーザー コードのブレークポイントは受け入れられません。
これを達成するさまざまな方法を想像できますが、多くは不可能かもしれません。
1) プログラムでデバッガーをアタッチおよびデタッチする
2) プログラムですべてのブレークポイントを有効または無効にする (アセンブリまたはクラスにローカライズすることをお勧めします)
3) 実行時に DebuggableNonUserCodeAttribute を使用してメソッドを動的に装飾および装飾解除します。
4) 何らかの方法で、選択したスタックフレームを超えたスレッドのコード ブランチ全体を、デバッガーに対して「ブレークポイント不可」としてマークします。DebuggableNonUserCodeAttribute は、メソッドまたはクラス内でのみ機能するように見えますが、ダウンストリーム コードのデバッグ可能性には影響しません。
編集: 明確にするために: 実行時に、エンド ユーザー コードの同じ部分がホスティング実行可能ファイルによって複数回実行されます。ブレークポイントを尊重する必要がある場合と、そうでない場合があります。ユーザーがこの機能のためにコードを変更することを要求したり、条件付きブレークポイントを設定することを要求したりすることは不適切です。