171 votes

"Impossible d'évaluer l'expression car le code de la méthode actuelle est optimisé" dans Visual Studio 2010

Je suis en train d'utiliser Visual Studio 2010 en mode débogage et j'ai désactivé "optimiser le code". Je ne peux pas regarder rapidement (ou survoler) n'importe quelle variable dans le débogueur. Je reçois cette erreur "Impossible d'évaluer l'expression car le code de la méthode actuelle est optimisé".

Même une ligne comme : int i = -3, en faisant un rapide regard sur i, j'obtiens "Impossible d'obtenir la valeur de la variable locale ou de l'argument 'i' car elle n'est pas disponible à ce pointeur d'instruction, peut-être parce qu'elle a été optimisée."

Ce lien référencé dans une question similaire ne semble pas s'appliquer.

Y a-t-il un paramètre que je n'ai pas activé?

4 votes

torulflundgren.blogspot.com.au/2010/03/… C'est la meilleure solution que j'ai trouvée pour cela. J'ai testé cela sur visual studio 2013. et cela a fonctionné....

194voto

Tony_Henrich Points 7203

Alors que le projet était en mode débogage, la solution ne l'était pas. Quand je l'ai changée, ça a fonctionné.

9 votes

J'avais ce problème dans VS2012, cependant la solution et tous les projets étaient définis sur Debug sans aucune optimisation. J'ai nettoyé la solution/reconstruit et cela a résolu le problème pour moi.

26 votes

Alors... Comment définir la solution en mode non débogage?

1 votes

User1431072 - vous faites un clic droit sur votre solution ou projet et choisissez Propriétés, puis vous pouvez le définir en mode débogage

56voto

Vin Points 121

J'ai eu ce problème lorsque j'utilisais VS 2010. Ma configuration de solution a (Debug) sélectionné. J'ai résolu cela en décochant la propriété Optimiser le code sous les propriétés du projet. Projet (clic droit) => Propriétés => Build (onglet) => décocher Optimiser le code

33voto

Justin Points 42106

Il semble que vous êtes en train de déboguer une version optimisée / compilée, malgré le fait que la case optimisée soit décochée. Voici quelques choses que vous pouvez essayer :

  • Faire une reconstruction complète de votre fichier de solution (clic droit sur la solution et sélectionner Reconstruire tout)
  • Pendant le débogage, ouvrez la fenêtre des modules (Déboguer -> Fenêtres -> Modules) et trouvez votre assembly dans la liste des modules chargés. Vérifiez que le Chemin répertorié pour votre assembly chargé est celui auquel vous vous attendez, et que l'horodatage modifié du fichier indique que l'assembly a réellement été reconstruit.
  • La fenêtre des modules devrait également vous indiquer si le module chargé est optimisé ou non - assurez-vous que la fenêtre des modules indique qu'il n'est pas optimisé.

Si vous ne voyez pas l'élément de menu Modules dans le menu Déboguer -> Fenêtres, vous devrez peut-être l'ajouter dans le menu "Personnaliser...".

2 votes

La solution est reconstruite. La fenêtre des modules montre que l'assembly est optimisé. J'ai décoché la case Optimize donc je ne sais pas pourquoi l'assembly est toujours optimisé. La solution a un projet web mais le code sur lequel je travaille est dans un projet de bibliothèque de classes en mode débogage.

0 votes

@Tony - Question idiote, mais la bibliothèque de classes a-t-elle la case à cocher "Optimisé" désélectionnée ?

0 votes

Oui. J'ai mentionné ce fait dans ma question. J'ai déjà répondu à ma propre question.

15voto

Jesse Points 233

Dans VS2013, allez à : Outils -> Options -> Débogage -> Général et activez 'Utiliser le mode de compatibilité géré'. Cela désactive le nouveau comportement d'évaluation des fonctions.

0 votes

Merci! Parmi les autres solutions proposées, celle-ci était celle qui comptait pour moi. La chose étrange, c'est qu'elle s'est produite soudainement, je me demande ce qui l'a causée à changer.

1 votes

Cette option est obsolète dans VS2019.

4voto

testuser Points 375

En dehors de ce que @Kragen a mentionné, si vous déboguez un projet web

fermez Visual Studio et essayez de supprimer les fichiers temporaires à l'emplacement C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files

0 votes

La solution a un projet web mais le code se trouve dans un projet de bibliothèque de classes. J'ai supprimé les fichiers temporaires plusieurs fois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X