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

108

Même si je crée un projet WinForms 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 déjà en cours d'exécution ou lorsque le code en cours de débogage a été optimisé au moment 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'aucun profileur géré n'a été 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 pas.
  6. La réparation de l'installation de Visual Studio n'aide pas.

J'ai également trouvé cet article sur le site Web 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 «Dérouler la pile d'appels 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ébogage d'une application avec Attacher à plutôt que d'exécuter l'application avec Démarrer dans le menu Déboguer.

  • Débogage du code optimisé.

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

  • Débogage d'une ancienne version de votre code après l'échec de la construction d'une nouvelle version en raison d'erreurs de construction.

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

Cela fonctionnait avant, mais il y a quelques jours, cela a cessé de fonctionner, et je ne sais pas quelle pourrait en être la raison.

nightcoder
la source
2
Exécutez-vous en mode Release? Utilisez-vous X64?
Sam Saffron
La méthode que vous essayez d'E & C est-elle vraiment courte? peut-être qu'il a été intégré (bien que je pense que l'inlining ne se produit pas lors du débogage)
Sam Saffron
Cela ne fonctionne sur aucune méthode, qu'elle soit très courte ou très longue.
nightcoder
Avez-vous déjà essayé une installation de réparation?
Richard Anthony Hein
3
Je suppose que je devrais ajouter que E&C est une fonctionnalité assez complexe. La matrice de test du débogueur est énorme, et faire fonctionner E&C dans chaque combinaison serait extrêmement difficile. Mais c'est aussi une fonctionnalité très importante, nous avons donc pris de nombreuses limitations pour nous assurer qu'elle serait livrée. Dans les limites délibérées que nous lui avons imposées, c'est l'une des fonctionnalités de la plus haute qualité que nous avons livrées.
Jay Bazuzi

Réponses:

21

J'ai enfin réussi à résoudre le problème: DÉSINSTALLER Gallio

Gallio semble avoir de nombreux aspects difficiles et il est préférable de ne pas utiliser MbUnit 3.0 mais d'utiliser le framework MbUnit 2.0 mais d'utiliser le gallio runner, que vous exécutez sans installer à partir du programme d'installation (qui a également installé un plugin visual studio).

D'ailleurs, j'ai eu 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, la désactivation de TypeMock Isolator (framework moqueur) a finalement aidé ! Edit & Continue fonctionne maintenant !!!

Voici la réponse du support TypeMock:

Après avoir examiné plus en détail le problème de modification et de poursuite et en avoir discuté avec Microsoft, nous sommes arrivés à la conclusion qu'il ne peut pas être résolu pour Isolator. Isolator implémente un profileur CLR, et selon nos recherches, une fois qu'un profileur CLR est activé et attaché, l'édition et la poursuite sont automatiquement désactivées. Je suis désolé de dire que ce n'est plus considéré comme un bogue, mais plutôt comme une limitation d'Isolator.

nightcoder
la source
69

Autres solutions applicables

Vous trouverez ci-dessous une liste incomplète et non ordonnée de solutions possibles à essayer si vous * essayez de corriger rapidement Modifier et continuer.

  • Assurez-vous que vous êtes 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 machines x64)
  • Décochez la case Optimiser le code pour le mode de débogage dans Propriétés du projet-> Déboguer
  • Décochez Activer les optimisations dans les paramètres avancés du compilateur
  • (ASP.NET) Vérifiez la réponse de Nightcoder si c'est le cas
  • (ASP.NET) Cochez cette réponse (par matrice) si c'est le cas
  • (ASP.NET) Assurez-vous que l' option Modifier et continuer est activée 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 vous êtes arrêté dans la méthode du contrôleur à l'aide d'un point d'arrêt, avant d'essayer de le modifier.
  • (vs2017) Allez dans Outils> Options> Débogage et décochez (désélectionnez) «Modifier et continuer». C'est en fait le contraire du conseil «conventionnel» (voir quelques autres points dans cet article). Il ne vous permet pas d'apporter réellement des modifications dans votre programme en cours d'exécution (c'est-à-dire qu'il n'échange pas à chaud les modifications de code que vous faites) - il vous permet simplement de modifier votre code (c'est-à-dire qu'il empêche ce message ennuyeux et de "verrouiller" votre éditeur ).
  • Accédez à Outils> Options> Débogage> Général et assurez-vous que l' option Exiger que les fichiers source correspondent exactement à la version d'origine n'est pas cochée.
  • Cochez la case Activer l'allocateur de tas de débogage Windows (natif uniquement) [VS Community 2017]
  • Utilisez-vous Microsoft Fakes? Il empêche la modification et la poursuite.
  • Tuez toutes les instances * .vshost.exe en sélectionnant Terminer l'arborescence du processus dans le Gestionnaire des tâches . VS régénérera une instance correcte.
  • Supprimer tous les points d'arrêt avec Debug-> Supprimer tous les points d' arrêt
  • Activer et continuer existe à la fois dans le menu Outils> Options> Débogage et également dans les 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 les informations de débogage dans Propriétés du projet> Générer> Avancé> Sortie> Informations de débogage sont définies sur Complet
  • Certains plugins peuvent interférer. Vérifiez en désactivant / désinstallant puis en réessayant les autres solutions.
  • Si vous ne faites pas suffisamment attention, l'erreur que vous obtenez en essayant de résoudre ce problème peut se transformer en quelque chose d'autre qui est plus facile à diagnostiquer. Par exemple, une méthode contenant une expression lambda ne peut pas prendre en charge la modification et la poursuite.
  • Assurez-vous que la variable système COR_ENABLE_PROFILINGn'est pas définie sur 1. Certains profileurs le définissent lors de l'installation et le laissent comme ça après la désinstallation. Ouvrez une invite de commande et tapez setpour 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 .
    • Retirer COR_ENABLE_PROFILING
  • Soyez conscient des scénarios non pris en charge (comme indiqué dans la question) et des modifications non prises en charge .


