J'ai rencontré un problème dans l'évaluateur d'expression de visual studio 2015 qui disait "Erreur interne dans l'évaluateur d'expression". Après quelques investigations, j'ai constaté que cela était dû à un assembly chargé en réflexion. Cette assemblée ne lève aucune exception, mais après cela, vs évaluateur échouera . Ce n’est pas la seule assemblée que je charge, il y en a de bonnes qui ne influencent pas l’évaluateur.
Pour résoudre ce problème, je devais cocher 'Menu> Options> Débogage> Utiliser le mode de compatibilité gérée', mais cela désactive la fonctionnalité 'Editer et continuer', que puis-je faire?
Propriétés de la cause Assemblage:
Merci!
Cela ressemble à un bug dans l'évaluateur d'expression. Pour une meilleure solution de contournement, au lieu de cocher la case "Utiliser le mode de compatibilité managé", cochez la case "Utiliser les évaluateurs d'expression C # et VB existants". Cela devrait vous permettre de continuer à utiliser Éditer et continuer, ainsi que d'autres fonctionnalités ajoutées au cours des dernières versions.
Pour ce qui est de "l'erreur interne dans l'évaluateur d'expression", pouvez-vous ouvrir un problème en allant dans Aide -> Envoyer un commentaire -> Signaler un problème? Cela nous aidera à résoudre le problème dans les prochaines versions.
En prolongeant la solution fournie par Patrick Nelson. Pour Visual Studio 2015+, les étapes sont les suivantes.
Allez dans Outils -> Options
et ici sous Options, sélectionnez Debug -> General et faites défiler vers le bas pour trouver l’option ... legacy C # expression ..
Plus d'informations sont fournies ici:
Passage en mode de compatibilité gérée
Remarque: Le passage au mode hérité présente également de graves inconvénients. Surtout Runtime Reflection des interfaces implémentées devient presque impossible ou extrêmement gênant. Il existe également d'autres méthodes de réflexion qui génèrent des erreurs.
Pour moi, cocher l'option "Utiliser le mode de compatibilité géré" a fonctionné. Je voyais aussi des points d'interrogation lorsque je survolais des variables au lieu de propriétés et de valeurs
Vérifiez votre utilisation de l'attribut [DebuggerBrowsable]
; J'ai trouvé un cas minime dans VisualStudio 2017 15.5 et l'ai posté ici .
Dans ce cas particulier, le crash de l'évaluateur d'expression (EE) apparaît lié à l'attribut [DebuggerBrowsable]
appliqué à une propriété remplaçant un champ du même nom. Cela représentera quelques pourcent des cas que les gens rencontrent, mais il n'y a aucun moyen de savoir combien sont dus à ce problème spécifique jusqu'à ce qu'il soit résolu.
L'exemple de démonstration complet et complet est présenté dans l'image (et inclus ci-dessous pour une bonne mesure)
Copie lisible par machine du code dans l'image:
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;
}
Dans mon cas, j'avais deux fichiers DLL identiques dans deux dossiers différents (une DLL semble incorrecte) Supprimer le fichier .dll et reconstruire la solution a résolu mon problème.
Dans mon cas, j'essayais d'évaluer l'expression lambda sur List <> et j'avais une telle erreur ("Erreur interne dans l'évaluateur d'expression"). J'utilisais VS2015, donc les expressions lambda étaient autorisées. Il s'avère que l'expression évaluateur manquait de la bibliothèque Linq. J'ai ajouté
using System.Linq;
dans ma classe actuelle et voilà! Lambda évalué.
J'ai résolu ce problème en réinitialisant simplement mes paramètres de Visual Studio en allant dans: dans Outils-> Paramètres d'importation et d'exportation et en sélectionnant pour restaurer les paramètres par défaut