Modifica e continua: “Le modifiche non sono consentite quando …”

Anche se creo un progetto WinForms pulito, Modifica e Continua non funziona e mi dà l’errore:

Le modifiche non sono consentite quando il debugger è stato collegato a un processo già in esecuzione o il codice in fase di debug è stato ottimizzato in fase di compilazione o di esecuzione.

  1. L’opzione Modifica e continua è selezionata in Strumenti → Opzioni → Debug.
  2. L’ottimizzazione non è abilitata.
  3. Sembra che non ci sia alcuna configurazione del profiler gestito.
  4. Sto correndo in modalità Debug
  5. Sono in esecuzione su CPU x64 e Windows XP a 32 bit, ma l’impostazione dell’objective della piattaforma su x86 anziché su AnyCpu non aiuta.
  6. Riparare l’installazione di Visual Studio non aiuta.

Ho anche trovato questo articolo sul sito Web MSDN:

Scenari non supportati

Modifica e continua non è disponibile nei seguenti scenari di debug:

  • Debug su Windows 98.

  • Debug in modalità mista (nativo / gestito).

  • Debug SQL.

  • Debug di una discarica di Dr. Watson.

  • Modifica del codice dopo un’eccezione non gestita, quando l’opzione “Srotolare lo stack di chiamate su eccezioni non gestite” non è selezionata.

  • Debug di un’applicazione di runtime incorporata.

  • Eseguire il debug di un’applicazione con Allega anziché eseguire l’applicazione con Avvia dal menu Debug.

  • Debug di codice ottimizzato.

  • Debug del codice gestito quando la destinazione è un’applicazione a 64 bit. Se si desidera utilizzare Modifica e Continua, è necessario impostare la destinazione su x86. (Proprietà del progetto, scheda Compile, impostazioni del compilatore avanzato.).

  • Eseguire il debug di una vecchia versione del codice dopo che una nuova versione non è riuscita a creare a causa di errori di compilazione.

Ma posso rispondere “No” a ogni elemento in questa lista.

Ha funzionato prima, ma diversi giorni fa ha smesso di funzionare, e non so quale potrebbe essere la ragione.

Finalmente ho risolto il problema: DISINSTALLA Gallio

Gallio sembra avere parecchi bordi grezzi ed è meglio non usare MbUnit 3.0 ma usare il framework MbUnit 2.0 ma usare il gallio runner, che si sta eseguendo senza installare dal programma di installazione (che ha anche installato un plugin per lo studio visivo).

Per inciso, ho avuto il problema anche dopo aver “disabilitato” il plugin Gallio. Solo la disinstallazione ha risolto il problema.

PS. Modificato da nightcoder:
Nel mio caso, la distriggerszione di TypeMock Isolator (framework di simulazione ) ha finalmente aiutato ! Modifica e continua ora funziona !!!

Ecco la risposta dal supporto TypeMock:

Dopo aver esaminato ulteriormente il problema di modifica e continuazione e aver discusso con Microsoft, abbiamo raggiunto la conclusione che non può essere risolto con Isolator. Isolator implementa un profiler CLR e, in base alla nostra ricerca, una volta abilitato e collegato un profiler CLR, la modifica e la continuazione vengono automaticamente disabilitate. Mi dispiace dire che questo non è più considerato un bug, ma piuttosto una limitazione di Isolator.

Soluzioni applicabili