* par «vous», j'entends le visiteur de la page qui se martèle la tête sur un clavier pour trouver la solution.


N'hésitez pas à modifier cette réponse pour ajouter votre solution de contournement si elle n'est pas répertoriée ici!

beppe9000
la source
5
C'était le COR_ENABLE_PROFILING ... aucune idée pourquoi il a été défini. Merci. Arrêter de me marteler la tête sur le clavier maintenant.
Florian Lagg
2
J'ai tout essayé mais sur travaillé. Puis j'ai réalisé que je devais être en mode pause (debug-> break all) ou à un point d'arrêt. Veuillez l'ajouter à votre liste. msdn.microsoft.com/en-us/library/7932e88z.aspx
Niloofar
1
Fonctionne pour moi, merci, la quatrième ligne "Décochez la case Optimiser le code pour le mode débogage dans les propriétés du
projet-
2
La seule chose qui a résolu le problème pour moi ne figure pas ici: je devais dis en mesure (décocher) l'option « Activer Modifier et continuer » sous Outils> Options> Debugging. C'est tout le contraire de ce que vous penseriez intuitivement, mais c'est ce qui l'a corrigé pour moi (c'est-à-dire empêché ce message ennuyeux et laissez-moi simplement modifier mon code).
leo
1
@leo C'est un wiki communautaire pour que vous puissiez le modifier librement. Le bouton "Modifier" ne fonctionne-t-il pas pour vous? Je vois que vous avez assez de réputation pour faire cela. Ps. J'ai ajouté une référence à votre réponse pour qu'il y ait moins de dispersion.
beppe9000
23

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 Visual Studio Development Server.

vigueur
la source
3
Vous devez également appuyer sur Pause pendant le débogage, puis pouvoir modifier le code
Alexey Obukhov
Si j'utilise les iis locaux, "activer et continuer" est désactivé
Khoshtarkib
11

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

Debug->Delete All Breakpoints

Je pense que cela se produisait parce que j'avais supprimé une page aspx qui avait des points d'arrêt dans son code, puis j'ai créé une autre page avec le même nom. Cela a probablement confondu le VS 2008.

Amer
la source
5

Quelques points à 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 une machine 64 bits Assurez-vous de définir la cible CPU sur x86 plutôt que sur AnyCPU

ÉDITER

Je ne pense pas que cela devrait avoir une importance, mais assurez-vous que le processus d'hébergement est activé pour la plate-forme cible. Ça n'aidera probablement pas.

S'il reprend pour de nouveaux projets, cela pourrait être quelque chose d'encore plus subtil. J'essaierais ce qui suit.

  • Sauvegarde HKCU: \ Software \ Wow6432Node \ VisualStudio \ 9.0 (peut-être simplement le renommer)
  • Supprimer la même clé
  • Essayez à nouveau la reproduction
JaredPar
la source
2
Qu'est-ce qu'un processus en mode mixte? J'ai même essayé un nouveau projet winforms.
nightcoder
Je n'ai pas le HKCU: \ Software \ Wow6432Node \ node
nightcoder
@nightcoder puis essayez HKCU: \ Software \ Microsoft \ VisualStudio \ 9.0
JaredPar
5

Aucune des solutions ci-dessus n'a fonctionné pour moi (fonctionnant sur une machine 64x).

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

Nifle
la source
2
Cela semble être Visual Basic uniquement: msdn.microsoft.com/en-us/library/07bysfz2%28v=vs.100%29.aspx
Marcel
Travaille pour moi! VS2013, VB.Net, Frame 3.5
MiBol
1
Et où sont ces paramètres?
vapcguy
5

"Modifier et continuer", lorsqu'il est activé, ne vous permettra d'éditer le code que lorsqu'il est en mode pause: par exemple en mettant l'exécution en pause par une exception ou en frappant un point d'arrêt.

Cela implique que vous ne pouvez pas éditer le code lorsque l'exécution n'est pas interrompue! Lorsqu'il s'agit de déboguer des projets Web (ASP.NET), cela est très peu intuitif, car vous voudrez souvent apporter des modifications entre les demandes. Pour le moment, le code de votre débogage (probablement) n'est pas en cours d'exécution, mais il n'est pas non plus suspendu!
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 Page_Loadévénement), puis recharger la page pour que l'exécution s'arrête lorsqu'elle atteint le point d'arrêt, et maintenant vous pouvez éditer le code. Même code dans les .csfichiers.

