Visual Studioでデバッグするとき、ブレークポイントを追加することがありますが、それは中空であり、VSは「現在、ブレークポイントはヒットしません。ソースコードは元のバージョンと異なります。」明らかにこれは私がデバッグすることができないようにします。
メッセージはいったいどういう意味ですか?元のバージョンは何ですか?ソリューションを開いたばかりで、コードにまったく変更を加えていない場合、どのようにして「元のバージョン」を作成できますか?
Visual Studioでデバッグするとき、ブレークポイントを追加することがありますが、それは中空であり、VSは「現在、ブレークポイントはヒットしません。ソースコードは元のバージョンと異なります。」明らかにこれは私がデバッグすることができないようにします。
メッセージはいったいどういう意味ですか?元のバージョンは何ですか?ソリューションを開いたばかりで、コードにまったく変更を加えていない場合、どのようにして「元のバージョン」を作成できますか?
回答:
それが言うように、「ソースコードは元のバージョンとは異なります」。
ソリューションエクスプローラー内のプロジェクトフォルダーを右クリックし、を選択しClean
ます。プロジェクトの新しいバージョンをビルドすると、ブレークポイントが再び機能します!
デバッグビルド構成でDLLプロジェクトをオフにした場合、新しいコードはビルドされません。
Build --> Configuration Manager ...
(VS2010で)に移動し、デバッグしようとしているコードを含むプロジェクトの現在のビルド構成がチェックされているかどうかを確認します。
Any CPU
オプションを選択し、それは再び動作します。
私にとっては、WebSiteプロジェクトに取り組んでいたときのことです。これらの一時フォルダーをクリーンアップした後、適切なコンパイラエラーが返されました。
C:\Documents and Settings\%username%\AppData\Local\Temp\Temporary
ASP.NET Files
C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET
Files
故意にサブフォルダーに移動したクラスファイルが、どういうわけかルートフォルダーに再表示されたことがわかり、最終的に問題を解決しました。VSは、私がもう一方を編集しているときに、その1つを使用していました。
%localappdata%
検索ボックスに入力すると、次の場所に直接C:\Documents and Settings\%username%\AppData\Local
あなたはこれをしたことがありますか?
ボックスをチェックして「はい」を押すと、プロジェクトがコンパイルされなくても、最後に成功したビルドが実行されます。これは、ブレークポイントを設定するたびに、そのエラーが発生することを意味します。
この値を変更してみてください:
に行く
元のバージョンと完全に一致するようにソースファイルを要求するのチェックを外します
リリースではなく、ソリューション構成でデバッグを選択します。
Visual Studioを閉じてソリューションを再度開くと、問題を修正できます。つまり、IDE自体のバグです(VS2010を実行しています)。
Visual Studioの複数のインスタンスを実行している場合は、問題のあるソリューションを実行しているインスタンスを閉じるだけで済みます。
この問題を解決する新しい方法がVisual Studio 2017 15.3.1から15.3.5で登場しました。EditorConfigを使用している場合、charset=utf8
オプションによりこれらの症状が発生ます。VSチームはこれを再現し、現在取り組んでいると述べています。
したがって、1つの修正はcharset=utf8
、.editorconfigファイルの行をコメント化することです。
編集:これはVS 15.5で修正される必要があります。
これは、(プロジェクト内のコードへのプロジェクト参照ではなく)バイナリへのファイル参照を使用していて、参照しているコンパイル済みバイナリがマシンの対応するソースコードと同期していない場合にもよく発生します。これは、ソース管理から新しいバージョンのバイナリをダウンロードしたときに、ソースコードを使用せずにダウンロードしたか、マシンにいくつかのバージョンのバイナリがあり、古いコピーを参照しているなどの理由で発生する可能性があります。問題は、プロジェクト参照を実用的な範囲で使用するのがもっともな理由です。
これは、デバッグ中またはデバッグセッション間でシステム時間が変更されたときに発生する可能性があります。
私にとってこの問題を修正したほとんど気付かない設定があります。ブレークポイントがヒットしない特定のソースファイルがある場合は、
なんらかの理由で私にはわかりませんでしたが、VS 2013はそこにソースファイルを配置することを決定し、その後、そのファイルのブレークポイントにヒットできなくなりました。これが「ソースコードが元のバージョンと異なる」の原因である可能性があります。
問題は、デバッグ情報がアセンブリと同期していないことです。解決策は簡単です:
トリックを行う必要があります!
(奇妙なことに、.pdbファイルを破棄せずに再構築すると、常に機能するとは限りません。変更された日付が更新されているのを確認できますが、チェーン(VS2013デバッガー、IIS、アセンブリキャッシュ)のどこかにこの変更が検出されません)
このメッセージは、アクティベータを使用していて、ブレークポイントを設定したアセンブリがまだロードされていない場合に表示されます。
アクティベータがアセンブリをロードすると、ブレークポイントが解決されます(アセンブリとデバッグシンボルが最新であると想定)。見やすい場所は、デバッグメニューのモジュールウィンドウです。そこでは、ファイルが属するアセンブリも探す必要があります。まず、アセンブリがロードされていることを確認します。次に、どこからロードされますか?次に、シンボルファイルが読み込まれます。ここでも、シンボルファイルはどこから読み込まれますか?最後に両方のバージョンを確認します。
私もこれに遭遇しました。私の問題を引き起こした条件:
以前のバージョンを開いて(VSはIISデバッグでこのインスタンスをポイントするかどうかを尋ねるプロンプトを出し、「はい」と答えました)、次に現在のバージョンを開きます(再びIISプロンプトに「はい」と応答しました)。 )、その後、以前のバージョンでデバッグを試みます。
解決するには、以前のバージョンと意図したバージョンを閉じて再度開き、デバッグソースとしてもう一度アサートしました。
デバッグモードを起動する前にブレークポイントを実行するのではなく、デバッグモードで実行中にブレークポイントを無効にして再設定してみてください。
あなたが持っている場合は、あなたのソリューションに複数のプロジェクトを、正しいプロジェクトは次のように設定されていることを確認してくださいStartUp Project
。特定のプロジェクトをソリューションのスタートアッププロジェクトとして設定するには、プロジェクトを右クリックして、を選択しますSet As StartUp Project
。
スタートアッププロジェクトを正しく設定した後、スレッドが目的のブレークポイントに到達しました。
vs2017の32ビットビルドでこれを体験しました。
ソリューションがまったく役に立たなかった。私は再起動し、IDEファイルをクリアし、ビルドされたソリューションをクリーンアップし、git repoからプルして、ソリューションを再構築して無用になりました。
私はnugetから64ビットの依存関係を取得していました。アセンブリを使用するとすぐに、ソースは最終的な実行可能ファイルに組み込まれなくなり、代わりにIDEキャッシュソースがビルドされました。
nuget構成を削除し、参照されたアセンブリを削除し、ソースをダウンロードし、log4netを手動で構築し、署名し、プロジェクトのフォルダーに追加し、参照を追加して、再びデバッグできました。
これは骨の折れる作業でした。回答リストに載って、すべての人に見てもらいたいと思います。
編集:IDEの設定で[ビルドエラー時にプロンプトを表示する]オプションがオンになっているにもかかわらず、ビルド中にエラーは発生しませんでした。
レイヤードアーキテクチャプロジェクトのいくつかのプロジェクトで同じ問題が発生しましたが、問題は、選択したプロジェクトのビルドチェックボックスがオンになっていない構成にありました。したがって、この問題は1つのプロジェクトで修正されました。
他の1つのレイヤーでは、構成でビルドが有効になっていても、同じ問題が発生していました。プロジェクトのクリーニングを再開するなど、他のすべてのオプションを実行しましたが、どれも役に立ちませんでした。最後に、その特定のプロジェクトのビルドチェックボックスをオフにし、クリーンアップして再ビルドしました。再びチェックボックスをマークし、同じことを行いました。その後、問題が修正されました。
お役に立てれば..
私の場合、VS 2012で実行中のプロセスにアタッチしていました。アタッチするときに、さまざまなモード(ネイティブ、スクリプト、Silverlight、マネージド2.0、マネージド4.0など)でデバッグするオプションが表示されます。デフォルトでは、デバッガーはモードを自動的に選択します。ただし、自動は常に正しい選択を行うとは限りません。プロセスに複数のタイプのコードが含まれている場合は、デバッガーが正しいコードを使用していることを確認してください。
私にとってうまくいったのは、ソリューションプラットフォームをx86からAny CPUに変更することでした。Anyに変更した後、停止アドレスを設定し、Webサイトを実行してページを開き、ボタンをクリックすると停止しました。私はサイトを閉じ、x86に戻し、同じシーケンスを正常に実行しました。
Windows 7で、Visual Studio Express 2010(Windows XP SP3の互換モードを使用するオプションを有効にしている場合)、このエラーが発生することがあります。
私はオプションのチェックを外しました、そしてそれは再び完璧に働きました。VSまたは実行可能ファイルへのショートカットを右クリックし、プロパティを選択してから互換性を選択します。
最初にコマンドラインから試しました。
コマンドラインから一時ファイルを削除するも機能しました。
C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files> rd / s root
「コードのみを有効にする」を無効にすると[ツール]-> [オプション]-> [デバッグ]-> [全般]で[ ]オプション
問題は私にとって解決しました。これはWCFアプリケーションであり、ashxページをデバッグしようとしていました。 http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx