web-dev-qa-db-fra.com

Modifier et continuer: "Les modifications ne sont pas autorisées lorsque ..."

Même si je crée un projet WinForm propre, Edit and Continue ne fonctionne pas et me donne l'erreur:

Les modifications ne sont pas autorisées lorsque le débogueur a été attaché à un processus en cours d'exécution ou que le code en cours de débogage a été optimisé lors de la génération ou de l'exécution.

  1. L'option Modifier et continuer est cochée dans Outils → Options → Débogage. 
  2. L'optimisation n'est pas activée. 
  3. On dirait qu'il n'y a pas de profileur géré configuré. 
  4. Je cours en mode débogage 
  5. J'utilise un processeur x64 et Windows XP 32 bits, mais définir la cible de la plate-forme sur x86 plutôt que sur AnyCpu n'aide en rien. 
  6. Réparer l'installation de Visual Studio n'aide pas.

J'ai aussi trouvé cet article sur le site Web de MSDN: 

Scénarios non pris en charge

Modifier et continuer n'est pas disponible dans les scénarios de débogage suivants:

  • Débogage sous Windows 98.

  • Débogage en mode mixte (natif/géré).

  • Débogage SQL.

  • Débogage d'un vidage Dr. Watson. 

  • Modification du code après une exception non gérée, lorsque l’option "Unwind la pile d’appel sur les exceptions non gérées" n’est pas sélectionnée. 

  • Débogage d'une application d'exécution intégrée.

  • Déboguer une application avec Attach to plutôt que de l'exécuter avec Start dans le menu Debug.

  • Débogage du code optimisé.

  • Débogage du code géré lorsque la cible est une application 64 bits. Si vous souhaitez utiliser Editer et continuer, vous devez définir la cible sur x86. (Propriétés du projet, onglet Compiler, paramètre Compilateur avancé.).

  • Le débogage d’une ancienne version de votre code après l’échec de la création d’une nouvelle version en raison d’erreurs de génération.

Mais je peux répondre "Non" à chaque élément de cette liste.

Cela fonctionnait auparavant, mais il y a plusieurs jours, il a cessé de fonctionner et je ne sais pas quelle peut en être la raison.

92
nightcoder

J'ai enfin eu à résoudre le problème: UNINSTALL Gallio  

Gallio semble avoir de nombreuses aspérités et il est préférable de ne pas utiliser MbUnit 3.0 mais d'utiliser le framework MbUnit 2.0 mais d'utiliser gallio runner, que vous exécutez sans installer l'installateur (qui a également installé un plugin Visual Studio).

Incidemment, j'avais le problème même après avoir "désactivé" le plugin Gallio. Seule la désinstallation a résolu le problème.

PS. Edité par nightcoder:
Dans mon cas désactiver TypeMock Isolator (cadre moqueur) enfin aidé ! Edit & Continue fonctionne maintenant !!!

Voici la réponse du support TypeMock:

Après avoir cherché plus loin dans l'édition et continuer à publier et à converser à ce sujet avec Microsoft, nous avons atteint la conclusion, il ne peut être résolu pour isolateur. Isolator implémente un Profileur CLR, et selon notre la recherche, une fois un profileur CLR est activé et attaché, modifier et continuer est automatiquement désactivé . Je suis désolé de dire que ce n'est plus considéré comme un bug, mais plutôt un limitation d'isolateur.

18
Pejvan

Solutions applicables

Voici une liste incomplète, non numérotée de solutions possibles à essayer si vous * souhaitez corriger rapidement les modifications et les modifications suivantes:

  • Assurez-vous d'être en mode débogage
  • Assurez-vous de ne pas lancer un processus en mode mixte
  • Essayez de définir la cible du processeur sur x86 plutôt que sur AnyCPU (sur les ordinateurs x64).
  • Décochez la case Optimiser le code _ pour Mode débogage dans Propriétés du projet-> Debug
  • Décochez la case Activer les optimisations dans Paramètres de compilation avancés
  • (ASP.NET) Vérifiez réponse du codeur de nuit si c'est le cas
  • (ASP.NET) Cochez cette réponse (par matrixugly) si c'est le cas 
  • (ASP.NET) Assurez-vous que Éditer et continuer est activé sur l'onglet Web (vs2010).
  • (ASP.NET) Accédez à Propriétés> Web> Serveurs et assurez-vous que Activer et continuer est coché sous Utiliser le serveur de développement Visual Studio.
  • (ASP.NET WebAPI) Assurez-vous que vous avez arrêté la méthode du contrôleur à l'aide d'un point d'arrêt avant de tenter de le modifier.
  • Accédez à Outils> Options> Débogage> Général _ et assurez-vous que Les fichiers source doivent correspondre exactement à la version d'origine_ n'est pas cochée.
  • Utilisez-vous Microsoft Fakes? Il empêche Edit & Continue.
  • Éliminez toutes les instances * .vshost.exe en sélectionnant arborescence de processus de fin dans le Gestionnaire des tâches. VS régénérera une instance correcte.
  • Supprimer tous les points d'arrêt avec Débogage-> Supprimer tous les points d'arrêt} _
  • Activer et continuer existe dans le menu Outils> Options> Débogage ainsi que dans Paramètres du projet. Assurez-vous de vérifier les deux endroits. edit & Continue n'est pas pris en charge avec le paramètre Intellitrace étendu.
  • Assurez-vous que Informations de débogage dans Propriétés du projet> Construire> Avancé> Sortie> Informations de débogage est défini sur Complet
  • Certains plugins peuvent interférer. Vérifiez en désactivant/désinstallant puis en essayant à nouveau les autres solutions.
  • Si vous ne payez pas assez d'attention, l'erreur que vous obtenez en essayant de résoudre ce problème peut changer en quelque chose de plus facile à diagnostiquer. Par exemple. Une méthode contenant une expression lambda ne peut pas prendre en charge l’édition et continuer.
  • Assurez-vous que la variable système COR_ENABLE_PROFILING n'est pas définie sur 1. Certains profileurs définissent cette option lors de l'installation et la conservent après la désinstallation. Ouvrez une invite de commande et tapez set pour vérifier rapidement que votre système est affecté. Si c'est le cas, supprimez la variable ou définissez-la sur 0:

    • Sous Windows 8 et supérieur, recherchez Système (Panneau de configuration).
    • Cliquez sur le lien Paramètres système avancés.
    • Cliquez sur Variables d'environnement.
    • Supprimer COR_ENABLE_PROFILING
  • Soyez conscient de des scénarios non pris en charge (comme indiqué dans la question) et que des modifications non prises en charge .

_ {* par 'vous', je veux dire le visiteur de la page qui frappe sa tête avec un clavier pour trouver la solution.

N'hésitez pas à modifier cette réponse si vous avez d'autres astuces!

49
beppe9000

Si vous déboguez une application ASP.NET, accédez à Propriétés> Web> Serveurs et assurez-vous que "activer et continuer" est coché sous Utiliser le serveur de développement Visual Studio.

22
viggity

J'ai eu le même problème. J'ai même réinstallé VS 2008 mais le problème ne s'est pas dissipé. Cependant, lorsque j'ai supprimé tous les points d'arrêt, cela a commencé à fonctionner. 

Debug->Delete All Breakpoints

Je pense que cela se passait parce que j'avais supprimé une page aspx qui avait des points de rupture dans son code, puis j'ai créé une autre page du même nom. Cela a probablement dérouté le VS 2008.

9
Amer

Ce problème est dû au paramètre Intellitrace

Si Intellitrace est activé, assurez-vous que seul l'événement Intellitrace est coché.

Sinon, cela ne permettra pas de modifier et de continuer.

Si vous cliquez sur les options d’Intellitrace, vous verrez les avertissements.

4
KuldeepVerma

Quelques choses à vérifier

  • Assurez-vous que votre compilation est définie sur Debug vs. Release
  • Assurez-vous de ne pas lancer un processus en mode mixte
  • Si sur un ordinateur 64 bits, assurez-vous de définir la cible du processeur sur x86 plutôt que sur AnyCPU

MODIFIER 

Je ne crois pas que cela devrait avoir de l'importance, mais assurez-vous que le processus d'hébergement est activé pour la plate-forme cible. Probablement pas aider. 

Si cela reprenait pour de nouveaux projets, alors ce pourrait être quelque chose d'encore plus subtil. Je voudrais essayer le suivant. 

  • Sauvegarde HKCU:\Software\Wow6432Node\VisualStudio\9.0 (peut-être simplement le renommer)
  • Supprimer la même clé
  • Essayez à nouveau la repro 
4
JaredPar

J'ai constaté que même si sous l'onglet Propriétés de construction, les versions et le débogage sont définis sur Débogage et que tous les autres paramètres sont corrects, je reçois quand même le message. Debug est également sélectionné à deux endroits. allez comprendre ... combien d'endroits différents ont-ils besoin pour définir debug ?????? même si vous définissez Project - Configuration sur Debug, puis sous Build - Manager, il n’est pas modifié. Vous devez donc modifier le même paramètre dans Configuration du projet - cela ressemble à nouveau à un problème Microsoft ...

4
RAL

Aucune des solutions ci-dessus ne fonctionnait pour moi (fonctionnant sur une machine 64x).

Enfin, j'ai cliqué sur 'advanced compiler settings' etDÉCOCHÉ'enable optimizations 'et je peux maintenant parcourir le code et éditer pendant le débogage.

4
JayW

Si votre problème concerne une application ASP.NET, assurez-vous que les options de modification et de poursuite sont activées dans l'onglet Web (vs2010). Il existait également un paramètre distinct pour le débogage ASP.NET dans les versions antérieures.

Cordialement,

Adam.

4
Adam

"Edit and Continue", lorsqu'il est activé, ne vous permettra d'éditer du code qu'en mode pause: par exemple. en faisant suspendre l'exécution par une exception ou en atteignant un point d'arrêt.

Cela implique que vous ne pouvez pas éditer le code lorsque l'exécution n'est pas en pause! En ce qui concerne les projets Web de débogage (ASP.NET), cela n’est pas très intuitif, car vous voudriez souvent apporter des modifications entre les demandes. À ce stade, le code de votre (probablement) débogage n'est pas en cours d'exécution, mais il n'est pas non plus en pause!
Pour résoudre ce problème, vous pouvez cliquer sur "Tout casser" (ou appuyer sur Ctrl+Alt+Break). Vous pouvez également définir un point d'arrêt quelque part (par exemple, dans votre événement Page_Load), puis recharger la page afin que l'exécution s'interrompt lorsqu'elle atteint le point d'arrêt, et maintenant , vous pouvez éditer le code. Même le code dans les fichiers .cs.

4
Protector one

Pour moi, pour une raison que je ne comprends pas, le paramètre "Générer les informations de débogage" dans les "Paramètres avancés du compilateur" a été défini sur "pdb uniquement" au lieu de "Complet".

Par défaut, ce paramètre est toujours défini sur "Full", mais un mystérieux poltergeist a modifié ce paramètre la nuit dernière. :)

