4つのC#プロジェクトを含むVisualStudioソリューションがあります。メインプロジェクトからソリューションのサポートプロジェクトのコードにステップインしたいのですが、「ステップイン」キーを使用すると、他のプロジェクトへの呼び出しがスキップされます。サポートプロジェクトにブレークポイントを設定しましたが、それらは無視され、そのプロジェクトへの参照にステップインすることはできません。
すべてが「デバッグ」としてコンパイルされるように設定されており、Visual Studioが、ブレークポイントが以前にヒットしないことを警告するのを見ました。この場合は、ヒットしません。コードがデバッグされるように見えますが、実行時に、そのプロジェクトのコードをステップスルーしないようにVisualStudioに指示する設定がどこかにあります。私のソリューションの他のすべてのプロジェクトは問題なくデバッグします。
この動作を引き起こすためにどのボックスをチェックしましたか?
PDATE FOR CLARITY:「Justmycode」オプションは現在無効になっています。また、コードは同じソリューションのプロジェクトに属しているため、ここでは「コードだけ」オプションは適用されないと思います。ソースがないプリコンパイル済みコードにのみ適用されると思いましたが、プロジェクトにソースがあるため、このオプションは効果がないと思います。
確認する必要があるのは、サポートプロジェクトAssemblyがGACにインストールされていないことです。コマンドプロンプトを開き、次のことを実行して確認してください...
gacutil/l assemblyName
これが正しいかどうかはわかりませんが、「ツール>オプション>デバッグ>一般:マイコードだけを有効にする」の可能性があります。 (私は常にこれをオフのままにしておくことを好みます。)
アセンブリをデバッグする前に、GACにコピーする必要があることがわかりました。デバッグオプション「Justmycode」の下に、ユーザーコードがない場合にエラーを抑制するオプションがあり、次のエラーを抑制していました。
次のモバイルは、最適化を有効にして、またはデバッグ情報なしで構築されました。 (モジュール名とパス)このモジュールをデバッグするには、ビルド構成をデバッグモードに変更します。
デバッグ構成でビルドしていたので、そのエラーメッセージを検索して、次のメッセージを取得しました。
問題が解決しました。プロジェクトに参加するためにGACに含める必要がある理由はわかりませんが、そうです。私は理由を尋ねません、私はただ方法を尋ねます、そしてそれから私はそれをします...
サポートするプロジェクトにpdbファイルがあることを確認する必要があります。そうしないと、VisualStudioにコードをステップ実行するために必要な情報がありません。
いくつかの可能性:
「自分のコードだけ」にステップインするためのチェックボックスがあります。その目的は、Microsoftのフレームワークコードにステップインできないようにすることです(チェックボックスをオフにすることを選択しない限り)。
サポートするコードを再コンパイルして、デバッグしているコードが表示しているコードファイルと完全に一致することを確認してください。 VSはこれを考慮し、バージョンが一致しないコードファイルにブレークポイントを配置すると、ブレークポイントを無効にします。また、PDBファイルがDLLと同じディレクトリにあることを確認してください。
Visual Studio 2013でこの動作を引き起こす1つの方法は、ビルド構成をRelease
に設定することです。
それをDebug
に戻し、それが役立つかどうかを確認します。
ステップインしようとしているdllのソースコードがある場合は、次の手順を実行します。
次に、ブレークポイントを設定し、コードをデバッグします。コードにステップインできるようになります。
この問題の理由は、プロジェクトに参照として追加された古いdll(ソースコードなし)をプログラムがまだ参照しているためです。そのdllを削除し、dllのプロジェクト(dllのソースコード)を追加すると、VisualStudioはコードにステップインできるようになります。