it-swarm.com.de

"Änderungen an 64-Bit-Anwendungen sind nicht zulässig" beim Debuggen in Visual Studio 2008

Ich verwende Visual Studio 2008, C #. Ich versuche, edit-and-continue zu verwenden (den Code während des Debugging zu bearbeiten) und diese Ausnahme zu erhalten:

"Änderungen an 64-Bit-Anwendungen sind nicht zulässig"

Warum das? Gibt es eine Problemumgehung?

56
ripper234

Bearbeiten und Fortsetzen wird auf 64-Bit-Anwendungen auf CLR-Ebene nicht unterstützt. Daher kann Visual Studio dies auch nicht implementieren. 

Die einfachste Möglichkeit, dieses Problem zu umgehen, besteht darin, Ihre Anwendung auf x86-Chips auszurichten. Dies führt dazu, dass es im Wow64-Modus als 32-Bit-Prozess ausgeführt wird und somit ENC-fähig ist. Sie können dies folgendermaßen tun

  1. Klicken Sie mit der rechten Maustaste auf die .EXE-Anwendung und wählen Sie Eigenschaften
  2. Gehen Sie zum Build-Tab
  3. Ändern Sie das Kombinationsfeld "Plattformziel" in "x86"

enter image description here

47
JaredPar

Was ich eigentlich will, ist Stop-and-Edit, nicht Edit-And-Continue.

Also schalte ich einfach Extras/Optionen/Debugging/Bearbeiten aus und fahre fort.

Dadurch wird verhindert, dass dieses nervige Dialogfeld mich wegen einer fehlenden Funktion belästigt, die ich gar nicht wollte :-)

6
Steve Pitchers

Die Funktion "Bearbeiten und Fortfahren" für 64-Bit-Code wird in Visual Studio 2013 unterstützt.

Weitere Informationen hier .

4
kenchilada

Wie Jcopenha sagte, gibt es auf x64 noch kein Editieren und Fortfahren. Die aktuelle Version der 64-Bit-CLR unterstützt dies nicht. Es gibt jedoch eine Problemumgehung.

Sie finden es auf Bug Babble post .

Sie müssen Ihre verwaltete Assembly mit einer Ziel-CPU von x86 kompilieren. Dies bewirkt, dass die 32-Bit-CLR anstelle der 64-Bit-CLR verwendet wird. 

Klicken Sie für ein VB - Projekt mit der rechten Maustaste auf das Projekt, und wählen Sie Eigenschaften/Kompilieren/Erweiterte Kompilierungsoptionen/Ziel-CPU aus, und setzen Sie es auf "x86" . Klicken Sie für ein C # -Projekt mit der rechten Maustaste auf das Projekt, und wechseln Sie zu Properites/Build/Platform Target und setzen Sie es auf "x86".

Ich hoffe es hilft.

4
Vadim

Die Funktion zum Bearbeiten und Fortfahren wurde in x64 bisher noch nicht implementiert. Ich habe noch keine Updates darüber erhalten, wann sie es planen.

Siehe auch Warum funktioniert die Bearbeitung und Fortführung der x64-CLR nicht?

3
jcopenha
  1. wenn die Ziel-CPU auf 'Any CPU' eingestellt ist, wird sie als 32-Bit-Anwendung in einem 32-Bit-Fenster und als 64-Bit-Anwendung in einem 64-Bit-Fenster ausgeführt. In Visual Studio ist die Funktion "Bearbeiten und Fortfahren" für 64-Bit-Anwendungen jedoch nicht zulässig.

  2. Um auf einem 64-Bit-Rechner "fließend" zu debuggen, können wir entweder:

    a) Setzen Sie "Ziel-CPU" auf "Beliebige CPU", aktivieren Sie das Kontrollkästchen "32 Bit bevorzugen".

    b) oder "Ziel-CPU" auf "x86" setzen

SEHR wichtig: Für beide Optionen muss das Kontrollkästchen "Optimierungen aktivieren" deaktiviert sein.

0
Joseph Wu

Ich hatte dieselbe Fehlermeldung in MS Visual C # Express 2010. Es war jedoch lustig, weil die Anwendung definitiv als x86-Projekt konfiguriert wurde!

Am Ende fehlte folgende Zeile in meiner .csproj-Datei:

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

Ich weiß nicht, warum es fehlte ... Ich denke, MS Visual C # Express 2010 ist nicht fehlerfrei;)

0
Jane

Leider werden Bearbeiten und Fortfahren nicht auf 64-Bit unterstützt. Wenn Sie beim Debuggen einer 64-Bit-Anwendung versuchen, "Bearbeiten & Fortfahren" zu verwenden, wird folgende Fehlermeldung angezeigt: "Änderungen an 64-Bit-Anwendungen sind nicht zulässig." Viele Benutzer wissen möglicherweise nicht, dass Wenn Sie ein C # - oder VB -Projekt in Visual Studio 2008 erstellen, ist die "Plattform" für das Projekt auf "Any CPU" gesetzt. Wenn Sie Ihre Anwendung auf einem 32-Bit-Betriebssystem ausführen, wird Ihre Anwendung also als 32-Bit-Prozess ausgeführt. Wenn Sie Ihre Anwendung auf einem 64-Bit-Betriebssystem ausführen, wird die Anwendung auf 64-Bit eingestellt. "Any CPU" hat zur Folge, dass Sie beim Debuggen Ihrer Anwendung unter einem 64-Bit-Betriebssystem die Funktion "Bearbeiten und Fortfahren" nicht verwenden können.

Es gibt jedoch eine Problemumgehung. Während der Entwicklung können Sie die Plattform für Ihr Projekt auf 32-Bit setzen. Dies bedeutet, dass Ihre Anwendung auch unter einem 64-Bit-Betriebssystem als 32-Bit-Prozess ausgeführt wird. Dies wird als WOW64 oder "Windows On Windows" bezeichnet. Dies bedeutet im Wesentlichen, dass Sie eine 32-Bit-Anwendung auf einem 64-Bit-Betriebssystem ausführen können.

Wie setzen Sie also die Plattform für Ihr Projekt auf 32-Bit? Nun, Sie müssen eine 32-Bit-Plattform mit dem Visual Studio Configuration Manager erstellen. Hier ist ein kurzer Überblick.

Öffnen Sie zunächst den Dialog "Configuration Manager" über Build -> Configuration Manager. Das Configuration Manager-Dialogfeld wird unten angezeigt.

0
AhmAr KAka