web-dev-qa-db-ja.com

デバッグ中に式を評価できない

Asp.netコードをデバッグし(IISに対して実行し、Visual Studio 2013を使用)、ブレークポイントでクイックウォッチを使用して変数を評価しようとすると、「式を評価できない」ということがよくあります。

asp.netプロジェクトフォルダから.suoを削除すると、問題が解決するようです(ソリューションをリロードした後)

これは認識されているバグですか? Visual Studio 2013で複数のマシンを使用してこれを実現しました。

43
Tim

今日はVS2013でそれに直面しました。

[ツール]-> [オプション]-> [デバッグ]-> [一般]-> [管理互換モードを使用]の一番下までスクロールし、オプションを選択します。

ブログのスクリーンショット(以下のURL): enter image description here デバッグを再開します。それが他の人を助けることを願っています。

私を助けたのは以下です!

88
Shubh

C#デバッグエンジンは、式を評価するためにCLRデバッガーに大きく依存しています。そのメッセージは、CLRが単純な評価を実行できない状態にあることを示しており、その理由には以下が含まれます。

  • ローカル変数は最適化されて離れています
  • スレッドはGCの安全でないポイントで停止しています
  • 前回の関数呼び出しにより、デバッガーが悪い状態になり、それ以上の評価が不可能になりました
7
JaredPar

これらのオプションの一部は時間とともに変化します-そして、他の回答で最高評価のソリューションはもはや存在しないようです-オプションダイアログを検索すると役立ちます。

今、私が見つけたASPNET Coreプロジェクトのために this であり、それを有効にすると役立つようです:

enter image description here

モジュールのロード時にJIT最適化を抑制する(マネージドのみ):デバッガーがアタッチされている間にモジュールがロードされ、JITがコンパイルされる場合、マネージコードのJIT最適化を無効にします。最適化を無効にすると、パフォーマンスは低下しますが、いくつかの問題をデバッグしやすくなります。 Just My Codeを使用している場合、JIT最適化を抑制すると、ユーザー以外のコードがユーザーコード( "My Code")として表示される可能性があります。詳しくは、JITの最適化とデバッグを参照してください。

それが役に立たないようであれば、再度オフにすることをお勧めします。

1
Simon_Weaver

特定のプロジェクトでこれに直面しており、その理由はCostura.Fody(すべてのDLLを実行中のアセンブリに埋め込む)です。

この場合、 Costura.Fody。 を無効にできます

  1. FodyWever.xmlからCosturaをコメントアウトします

    <Weavers>
      <!--<Costura />-->
    </Weavers>
    
  2. * .csprojでクリーンリファレンスターゲット(含まれている場合)を無効にします。

    <!--<Target Name="CleanReferenceCopyLocalPaths" AfterTargets="AfterBuild">
        <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%
         (DestinationSubDirectory)%(Filename)%(Extension)')" />
        <Exec Command="DeleteEmptyDirectory.bat" />
      </Target>-->
    
0
sudhAnsu63