Ecco una lista incompleta e non ordinata di possibili soluzioni da provare se si * desidera correggere Edit & Continue rapidamente:

  • Assicurati di essere in modalità di debug
  • Assicurati di non avviare una procedura in modalità mista
  • Prova a impostare la destinazione della CPU su x86 anziché su AnyCPU (su macchine x64)
  • Deseleziona la casella di controllo Codice ottimizzazione per Modalità debug in Proprietà progetto-> Debug
  • Deseleziona Abilita ottimizzazioni nelle Impostazioni avanzate del compilatore
  • (ASP.NET) Controlla la risposta del nightcoder se è il caso
  • (ASP.NET) Controllare questa risposta (per matrice) se è il caso
  • (ASP.NET) Assicurarsi di aver abilitato Modifica e Continua nella scheda Web (vs2010)
  • (ASP.NET) Andare su Proprietà> Web> Server e assicurarsi che Abilita e continua sia selezionato in Usa server di sviluppo di Visual Studio .
  • (ASP.NET WebAPI) Assicurati di aver interrotto il metodo del controller utilizzando un punto di interruzione, prima di provare a modificarlo.
  • Vai su Strumenti> Opzioni> Debug> Generale e assicurati che Richiedi file di origine per abbinare esattamente la versione originale è deselezionata.
  • Stai usando Microsoft Fakes? Inibisce Modifica e continua.
  • Uccidere tutte le istanze * .vshost.exe selezionando End Process Tree nel Task Manager . VS rigenererà un’istanza corretta.
  • Rimuovi tutti i breakpoint con Debug-> Elimina tutti i punti di interruzione
  • Abilita e continua esiste sia nel menu Strumenti> Opzioni> Debug e anche nelle Impostazioni progetto . Assicurati di controllare entrambi i posti. modifica e continua non è supportato con l’impostazione estesa di Intellitrace.
  • Assicurati che le informazioni di debug in Proprietà progetto> Crea> Avanzate> Output> Informazioni di debug siano impostate su Completo
  • Alcuni plugin potrebbero interferire. Controllare distriggersndo / disinstallando e quindi riprovando le altre soluzioni.
  • Se non stai prestando sufficiente attenzione, l’errore che ottieni mentre cerchi di risolvere il problema potrebbe cambiare in qualcos’altro che è più facile da diagnosticare. Ad esempio, un metodo che contiene un’espressione lambda non può supportare la modifica e continuare.
  • Assicurati che la variabile di sistema COR_ENABLE_PROFILING non sia impostata su 1 . Alcuni profiler lo impostano durante l’installazione e lo lasciano in questo modo dopo la disinstallazione. Aprire un prompt dei comandi e digitare set per verificare rapidamente che il sistema sia interessato, in tal caso rimuovere la variabile o impostarla su 0 :

  • In Windows 8 e versioni successive, cerca Sistema (Pannello di controllo).

  • Fai clic sul link Impostazioni avanzate di sistema .
  • Fai clic su Variabili d’ambiente .
  • Rimuovi COR_ENABLE_PROFILING

  • Tieni presente gli scenari non supportati (come riportato nella domanda) e le modifiche non supportate .

* per “tu”, intendo il visitatore della pagina che sta battendo la testa su una tastiera per trovare la soluzione.

Sentiti libero di modificare questa risposta se hai altri suggerimenti!

Se esegui il debug di un’applicazione ASP.NET, vai su proprietà> web> Server, e assicurati che “triggers e continua” sia selezionato in Usa server di sviluppo di Visual Studio.

Ho avuto lo stesso problema. Ho anche re-installato VS 2008 ma il problema non è andato via. Tuttavia, quando ho eliminato tutti i punti di interruzione, ha iniziato a funzionare.

 Debug->Delete All Breakpoints 

Penso che stia accadendo perché avevo cancellato una pagina di aspx che aveva punti di interruzione nel suo codice, e quindi ho creato un’altra pagina con lo stesso nome. Questo probabilmente ha confuso il VS 2008.

Un paio di cose da controllare

  • Assicurati che la tua compilazione sia impostata su Debug vs Release
  • Assicurati di non avviare una procedura in modalità mista
  • Se su una macchina a 64 bit Assicurati di impostare la destinazione della CPU su x86 anziché su AnyCPU

MODIFICARE

Non credo che ciò dovrebbe avere importanza, ma assicurati che il processo di hosting sia abilitato per la piattaforma di destinazione. Probabilmente non ti sarà d’aiuto.

