回答:
私は同じ問題を抱えていましたが、解決策は異なりました。VS 2015 Update 1に更新しましたが、問題はまだ残っています。
VSの前のエディションでは、デバッグを開始すると、デバッグモードでビルドが自動的にトリガーされました。しかし、VS2015ではそうではありません。
したがって、最後のビルドがリリースモードでデバッグを試みた場合、ブレークポイントは機能しません。
最初に手動でデバッグモードでビルドしてから、デバッグを開始する必要があります。
私も同じ問題を抱えていました。
プロジェクトプロパティの[ビルド]タブの[コードの最適化]オプションを無効にすることで解決しました。
これはささいなことのように思えるかもしれませんが、あなたが言及したのと同じ問題を何度も繰り返した後、私がデバッグしようとしたときに、ビルドが「デバッグ」ではなく「リリース」に設定されていることがわかりました。「デバッグ」のソリューションを再ビルド"修正し、ブレークポイントを通常どおりに設定できました
バインドに失敗するブレークポイント、および[ローカル]ウィンドウで評価されない特定のローカル変数に関する同様の問題がありました。最後に修正されたのは、[オプション]-> [デバッグ]-> [一般]タブの[モジュールのロード時にJIT最適化を抑制する(管理のみ)]オプションを有効にすることでした。一度設定すると問題なくバインドできました。
私はこの問題を抱えていました。パフォーマンスプロファイリングセッションをWeb.config
実行して、パフォーマンスモニターの設定でファイルを変更しました。
<appSettings>
<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Team Tools\Performance Tools\vsinstr.exe"/>
</appSettings>
<compilation debug="true" targetFramework="4.5"
assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
...
</compilation>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<codeBase version="16.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="VsWebSite.Interop" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<codeBase version="8.0.0.0" href="file:///D:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio/Shared/Common/VSPerfCollectionTools/vs2019/VsWebSite.Interop.DLL"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
これは、ブレークポイントで停止する私の能力を壊しました。元のWeb.configに戻した(パフォーマンスプロファイラーの設定を削除した)と、ブレークポイントが再び機能し始めました。
<add key="Microsoft.VisualStudio.Enterprise.AspNetHelper.VsInstrLocation" value="C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Team Tools\Performance Tools\vsinstr.exe"/>
昨日も同じ問題がありました。「クリーンソリューション」機能を使用しました。
私は自分のソリューションでパフォーマンスを実行し、それが私のweb.configに追加されました
<compilation debug="true" targetFramework="4.5" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
これassemblyPostProcessorType
が問題です、私はそれを削除し、それが私の問題を解決しました
私はこれが古い投稿であることを知っていますが、上記の他のすべてのトリックがうまくいかない場合は、デバッグしようとしているイメージが最新のものであることを確認してください。何らかの理由で、.NET Coreプロジェクトを公開してRPi上のRaspberry Piの「unzip」に転送した後、作業ディレクトリ内の一部のDLLがコピーおよび上書きされませんでした。すべて正常であると考えてデバッガーをアタッチすると、いくつかのブレークポイントがヒットし、他のブレークポイントはヒットせず、一部のブレークポイントで「バインドできません」エラーが発生しました。解凍の問題を解決すると、すべてのブレークポイントとシンボルが戻ってきました。これがお役に立てば幸いです。
私も同じ問題を抱えていましたが、デバッグツールバー(通常はメニューのすぐ下)で "Debug"が "Release"に変更されたことに気づきませんでした。だから私はそれを「デバッグ」に設定しました。
Microsoft Visual Studio 2015 Update 3の新しいアップデート(KB3165756)により、ASP.NET Coreアプリケーションのcshtmlファイルに埋め込まれたC#コードのローカル変数を検査しようとするブレークポイントの問題が修正されました。
ステップ1、明白なものを除外する:
ステップ2 C ++プロジェクトの場合:
次のプロジェクトプロパティを確認します。
手順1をもう一度実行します
__debugbreak()を追加してみてください。このステートメントは、中断するソースファイルに挿入する必要があります。
ステップ2 C#プロジェクトの場合:
別のマシンでソリューションを開いてみてください。別のマシンにブレークポイントをバインドできる場合は、VSまたはOSに問題があることを意味します。
ステップ3、VSが最新であることを確認します。
VS2013 RTMとVS2015 Update 1およびUpdate2では、このような問題が報告されています。
VSで、Tools / Extensions&Updates / Updates / Product Updatesに移動し、実行しているバージョンを確認します。更新が必要な場合は、そこに表示されます。
ステップ4、OSが最新であることを確認します。
最後に、Win 10 OSを実行している場合、ビルド14251に存在するこの問題に関して報告されたバグがありました。これは、ビルド14257(およびそれ以上)で解決されました。
私は似たような問題に遭遇しましたが、私が直面している問題に当てはまる答えはありませんでした。ただし、質問とは異なり、バインドに失敗したというメッセージは表示されません。ブレークポイントがヒットすることはありません。うまくいけば、これはWCFで壁に頭をぶつけて将来誰かに役立つことでしょう。
TL / DR:
SOAPメッセージで、不正なデータを含むレコードがあり、ブレークポイントがヒットしませんでした。
全文:
別のチームのWSDLに基づくWCFサービスがあります。私の定義ではありません。それを制御することはできません...このサービスを通じて他のチームからメッセージを受け取ります。私の場合、メッセージを受信し、データベースのメッセージログテーブルにメッセージを記録できます(これは、サービスメソッドが呼び出される前に発生します)、サービスメソッドが呼び出されているようです(呼び出されていない可能性があります)。 a 202受け入れ。メソッド呼び出し中にデータがデータベースに保存されないことを除いて、通信は機能しています。
サービスが成功の応答を返すので、私はhttpおよびトランスポート関連の問題を除外しました。
そこで、VS2015を起動してサービスをデバッグしました。問題のメッセージは大きいですが、私が期待する範囲内にあります。サービスメソッドの最初の行にブレークポイントを設定して大きなメッセージを送信しましたが、ブレークポイントに到達しませんでした。非常に同じ実行インスタンスで機能していることがわかっている小さなメッセージを試してみましたが、ブレークポイントは正常にヒットしました。したがって、構成内のすべてが正常に見えました。メッセージのサイズに何かあるのではないかと思いました。
私は見つけることができるすべてを試しました-デバッグ構成にあることを確認し、クリーンで再構築し、手動でデバッガーをw3wpプロセス(VSが既にありました)にアタッチしDebugger.Break()
、ブレークポイントの代わりに使用し、複数のスタートアッププロジェクトを設定し、テストプロジェクトをアンロードしましたそのため、サービスプロジェクトは.NETの更新、VS2015の再起動、再起動、ローカルIISからIIS Expressへの切り替え、そして保証された最新のWSDLでサービスを再作成することだけでした。重要なことは何もありません。ブレークポイントはヒットしませんでした。
悪いデータのレコードが1つ見つかるまで、大きなメッセージのレコードを1つずつ取り除かなければなりませんでした。私の場合は、2つのDateTimeフィールドに値がない1つのレコードでした。この1つのレコードだけが含まれるメッセージを作成して送信したところ、ブレークポイントにヒットしませんでした。これらの2つのDateTimeフィールドに値を指定し、期待どおりに発生したブレークポイントで同じ(固定)メッセージを送信したとき。
私はすべてのCLR例外を有効にし、.pbdファイルが見つからないこと以外は何も起動しませんでした。WCFは、不良レコードを含むリクエストを喜んで送信しました。契約に基づいてWCFがそれを送信するべきではなかったと言っているのではなく、不良レコードが原因でブレークポイントがヒットしなかっただけです。
デバッグを有効にするには、web.configファイルを変更する必要がありました。これを変える:
<compilation debug="true" targetFramework="4.5.2" assemblyPostProcessorType="Microsoft.VisualStudio.Enterprise.Common.AspPerformanceInstrumenter, Microsoft.VisualStudio.Enterprise.AspNetHelper, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
に:
<compilation debug="true"/>
ここで提案されたすべてを試しました。最終的に、プロジェクトのプロパティ-> Webの「特定のページ」をローカルの開始URL、ページ、クエリパラメータに設定します。クリーンアップしてデバッグモードで再構築すると、ブレークポイントに到達しました。
私は以前の回答を超える見て、ウィルの@ answearは、私はどこ無効にいくつかのデバッグ機能を見つかったファイル、私が持っていた主な問題を修正し、他の編集にできることと続けるが、AssemblyInfo.csを詳しく見てみます。
次に、古いデバッグ属性を削除し、別のプロジェクトから取得した以下を追加しました
#if DEBUG
[assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.DisableOptimizations | System.Diagnostics.DebuggableAttribute.DebuggingModes.EnableEditAndContinue | System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | System.Diagnostics.DebuggableAttribute.DebuggingModes.Default)]
#endif
それでも、これが最善の方法ではないように思います。