サポートされているコード変更 (C#)
更新 : 2007 年 11 月
このトピックの内容は、次の製品に該当します。
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro/Team |
表の凡例 :
対象 |
|
該当なし |
|
既定で非表示のコマンド |
エディット コンティニュでは、メソッドの本体内で行ったほとんどの種類のコード変更を処理できます。しかし、メソッドの本体外で行った変更の大部分やメソッドの本体内で行った一部の変更は、デバッグ時に適用できません。このようなサポートされていない変更を適用するには、デバッグを停止し、新しいバージョンのコードを再起動する必要があります。
デバッグ セッション中に C# コードに適用できない変更は、次のとおりです。
現在のステートメントまたはその他のアクティブ ステートメントに対する変更。
アクティブ ステートメントには、現在のステートメントを取得するために呼び出される、呼び出し履歴上の関数内に存在するすべてのステートメントが含まれます。
ソース ウィンドウ内では、現在のステートメントは黄色の背景で示されます。その他のアクティブ ステートメント (読み取り専用) は、網かけの背景で示されます。これらの既定の色は、[オプション] ダイアログ ボックスで変更できます。
以下のようなグローバル シンボルの変更。
新しい型の追加
型へのメソッドの追加
型のシグネチャの変更
型へのフィールド、イベント、またはプロパティの追加
匿名メソッド、または匿名メソッドを含む任意のメソッドの編集。これらのメソッドは、網かけの背景で示されます。
新しい匿名メソッドの追加。
属性の追加、削除、変更。
using ディレクティブの追加、削除、変更。
ローカル変数の削除または変更。ローカル変数の追加は可能です。
アクティブ ステートメントの周囲への foreach、using、または lock の追加。
yield return ステートメントまたは yield break ステートメントを含むメソッドの変更。
匿名メソッドで初期化されるフィールドを持つコンストラクタの変更。
アンセーフ コード
アンセーフ コードを変更する場合、セーフ コードを変更するときと同じ制限に加えて、もう 1 つ追加の制限が適用されます。
- エディット コンティニュは、stackalloc 演算子を含むメソッド内に存在するアンセーフ コードへの変更をサポートしません。これは、アクティブ メソッドだけに当てはまります。詳細については、「アクティブなステートメント」を参照してください。
例外
エディット コンティニュは、catch ブロック、finally ブロック、および try ブロックに対する変更をサポートします。ただし、現在呼び出し履歴に存在するメソッドなど、アクティブ メソッド内のブロックについては、いくつかの例外があります。
アクティブな関数が呼び出し履歴の最新の関数である場合、エディット コンティニュは次の編集をサポートしません。
アクティブ ステートメントの周囲への catch ブロックまたは finally ブロックの追加
入れ子 (7 レベル以上) の例外ハンドラの追加
アクティブな関数が呼び出し履歴の最新の関数でない場合、エディット コンティニュは次の編集をサポートしません。
アクティブ ステートメントの周囲への catch ブロック、finally ブロック、または try ブロックの追加
入れ子 (7 レベル以上) の例外ハンドラの追加
アクティブなステートメントを含む try ブロック内のコードの変更
サポートされていないシナリオ
次のデバッグ シナリオでは、エディット コンティニュを使用できません。
LINQ コードのデバッグ。詳細については、「LINQ でのエディット コンティニュ」を参照してください。
混合モードでの (ネイティブ/マネージ) デバッグ
SQL デバッグ
ワトソン博士のダンプのデバッグ
未処理の例外を受け取った後のコード編集 ([ハンドルされていない例外で呼び出し履歴をアンワインドする] がオンでない場合)
埋め込まれたランタイム アプリケーションのデバッグ
[デバッグ] メニューの [開始] をクリックしてアプリケーションを実行する代わりに [アタッチ先] を使用して行うアプリケーションのデバッグ
最適化されたコードのデバッグ
マネージ コードのデバッグ (デバッグ対象が 64 ビット アプリケーションである場合)。エディット コンティニュを使用する場合は、デバッグ対象を x86 に設定する必要があります ([<プロジェクト> のプロパティ] の [コンパイル] タブにある [ビルドの詳細設定])。
ビルド エラーによって新しいバージョンのビルドが失敗した後の旧バージョンのデバッグ