web-dev-qa-db-ja.com

共通言語ランタイムがブレークポイントを設定できませんでした

これは実際にはこの質問の別の部分です。

エラー設定ブレークポイントですが、デバッグ中の一部の行のみ

2010でCRM 2011プラグインをリモートデバッグしています。

いくつかの場所を除いて、コード全体でブレークポイントを設定できるソースファイルの1つです。

ブレークポイントを設定しようとすると、「次のブレークポイントを設定できません:」および「共通言語ランタイムがブレークポイントを設定できませんでした」というエラーが表示されます。

protected override void ExecutePlugin()
{
    SetStateResponse response = new SetStateResponse(); // Breakpoint works

    // Message switch
    switch (_crmMessage) // Breakpoint error
    {
        case CrmPluginMessageEnum.Create:

        Entity pimage = null; // Breakpoint error
        if (_context.PostEntityImages.ContainsKey("postcreate")) // Breakpoint works
            pimage = _context.PostEntityImages["postcreate"]; // Breakpoint error

        break; // Breakpoint error
        }
} // Breakpoint error

[〜#〜] update [〜#〜]また、モジュールウィンドウでは、dllが最適化済みとして表示されます:いいえユーザーコード:はいシンボルステータス:読み込まれたシンボル

29
user1231231412

すでに他の回答で参照されている2つの可能性:

  1. リリースビルドはコードを削除または最適化するため、リリースビルドの代わりにアセンブリのデバッグビルドを使用していることを確認してください。
  2. Visual Studio(プロジェクトのプロパティタブ)でアセンブリを展開するたびにバージョンを更新していることを確認してください。バージョンをインクリメントすると、CRMは必ず古いアセンブリバージョンをアンロードし、IISリセットせずに新しいバージョンを再ロードします。
34
Josh Painter

Ctrl+Bショートカットを使用してブレークポイントを作成したときにこの問題が発生し(添付の画像を参照)、存在しない関数の名前を入力したため、ブレークポイントが追加されましたが、エラーが発生しました。その後、プロジェクトを開始するたびに、そのエラーが表示されました。

解決策:ブレークポイントをブレークポイントリスト(添付の画像の左下を参照)から削除し、ブレークポイントセクションを選択してから、アイテムを選択して[削除]をクリックします。 enter image description here

ブレークポイントセクションが表示されない場合

Ctrl+Alt+B

4
Mayer Spitzer

Visual Studioの2つのインスタンスでプロジェクトを開いているときにも同じ問題が発生しました。デバッグしていないプロジェクトでファイルがロックされ、「このファイルはソースエディタの外部で変更されています」と通知されました。デバッグしていないソリューションの変更を受け入れた後、エラーが発生しなくなり、デバッグしているソリューションでブレークポイントにヒットしました。

このエラーには多くの原因が考えられますが、これで解決しました。

4
Brian G

私は同じような経験をしましたが、それを処理する方法は、ルーチンが呼び出された場所にブレークポイントを置き、ルーチンが実行していることを正確に理解するまでルーチンにシングルステップインすることでした。私の場合、ルーチン内のすべてのコードの実行を妨げていたリターンがあったため、オプティマイザはそれをすべて破棄しました。時にはそれは愚かなことですよね?とにかく、コールスタックのより高いレベルから始めて、問題のあるルーチンにステップインすると、問題の理由がより明確になる可能性があります。

0
Andy

DLL最適化についての更新に加えて、ブレークポイントが機能しない場所で指定した行は、switchステートメント全体が他に何を割り当てるかどうかを決定しないため、最適化されます。決して使用されず、switchステートメントの範囲を超えて存続しない変数への値です。そのため、コンパイラーは、switchステートメントのコードをまったく生成しないか、まったく何もしないか、またはjitが削除されるだけです。同じ理由で実行時にそれを。

0
Ben Robinson

CRMに対してデバッグしている場合、この問題のもう1つの原因は、プラグイン登録ポイントを更新していないことです。新しいDLLをターゲットマシンにコピーし、DLL CRMは使用しない)のプロセスにリモートでアタッチしても、CRMはデータベースから古いバージョンのコピーを取得しようとします。プラグイン登録を再実行します。

1日半も無駄にしてしまったエラー!

0
Jarvis Brand

プロジェクトのデバッグの実行を開始するとこのエラーが発生し、再構築後にエラーが消えた後、[すべてのプロジェクトを消去]と[すべてのプロジェクトを再構築]で解決しました。

0
yu yang Jian