Se si fa una nuova ricerca per nuovi progetti, potrebbe essere qualcosa di ancora più sottile. Vorrei provare quanto segue.

  • HKCU di backup: \ Software \ Wow6432Node \ VisualStudio \ 9.0 (forse basta rinominarlo)
  • Elimina la stessa chiave
  • Prova di nuovo la riproduzione

Se la tua preoccupazione è con un’app ASP.NET, assicurati di aver modificato e continuare abilitato nella scheda web (vs2010). C’era anche un’impostazione separata per il debug di ASP.NET nelle versioni precedenti.

Saluti,

Adamo.

Nessuna delle soluzioni di cui sopra ha funzionato per me (in esecuzione su una macchina 64x).

Alla fine ho fatto clic su 'advanced compiler settings' e UNCHECKED 'enable optimizations ” e ora posso passare attraverso il codice e modificarlo durante il debug.

Ho scoperto che anche se le proprietà di progetto e la scheda debug sono impostate su Debug e tutte le altre impostazioni sono corrette, ricevo comunque il messaggio, tuttavia dopo averne scavato di più nel menu Build seleziona Configurations Manager … e assicurati che Debug sia selezionato anche in due posti lì. vai a capire … quanti posti diversi hanno bisogno di impostare il debug ?????? anche se si imposta Project – Configuration to Debug, in Build – Manager non si modifica quindi si cambia anche la stessa impostazione Project Configuration – sembra di nuovo un problema microsoft …….

Questo problema è dovuto all’impostazione di Intellitrace

Se Intellitrace è abilitato, assicurati che sia selezionato solo l’evento Intellitrace

Altrimenti ciò non consentirà la modifica e continuerà ..

Se fai clic sulle opzioni Intellitrace, vedrai le avvertenze.

Per me, per una ragione che non capisco, l’impostazione “Genera informazioni di debug” in “Impostazioni avanzate del compilatore” è stata impostata su “pdb-only” anziché su “Full”.

Per impostazione predefinita, questo parametro è sempre impostato su “Completo” ma un misterioso poltergeist ha modificato questo parametro la scorsa notte. 🙂

PS Sono in Visual Basic .Net con Visual Studio 2010

Le riprese successive mi hanno aiutato a usare VS2010:

vai su Strumenti, Opzioni, Debug, Generale e assicurati che “Richiede che i file di origine corrispondano esattamente alla versione originale” sia deselezionato.

Ciò si verifica quando il debugger non ha raggiunto un punto di interruzione o non hai premuto il comando Interrompi tutto (pausa). Non potrebbe essere così semplice potrebbe?

Ho avuto questo problema in Microsoft Visual Studio 2008 e la soluzione è semplice. quando esegui il tuo progetto, imposta la modalità “Debug” e non “Rilascia”. La soluzione di un’altra persona può essere utile.

“Modifica e continua”, se abilitato, consentirà solo di modificare il codice quando è in modalità di interruzione: ad es. Facendo in modo che l’esecuzione venga messa in pausa da un’eccezione o colpendo un punto di interruzione.

Ciò implica che non puoi modificare il codice quando l’esecuzione non è in pausa! Quando si tratta di eseguire il debug di progetti Web (ASP.NET), questo è molto intuitivo, poiché spesso si desidera apportare modifiche tra le richieste. In questo momento, il codice del tuo (probabilmente) debugging non è in esecuzione, ma non è nemmeno in pausa!
Per risolvere questo problema, puoi fare clic su “Break all” (o premere Ctrl + Alt + Break ). In alternativa, imposta un punto di interruzione da qualche parte (ad esempio nel tuo evento Page_Load ), quindi ricarica la pagina in modo che l’esecuzione si interrompa quando raggiunge il punto di interruzione e ora puoi modificare il codice. Anche codice in file .cs .

L’errore dice che una ansible causa è: “il codice in fase di debug è stato ottimizzato in fase di build o di esecuzione”. Vai a Proprietà progetto-> Debug e deseleziona la casella Codice ottimizzazione per la modalità Debug.