P.S. Je suis dans Visual Basic .Net avec Visual Studio 2010

3
Samuel

Suite à la prise de vue m'a aidé à utiliser VS2010:

allez dans Outils, Options, Débogage, Général et assurez-vous que "Les fichiers source doivent correspondre exactement à la version d'origine" est décoché.

3
Vinay

Cela se produit lorsque le débogueur n'a pas atteint un point d'arrêt ou que vous n'avez pas appuyé sur Tout casser (pause). Cela ne pourrait pas être aussi simple que possible?

2
Richard Hein

J'ai eu ce problème dans Microsoft Visual Studio 2008 et la solution est facile. lorsque vous exécutez votre projet, veuillez définir le mode "Débogage" et non "Libérer". La solution des autres personnes peut être utile.

2
user2412450

Si je crée un nouveau projet, les modifications en cours de débogage ne fonctionnent pas. Si je crée un nouveau site Web, les modifications en cours de débogage fonctionnent comme prévu.

1
Greg

J'ai supprimé un jeu de données de mon projet car je ne l'ai pas utilisé. Après cela, je pourrais modifier le programme lors du débogage.

1
ashkan_jami

Je me suis heurté à cela aujourd'hui - il s'avère qu'avoir Debug Info réglé sur pdb uniquement (ou aucun, j'imagine) empêchera Éditer et Continuer de fonctionner.

Assurez-vous que vos informations de débogage sont réglées sur "complet" en premier!

Propriétés du projet> Construire> Avancé> Sortie> Informations de débogage

1
Guy Danus

L'erreur indique qu'une cause possible est: "le code en cours de débogage a été optimisé lors de la compilation ou de l'exécution". Allez dans Propriétés du projet-> Déboguer et décochez la case Optimiser le code pour le mode Débogage.

1
pbalaga

ce qui a fonctionné pour moi a été de décocher "Utiliser le mode de compatibilité gérée" sous

Outils -> Options -> Débogage

TBN: cocher ou décocher "Exiger que le fichier source corresponde exactement à la version d'origine" ne semble pas influencer E & C

J'espère que cela peut aider.

1
B. Cafaro

Certaines choses qui ont semblé aider à utiliser VS2010:

  • allez dans Outils, Options, Débogage, Général et assurez-vous que "Les fichiers source doivent correspondre exactement à la version d'origine" est décoché.
  • plusieurs instances .vshost.exe peuvent être laissées, par exemple, détacher le débogueur VS d'un processus arrêté. Cela va interférer avec les points d'arrêt et compiler aussi bien. Utilisez le Gestionnaire de tâches, onglet Processus pour supprimer toutes les instances de .vshost.exe en cliquant avec le bouton droit de la souris sur chaque instance et en sélectionnant Terminer l'arborescence de processus. VS va créer une nouvelle instance.