Protector one
la source
4

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 réglé sur "Full" mais un mystérieux poltergeist a changé ce paramètre la nuit dernière. :)

PS Je suis dans Visual Basic .Net avec Visual Studio 2010

Samuel
la source
4

Si votre problème concerne une application ASP.NET, assurez-vous que la modification et la 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.

Adam
la source
4

J'ai trouvé que même si sous l'onglet de construction et de débogage des propriétés du projet sont définis sur Déboguer et que tous les autres paramètres sont corrects, je reçois toujours le message, mais après avoir creusé un peu plus dans le menu Construction, sélectionnez Gestionnaire de configurations ... et assurez-vous que Déboguer est sélectionné à deux endroits là aussi. allez comprendre ... de combien d'endroits différents ont-ils besoin pour définir le débogage ?????? même si vous définissez Projet - Configuration sur Déboguer, sous Build - Manager, il n'est pas modifié, vous avez donc également modifié le même paramètre Configuration du projet - cela semble à nouveau être un problème Microsoft .......

RAL
la source
4

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

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

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

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

KuldeepVerma
la source
C'est le problème, pour moi!
beppe9000
Recherche toutes les options dans les outils Visual Studio pour «Intellitrace» et il n'y a pas une telle option dans VS Community 2017. Un peu plus de détails ici aide.
vapcguy
4

La prise de vue suivante m'a aidé à utiliser VS2010:

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

Vinay
la source
3

Cela se produit lorsque le débogueur n'a pas atteint un point d'arrêt ou que vous n'avez pas appuyé sur Break All (pause). Ça ne pouvait pas être aussi simple que ça?

Richard Anthony Hein
la source
Cela se produit lorsque le débogueur a atteint un point d'arrêt et que j'essaye de changer quelque chose dans le code.
nightcoder
3

L'erreur indique qu'une cause possible est: "le code en cours de débogage a été optimisé au moment de la construction 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.

pbalaga
la source
3

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

user2412450
la source
2

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

Greg
la source
1

Dans mon cas, il suffit de réinitialiser les paramètres du débogueur par défaut et de définir IntelliTrace-> seuls les événements intellytrace aident