Se creo un nuovo progetto, le modifiche durante il debug non funzionano. Se creo un nuovo sito Web, le modifiche durante il debug funzionano come previsto.

Alcune cose che sembravano aiutare a usare VS2010:

  • vai su Strumenti, Opzioni, Debug, Generale e assicurati che “Richiede che i file di origine corrispondano esattamente alla versione originale” sia deselezionato.
  • si possono lasciare più istanze di .vshost.exe, ad esempio separando il debugger VS da un processo arrestato. Ciò interferirà con i breakpoint e compila pure. Utilizzare la scheda Task Manager, Processi per eliminare tutte le istanze di .vshost.exe facendo clic con il pulsante destro del mouse su ciascuna istanza e selezionando Fine struttura dei processi. VS creerà una nuova istanza.

Ho rimosso un set di dati dal mio progetto perché non l’ho usato. Successivamente ho potuto modificare il programma durante il debug.

Ho fatto tutti i cambiamenti menzionati in ogni altra risposta e nessuno ha funzionato. Cosa ho imparato? Abilita e continua esiste sia nel menu Strumenti> Opzioni> Debug e anche nelle impostazioni del progetto. Dopo aver controllato entrambi, Enable e Continue hanno funzionato per me.

Mi sono imbattuto in questo oggi – si scopre che avere le informazioni di debug impostate su pdb-only (o nessuna, immagino) impedirà l’esecuzione di Edit e Continue.

Assicurati che le tue informazioni di debug siano prima impostate su “pieno”!

Proprietà progetto> Crea> Avanzate> Output> Informazioni di debug

Nel mio caso, basta ripristinare le impostazioni predefinite del debugger e impostare IntelliTrace-> solo gli eventi intellytrace aiutano

incorporare i tipi di interoperabilità Visual Studio deve essere impostato su falso

Questo è successo in un file di class collegato. Il resto del progetto ha permesso E & C, ma ho avuto lo stesso errore nel modificare il file collegato. La soluzione era di interrompere il file collegato nel proprio progetto e fare riferimento al progetto.

Ho affrontato lo stesso problema. Il mio problema era che potevo modificare un file, ma non un altro (entrambi sono nello stesso progetto). Più tardi ho scoperto che il file che non potevo modificare faceva anche parte di un altro progetto. Non è stato caricato un altro progetto (Unit Test) e il debugger VS intelligente mostra l’errore che l’assembly per questo dato file non è stato caricato e non sono consentite modifiche. Che strano!

Quindi, ho dovuto scaricare il progetto unit-test e continuare il debug di EnC.

Avevo un progetto di database nella soluzione che impediva la pubblicazione del progetto webforms.

Ho cliccato su “Scarica” ​​sul progetto del database e tutto ora funziona dolcemente.

Per VS2017 può aiutare a rimuovere il file .suo nella soluzione, ha funzionato per me. 🙂

Stavo affrontando lo stesso problema in Visual Studio 2005. La mia configurazione è a 64 bit. Sta funzionando bene su una delle soluzioni VS ma non l’altra. Ho notato che ho abilitato solo “Abilita modifica e continua” per il progetto in cui volevo apportare modifiche in modalità di debug. Questo finalmente mi è stato risolto quando ho selezionato “Abilita e continua” anche per il mio progetto di avvio .

Non sono state apportate modifiche alla configurazione tranne l’abilitazione e continua necessaria.

Sembra illogico, ma l’unico modo era disabilitare la modifica e continuare dalle opzioni di VS 2017 … Quindi AspNet modifica e continua ha iniziato a funzionare …

ciò che ha funzionato per me è stato deselezionare “Usa modalità di compatibilità gestita” sotto

Strumenti -> Opzioni -> Debug

TBN: controllare o deselezionare “Richiede che il file sorgente corrisponda esattamente alla versione originale” non sembra influenzare la E & C

Spero che questo possa aiutare.

Abilita modifica e continua solo lavoro esegui IIS Express. Non lavorare in Local ISS o Host esterno.