これは実際にはこの質問の別の部分です。
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が最適化済みとして表示されます:いいえユーザーコード:はいシンボルステータス:読み込まれたシンボル
すでに他の回答で参照されている2つの可能性:
Visual Studioの2つのインスタンスでプロジェクトを開いているときにも同じ問題が発生しました。デバッグしていないプロジェクトでファイルがロックされ、「このファイルはソースエディタの外部で変更されています」と通知されました。デバッグしていないソリューションの変更を受け入れた後、エラーが発生しなくなり、デバッグしているソリューションでブレークポイントにヒットしました。
このエラーには多くの原因が考えられますが、これで解決しました。
私は同じような経験をしましたが、それを処理する方法は、ルーチンが呼び出された場所にブレークポイントを置き、ルーチンが実行していることを正確に理解するまでルーチンにシングルステップインすることでした。私の場合、ルーチン内のすべてのコードの実行を妨げていたリターンがあったため、オプティマイザはそれをすべて破棄しました。時にはそれは愚かなことですよね?とにかく、コールスタックのより高いレベルから始めて、問題のあるルーチンにステップインすると、問題の理由がより明確になる可能性があります。
DLL最適化についての更新に加えて、ブレークポイントが機能しない場所で指定した行は、switchステートメント全体が他に何を割り当てるかどうかを決定しないため、最適化されます。決して使用されず、switchステートメントの範囲を超えて存続しない変数への値です。そのため、コンパイラーは、switchステートメントのコードをまったく生成しないか、まったく何もしないか、またはjitが削除されるだけです。同じ理由で実行時にそれを。
CRMに対してデバッグしている場合、この問題のもう1つの原因は、プラグイン登録ポイントを更新していないことです。新しいDLLをターゲットマシンにコピーし、DLL CRMは使用しない)のプロセスにリモートでアタッチしても、CRMはデータベースから古いバージョンのコピーを取得しようとします。プラグイン登録を再実行します。
1日半も無駄にしてしまったエラー!
プロジェクトのデバッグの実行を開始するとこのエラーが発生し、再構築後にエラーが消えた後、[すべてのプロジェクトを消去]と[すべてのプロジェクトを再構築]で解決しました。