2009-09-30 6 views
55

Uso Visual Studio 2008, C#. Io cerco di usare edit-e-continua (modificare il codice durante il debug), e ottenere questa eccezione:"Le modifiche alle applicazioni a 64 bit non sono consentite" durante il debug in Visual Studio 2008

"Modifiche alle applicazioni a 64 bit non sono ammessi"

Perché? C'è una soluzione?

+3

Queste risposte aiutano: http://stackoverflow.com/questions/30183/how-do-i-enable-edit-and-continue-on-a-64-bit-application-and-vb2008-express – Zenuka

+0

Leggi qui http://social.msdn.microsoft.com/forums/en-US/csharpide/thread/479e8c54-5508-4f1d-9c2a-051d4d940424/ –

risposta

47

Modifica e Continua non è supportato su applicazioni a 64 bit a livello di CLR, quindi non è possibile per Visual Studio implementarlo.

Il modo più semplice per ovviare a questo problema è indirizzare l'applicazione ai chip x86. Questo farà in modo che venga eseguito in modalità Wow64 come processo a 32 bit e quindi in grado di eseguire l'ENC. È possibile farlo nel modo seguente

  1. Fare clic destro sull'applicazione .EXE e scegliere Proprietà
  2. Vai alla scheda Costruisci
  3. Modificare la casella combinata di destinazione Piattaforma per x86

enter image description here

+1

Jared, stavo sperando che questo sarebbe stato risolto con .NET. 4.0 ma sembra non essere il caso. Sareste in grado di offrire qualche idea in merito? –

+9

@Steven, purtroppo non c'è molta intuizione da dare qui. Il supporto ENC a 64 bit non è stato convertito in Visual Studio 2010/.Net 4 (per essere giusti abbiamo risolto un ** lotto ** nel 2010 e il nuovo codice ENC non è economico per il team linguistico o CLR). Ma sappi che MS capisce che la mancanza di ENC a 64 bit è un punto dolente e una fonte di frustrazione e immagino sia in cima alla lista di Dev11. Si prega di votare per questo problema - http://connect.microsoft.com/VisualStudio/feedback/details/384453/enable-edit-continue-changes-to-64-bit-applications – JaredPar

+0

Grazie, Jared. –

4

Come jcopenha detto non c'è edit-e-proseguire su x64 ancora. La versione corrente del CLR a 64 bit non lo supporta. Tuttavia, c'è un lavoro in giro.

Lo trovi su Bug Babble post.

È necessario compilare l'assembly gestito con una CPU di destinazione di x86. Ciò causerà l'utilizzo del CLR a 32 bit anziché del CLR a 64 bit.

Per un progetto VB, fare clic con il tasto destro del mouse sul progetto e selezionare Proprietà/Compila/Opzioni di compilazione avanzate/CPU di destinazione e impostarlo su "x86". Per un progetto C#, fare clic con il tasto destro del mouse sul progetto e accedere a Properites/Build/Platform Target e impostarlo su "x86".

Spero che sia d'aiuto.

0

Ho avuto lo stesso messaggio di errore in MS Visual C# Express 2010. È stato divertente, perché l'applicazione è stata sicuramente configurata come un progetto x86!

Alla fine, è stata la seguente riga manca nella mia Csproj file:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MY_CONFIG|x86'"> 
    ... 
    <PlatformTarget>x86</PlatformTarget> 
    ... 
</PropertyGroup> 

Non so il motivo per cui mancava ... Credo che MS Visual C# Express 2010 non è priva di bug;)

6

Personalmente, quello che voglio veramente è stop-and-edit not edit-and-continue.

Quindi spengo semplicemente Strumenti/Opzioni/Debug/Modifica e Continua.

questo modo inibisce quella finestra di dialogo fastidioso da tormentarmi su una funzionalità mancante che non volevo in primo luogo :-)

+1

Mi piace questa risposta rispetto alle altre perché non implica il cambio della piattaforma di destinazione in x86. – jcarpenter2

0
  1. quando bersaglio della CPU è impostato su 'Qualsiasi CPU', lo farà Esegui come un'applicazione a 32 bit su una finestra a 32 bit e un'applicazione a 64 bit su una finestra a 64 bit. Tuttavia, Visual Studio non consente la funzione "modifica e continua" per l'applicazione a 64 bit.

  2. Al fine di eseguire il debug 'fluente' su computer a 64 bit, si può:

    a) set 'CPU di destinazione' a 'Qualsiasi CPU', ma selezionare la casella 'Preferisco 32bit'.

    b) o, impostare 'CPU di destinazione' a 'X 86'

MOLTO importante: entrambi opzione richiede il 'Abilita ottimizzazioni' di dialogo per essere deselezionata.