2015-12-31 52 views
40

Visual Studio 2015の式評価ツールで「式評価ツールの内部エラー」という問題が発生しました。調査の結果、読み込まれたアセンブリが原因であることがわかりました反射を使ってこのアセンブリは例外をスローしませんが、それ以降はエクスペリエントが失敗します。 これは私がロードする唯一のアセンブリではありません、評価者に影響を与えないいくつかの良いものがあります。"式評価ツールの内部エラー"

この問題を解決するには、[メニュー>オプション>デバッグ>管理された互換モードを使用]を選択する必要がありましたが、これは '編集&続行'機能を無効にします。コーザーアセンブリの

プロパティ:

  • その名前は本体 と同じである(私はその名前を変更したが何も起こらなかった)
  • 私のプロジェクトのすべてがすべてDOTNET 4.5
  • を使用していますルートネームスペースは同じ (すべてのアセンブリがso)

ありがとう!

+1

I同じ問題を抱えているレガシーオプションはそれを修正しませんでした。 – toroveneno

+0

同様の質問[WCFサービスコード(MSVS 2013)をデバッグしようとしているときに[ウォッチを追加]機能の[式評価ツールで内部エラーが発生する](http://stackoverflow.com/q/21854426) –

+0

同じことが起こりますWeb API 2コントローラをテストしようとすると... – Marcus

答えて

56

これは、エクスプレッションエバリュエーターのバグのようです。より良い回避策として、「管理された互換モードの使用」をチェックするのではなく、「レガシーC#およびVB式評価ツールの使用」にチェックを入れてください。これにより、編集と続行、および最後のいくつかのリリースで追加された他の機能を引き続き使用できるようになります。

「エクスプレッションエバリュエーターの内部エラー」に関して、ヘルプ - >フィードバックの送信 - >問題の報告で問題を開いてください。これにより、将来のリリースで問題を解決するのに役立ちます。

+1

私は同じ問題を抱えていました。 – Donnelle

+3

レガシーエバリュエーターを使用する際にどのような機能が失われますか? –

+0

レガシーオプションが自分のマシンで有効になっていません。この問題の別の解決法がありますか? – Pallavi

22

提供しているソリューションをそのまま拡張しています。Patrick Nelsonお問い合わせのVisual Studio 2015+の手順は次のとおりです。

ゴーにツール - ..>一般...レガシーC#の表現を見つけるためにスクロールダウン - オプション]> [オプション VS Options

、ここデバッグを選択オプション:

詳細は、ここに提供されています

Switching to Managed Compatibility Mode

注:レガシーモードへの切り替えから生じるいくつかの重大な欠点もあります。特に実装されたインタフェースの実行時反映はほとんど不可能または非常に不便になります。エラーを投げる他のReflectionメソッドもあります。

+1

旧式のC#式を有効にしていただきありがとうございました。 –

0

私のケースでは、リスト<のラムダ式を評価しようとしていましたが、このようなエラーがありました(「エクスプレッションエバリュエーターの内部エラー」)。 VS2015を使用していたので、ラムダ式が許可されました。表現型評価者はLinqライブラリが欠けていたことが判明しました。私は追加しました

using System.Linq; 

私の現在のクラスとvoilà!評価されたラムダ。

1

デバッグモードではなく、リリースモードでデバッグしていたときに、「エクスプレッションエバリュエーターで内部エラーが発生しました」というエラーが発生しました。本番環境に公開するときにリリースに変更し、デバッグに戻すのを忘れてしまった。

Release Mode

Debug Mode

1

私はオプション働い "使用は互換モードで管理" のチェックのために。プロパティと値の代わりに変数の上にカーソルを置いたときに疑問符も表示されました

0

[DebuggerBrowsable]属性の使用を確認してください。私はVisualStudio 2017 15.5で最小のケースを見つけ、hereと投稿しました。

この場合、同じ名前のフィールドをオーバーライドするプロパティに適用される[DebuggerBrowsable]属性に関連する式評価ツール(EE)クラッシュが表示されます。これは、のアカウントの一部であり、人々がそこで経験しているケースの割合はですが、修正されるまでこの特定の問題によるものの数を知る方法はありません。

完全かつ完全なデモンストレーションの例では、画像に示されている(との良好な指標については下記を含む)画像内のコードの

enter image description here

機械可読コピーされます。

using System; 
using System.Diagnostics; 

class Program { static void Main() => new _derived(); } 

abstract class _base 
{ 
    [DebuggerBrowsable(DebuggerBrowsableState.Never)] 
    public Object trace; 
}; 

class _derived : _base 
{ 
    public _derived() => Debugger.Break();  // <-- vs2017 EE crash when stopped here 

    [DebuggerBrowsable(DebuggerBrowsableState.Never)] 
    new public Object trace => base.trace; 
}