Obtenez «Erreur interne dans l'évaluateur d'expression» sur la fonction «Ajouter une surveillance» lors de la tentative de débogage du code de service WCF (MSVS 2013)

114

Il y a quelques jours, j'ai déplacé ma solution vers MSVS 2013. Cela fonctionne bien, sauf une chose: lorsque j'essaie de déboguer le code de mon service WCF, cela fonctionne, mais quand je veux regarder l'état de n'importe quelle variable, cela dit: "Erreur interne dans l'expression évaluateur ". L'ajout de la fonction de surveillance fonctionne normalement du côté client, mais dans le code de service, il est cassé. J'essaye de déboguer mon propre service WCF en cours d'exécution sur l'hôte local. Pourriez-vous m'aider, comment réparer cela?

entrez la description de l'image ici

Ici MSVS info: Microsoft Visual Studio Professional 2013 Version 12.0.30110.00 Update 1 Microsoft .NET Framework Version 4.5.51641 OS: Windows 8.1

Ceridan
la source
Dans MSVS2012, cela fonctionne bien (Microsoft Visual Studio Professional 2012 Version 11.0.61030.00 Update 4 Microsoft .NET Framework Version 4.5.51641)
Ceridan
Je vois aussi ce message et je viens de passer de 2012 à 2013.
Gary
Je dois revenir à 2012, en 2012 cela fonctionne sans erreurs, et 2013 toujours cassé pour moi
Ceridan
obtenant également la même erreur dans VS 2013
zulucoda

Réponses:

228

Cela peut être un bogue dans le nouveau moteur de débogage (géré) fourni avec Visual Studio 2013. Essayez d'activer le mode de compatibilité gérée (qui le transforme effectivement en moteur de débogage pré-2013), situé sous Outils - Options - Débogage :

Si cela résout le problème, je vous suggère d'essayer de le reproduire avec un petit projet, puis de le signaler sur Connect , afin qu'il puisse être corrigé.

@bjhuffine commente ci-dessous qu'il existe d'autres moyens d'activer le mode de compatibilité, sans le désactiver globalement (par exemple par projet). Plus d'informations ici: https://devblogs.microsoft.com/devops/switching-to-managed-compatibility-mode-in-visual-studio-2013/

Igal Tabachnik
la source
7
Cela a résolu mon même problème avec Visual Studio 2015 CTP 6.
Chris Schiffhauer
1
Cette configuration a résolu le problème, mais les outils de diagnostic ont cessé de fonctionner.
Xepe
6
Cela a résolu mon même problème dans Visual Studio 2015 RTM (et désactivé les nouveaux outils de diagnostic) mais je n'ai jamais eu ce problème dans Visual Studio 2013. Je vais devoir le tester sur mon ordinateur personnel et comparer.
ahwm
2
Tu es un génie mon ami! J'ai également trouvé cela qui non seulement ajoute une explication supplémentaire, mais montre d'autres façons de le faire si vous ne voulez pas le grand changement global. blogs.msdn.com/b/visualstudioalm/archive/2013/10/16/…
bjhuffine
11
Juste pour ajouter; si ces options sont grisées, vous devez arrêter le débogage;)
Radderz
13

Selon la question «Erreur interne dans l'évaluateur d'expression», «Utiliser le mode de compatibilité gérée» arrête «Modifier et continuer». Essayez de cocher l'option "Utiliser les évaluateurs d'expressions C # et VB hérités" sous Outils - Options - Débogage .

Michael Freidgeim
la source
2

J'ai essayé la réponse d'Igal , et cela n'a pas fonctionné pour moi, mais j'ai trouvé une solution qui a fonctionné pour moi. J'ai effacé la montre et j'ai recommencé à ajouter des éléments. J'ai remarqué que si j'essayais d'ajouter un élément qui n'était pas à l'intérieur du sous ou de la fonction actuelle, une erreur interne se produisait.

J'ai résolu le problème en ajoutant d'autres éléments à l'intérieur de leurs sous-marins ou de leurs fonctions et il n'y a plus eu d'erreur.

KomArko
la source
Dans ma situation, une erreur se produit même si j'ai ajouté des éléments de surveillance dans la portée de la méthode, mais cette solution avec «Utiliser le mode de compatibilité gérée» m'aide.
Ceridan
0

La réponse de Michael Freidgeim m'a aidé à déboguer mon problème. Mais je souhaite ajouter des détails supplémentaires sur la cause de mon problème. Seulement légèrement lié à la question du demandeur, mais son erreur est extrêmement trompeuse.

Nous utilisions un RadGrid de contrôles Telerik avec GridDateTimeColumn. La propriété MinDate sur ces grilles par défaut est 01/01/1980 donc si vous liez une date à cette colonne qui est inférieure à cela, vous verrez cette erreur. La chose étrange est que la liaison et l'affichage d'origine n'ont pas posé de problème, ce n'est que lors de la navigation vers une autre page que l'erreur a été générée.

ascriven
la source