1
Scott

J'ai fait tous les changements mentionnés dans chaque réponse et aucun n'a fonctionné. Qu'est-ce que j'ai appris? Activer et continuer existe à la fois dans le menu Outils> Options> Débogage et dans les paramètres du projet. Après avoir vérifié les deux, Activer et Continuer a fonctionné pour moi.

1
stevebot

Je l'ai eu dans un fichier de classe lié. Le reste du projet a permis à E & C, mais j'ai eu la même erreur lors de l'édition du fichier lié. La solution consistait à décomposer le fichier lié dans son propre projet et à référencer le projet.

0
jlo-gmail

Cela semble illogique, mais l'unique moyen était de désactiver l'édition et de continuer à partir des options de VS 2017 ... Ensuite, AspNet edit and continue a commencé à fonctionner ...

0
FRK

Dans mon cas, rétablir les paramètres de débogage par défaut et configurer IntelliTrace-> seuls les événements intellitrace aident

0
Yuriy Vikulov

Activez les opérations de modification et de poursuite du travail uniquement dans l'exécution IIS Express . Ne travaillez pas dans l'hôte local ISS ou externe.

0
Ahmad Aghazadeh

Pour moi, cela se produisait après avoir atteint un point d'arrêt, effectué quelques modifications, puis continué à parcourir le code, puis enfin appuyé sur F5 ou sur "Continuer" pour arriver à la fin et sortir de mon bloc de code. 

Après avoir essayé l'option "supprimer tous les points d'arrêt" (Ctrl + Maj + PrtScn et OK sur l'invite) et effectué une reconstruction complète, il restait une erreur dans mon journal d'erreurs concernant mon DLL pour le chargement de mon projet non effectué. ... "Impossible d'appliquer les modifications, x.DLL non chargé". Après avoir redémarré Visual Studio, tout allait bien à nouveau. Pour moi, c'était aussi simple que cela. 

D'autres choses ici ne fonctionnaient pas pour moi, par exemple, l'option "Exiger que les fichiers source correspondent exactement à la version d'origine" a été vérifiée avant et après que tout fonctionne à nouveau correctement, et le ciblage de "Tout processeur" sur ma machine x64 convient également. pas besoin de spécifier x86 ou x64). J'avais activé les options "Activer, puis continuer à modifier" dans les paramètres de l'onglet Outils> Options> Débogage et Propriétés du projet> "Web".

0
vapcguy

Je faisais face au même problème dans Visual Studio 2005. Ma configuration est 64 bits. Cela fonctionnait bien sur l'une des solutions VS mais pas sur l'autre. J'ai remarqué que je seulement activait «Activer, puis continuer à modifier» pour le projet où je voulais apporter des modifications en mode débogage. Cela a finalement été résolu pour moi lorsque j'ai sélectionné "Activer et continuer" pour mon projet de démarrage .

Il n'y a eu aucun changement de configuration, à part l'activation et la poursuite nécessaires.

0
Sanjeev Singh

J'avais un projet de base de données dans la solution qui empêchait la modification du projet de formulaires Web.

J'ai cliqué sur "Décharger" sur le projet de base de données et tout fonctionne maintenant avec douceur.

0
Adam

J'ai rencontré le même problème. Mon problème était que je pouvais modifier un fichier, mais pas un autre (les deux sont dans le même projet). Plus tard, j'ai découvert que le fichier que je ne pouvais pas modifier faisait également partie d'un autre projet. Le fait qu'un autre projet (Test d'unité) n'a pas été chargé et que le débogueur intelligent VS indique l'erreur que Assembly pour ce fichier donné n'a pas été chargé et que les modifications sont interdites. C'est bizarre!

Par conséquent, je devais décharger le projet de test unitaire et poursuivre le débogage EnC.

0
Ajay

Pour VS2017, il peut être utile de supprimer le fichier .suo de votre solution. :)

0
Nieksa

les types d'interopérabilité incorporés visual studio doivent être définis sur false

0
Wilma Fingerdoo

Avait ce problème dans Rider. J'avais ouvert le fichier .csproj directement à la place du fichier .sln. La conséquence est que la configuration d'exécution n'a pas été définie pour déboguer même si j'ai cliqué sur le bouton de débogage. Vous remarquerez qu'il est indiqué <No Configurations> dans la barre d'outils à côté du bouton de débogage.

0
Bluebaron