Yuriy Vikulov
la source
1

Certaines choses qui semblent aider à utiliser VS2010:

  • allez dans Outils, Options, Débogage, Général et assurez-vous que "Exiger que les fichiers source correspondent exactement à la version d'origine" est décoché.
  • plusieurs instances .vshost.exe peuvent être laissées, par exemple, en détachant le débogueur VS d'un processus arrêté. Cela interférera également avec les points d'arrêt et les compilations. Utilisez le Gestionnaire des tâches, onglet Processus pour tuer toutes les instances de .vshost.exe en cliquant avec le bouton droit sur chaque instance et en sélectionnant Terminer l'arborescence du processus. VS créera une nouvelle instance.
Scott
la source
1

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

ashkan_jami
la source
1

J'ai fait tous les changements mentionnés dans chaque autre 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 également dans les paramètres du projet. Après avoir vérifié les deux, Activer et Continuer a fonctionné pour moi.

Stevebot
la source
3
Quels paramètres de projet? Vous êtes trop vague
Adaptabi
@Adaptabi Ils signifiaient que si vous faites un clic droit sur le nom de votre projet, cliquez sur Propriétés, puis (s'il s'agit d'un projet Web) cliquez sur Web, il y a une case à cocher pour vous assurer que la case "Activer la modification et continuer" est cochée.
vapcguy
1

Je suis tombé sur ceci aujourd'hui - il s'avère que le fait d'avoir des informations de débogage définies sur pdb uniquement (ou aucun, j'imagine) empêchera Edit and Continue de fonctionner.

Assurez-vous d'abord que vos informations de débogage sont définies sur «complet»!

Propriétés du projet> Générer> Avancé> Sortie> Informations de débogage

Guy Danus
la source
1

Cela semble illogique, mais le seul moyen était de désactiver l'édition et de continuer à partir des options de VS 2017 ... Ensuite, l'édition et la poursuite d'AspNet ont commencé à fonctionner ...

FRK
la source
Exactement! C'est contre-intuitif, mais ce qui a fonctionné pour moi aussi, c'est de désactiver "modifier et continuer". Il ne "remplacera pas à chaud" les modifications que vous apportez, mais au moins vous pouvez simplement modifier votre code, puis il prendra effet au redémarrage de votre application.
leo
1

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 originale" ne semble pas influencer l'E&C

J'espère que cela peut vous aider.

B.Cafaro
la source
1

Activez la modification et continuez uniquement pour exécuter IIS Express. Ne fonctionne pas dans l'ISS local ou l'hôte externe.

Ahmad Aghazadeh
la source
1

J'ai eu ce problème ennuyeux depuis que j'ai mis à niveau mon VS 2019 vers 16.4.3 et m'a causé beaucoup de maux de tête.
Enfin, j'ai résolu le problème de cette façon:

1. Arrêtez le débogage
2. Sélectionnez la solution dans "Explorateur de solutions"
3. Dans la fenêtre Propriétés , modifiez la propriété "Configuration active" de "Release | Any CPU" à "Debug | Any CPU"
4 Dans Débogage> Options> Général Cochez la case Modifier et continuer

Cela a fonctionné pour moi, et j'espère que cela fonctionnera pour vous aussi.

Masarwa
la source
0

embed interop types visual studio doit être défini sur false

Wilma Fingerdoo
la source
0

J'ai eu cela se produire 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 à diviser le fichier lié en son propre projet et à référencer le projet.

jlo-gmail
la source
0

J'ai fait face au 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. Qu'un autre projet (Test unitaire) n'a pas été chargé et que le débogueur VS intelligent affiche l'erreur selon laquelle l'assembly pour ce fichier donné n'a pas été chargé et les modifications ne sont pas autorisées. Comme c'est bizarre!

Par conséquent, j'ai dû décharger le projet de test unitaire et continuer le débogage EnC.

Ajay
la source
0

J'avais un projet de base de données dans la solution qui a empêché la modification du projet Webforms.

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

Adam
la source
0

Pour VS2017, cela peut aider à supprimer le fichier .suo dans votre solution, cela a fonctionné pour moi. :)

Nieksa
la source