15

Windows 7 と Visual Studio 2010 を使用して、C# カスタム UserControl を作成しています。何週間もコード ビューでコーディングしていましたが、最近、デザイン モードに切り替えようとすると、Visual Studio がハングし、"応答しません" と表示されました。1時間待っても何も起こりません。閉じるボタンをクリックすると、「待って、閉じて、再起動して、Microsoft に情報を送信しますか?」というダイアログが表示されます。

デザイナーが実行しようとしているコードを (スタック) トレースする方法はありますか? 設計時のトレース メッセージまたはブレークポイントでしょうか。

4

3 に答える 3

24

Visual Studio 2010 の場合、この回答が役に立ちます。

Visual Studio 2012 以降では、Visual Studio Designer プロセスを実際にデバッグする必要があります。デバッグするプロセスは XDesProc.exe と呼ばれます

ここに画像の説明を入力してください.

私は次のことを行います:

  • どちらも同じソリューションを指している Visual Studio の 2 つのインスタンスを開く
  • 両方のウィンドウをすべて閉じます。
  • タスク マネージャーですべての XDesProc.exe インスタンスを強制終了します。
  • Visual Studio インスタンス A で、任意のビューを開きます (例外があるビューではありません)。これにより、Visual Studio インスタンス A の XDesProc デザイナー プロセスが開始されます。
  • Visual Studio インスタンス B で、XDesProc.exe のプロセスにアタッチし、ブレークポイントを設定するか、例外でブレークを設定します。
  • Visual Studio インスタンス A で、ビューを開きます (例外があります)。
  • Visual Studio B は壊れるはずです。

ここに画像の説明を入力してください

見逃した場合、または手順をやり直す必要がある場合は、手順 (2) の「すべてのウィンドウを閉じる」からやり直して、XDesProc インスタンスを強制終了します。場合によっては、デザイナーが一度起動して値をキャッシュすることがあります。問題を追跡するには、クリーンで例外のないデザイナーが必要です。

于 2014-03-24T11:32:46.150 に答える
16

Visual Studio 2010/2013 の場合

Visual Studio デザイナー自体をデバッグできます。Visual Studio の 2 番目のインスタンスを開き、 を使用Tools -> Attach To Processして最初の Visual Studio (つまり ) にアタッチしdevenv.exeます。

Visual Studio インスタンス #2 (Attach To Process を実行したインスタンス) で: ユーザー コントロールのコンストラクターにブレークポイントを設定します。

Visual Studio インスタンス #1 (スタックする元のインスタンス) で: ユーザー コントロールがあるデザイナーを開くと、VS#2 のブレークポイントがヒットします。

Visual Studio 2012 の場合

デバッグしたいプロセスはXDesProc.exe- Dr. ABT's answerを参照してください。それ以外の場合、手順は Visual Studio 2010/2013 と同じです。

于 2012-12-04T08:03:37.347 に答える
2

答えは、チュートリアル: デザイン時のカスタム Windows フォーム コントロールのデバッグ(MSDN) にあります。

于 2013-08-02T13:40:42.923 に答える