web-dev-qa-db-fra.com

"Les modifications apportées aux applications 64 bits ne sont pas autorisées" lors du débogage dans Visual Studio 2008

J'utilise Visual Studio 2008, C #. J'essaie d'utiliser edit-and-continue (modifier le code lors du débogage), et obtenir cette exception:

"Les modifications apportées aux applications 64 bits ne sont pas autorisées"

Pourquoi donc? Y at-il un travail autour?

56
ripper234

Edit and Continue n'est pas pris en charge sur les applications 64 bits au niveau CLR; Visual Studio n'a donc aucun moyen de l'implémenter. 

Le moyen le plus simple de contourner ce problème consiste à cibler votre application sur des puces x86. Cela entraînera son exécution en mode Wow64 en tant que processus 32 bits et donc sa capacité à fonctionner en ENC. Vous pouvez le faire en procédant comme suit

  1. Faites un clic droit sur l'application .exe et choisissez Propriétés
  2. Aller à l'onglet Construire
  3. Modifier la zone de liste déroulante Cible de la plateforme en x86

enter image description here

47
JaredPar

Personnellement, ce que je veux réellement, c’est arrêter-et-éditer, pas éditer-et-continuer.

Je désactive donc simplement Outils/Options/Débogage/Modifier et continuer.

Cela empêche cette boîte de dialogue embêtante de me harceler au sujet d'une fonctionnalité manquante que je ne voulais pas en premier lieu :-)

6
Steve Pitchers

La fonctionnalité "Modifier et continuer" pour le code 64 bits sera prise en charge sous Visual Studio 2013.

Plus d'informations ici .

4
kenchilada

Comme jcopenha a dit, il n'y a pas encore d'édition-and-continue sur x64. La version actuelle du CLR 64 bits ne le prend pas en charge. Cependant, il y a un travail autour.

Vous pouvez le trouver sur Bug Babble post .

Vous devez compiler votre assemblage géré avec un processeur cible de x86. Cela entraînera l'utilisation du CLR 32 bits au lieu du CLR 64 bits. 

Pour un projet VB, cliquez avec le bouton droit de la souris sur le projet et sélectionnez Propriétés/Compiler/Options de compilation avancées/Cible cible et définissez-le sur "x86" ..__ Pour un projet C #, cliquez avec le bouton droit de la souris sur le projet et allez à Propriétés/Construction/Cible de la plate-forme et réglez-le sur "x86".

J'espère que ça aide.

4
Vadim

La fonctionnalité d'édition et de poursuite n'a tout simplement pas encore été implémentée dans x64. Je n'ai pas encore entendu parler du moment où ils prévoient le faire.

Voir aussi Pourquoi Edit and Continue ne fonctionne-t-il pas sur le x64 CLR?

3
jcopenha
  1. lorsque le processeur cible est défini sur "Tout processeur", il s'exécutera comme une application 32 bits sur une fenêtre 32 bits et une application 64 bits sur une fenêtre 64 bits. Cependant, Visual Studio n'autorise pas la fonctionnalité «modifier et continuer» pour les applications 64 bits.

  2. Afin de déboguer 'couramment' sur une machine 64 bits, nous pouvons soit:

    a) définissez 'CPU cible' sur 'N'importe quel processeur' mais cochez la case 'Préférer 32 bits'.

    b) ou, définissez 'CPU cible' sur 'x86'

TRÈS important: les deux options nécessitent que la case "Activer les optimisations" soit décochée.

0
Joseph Wu

J'ai eu le même message d'erreur dans MS Visual C # Express 2010. C'était drôle cependant, parce que l'application était définitivement configurée comme un projet x86!

En fin de compte, il manquait la ligne suivante dans mon fichier .csproj:

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

Je ne sais pas pourquoi il manquait ... J'imagine que MS Visual C # Express 2010 n'est pas sans bug;)

0
Jane

Malheureusement, Edit and Continue n'est pas pris en charge sur 64 bits. En fait, si vous essayez d'utiliser Edit & Continue lors du débogage d'une application 64 bits, vous obtenez le message d'erreur suivant: "Les modifications apportées aux applications 64 bits ne sont pas autorisées" De nombreux utilisateurs peuvent ne pas savoir que, par défaut, Lorsque vous créez un projet C # ou VB dans Visual Studio 2008, la "Plate-forme" du projet est définie sur "Tout processeur". Cela signifie que si vous exécutez votre application sur un système d'exploitation 32 bits, votre application s'exécutera en tant que processus 32 bits et, de la même manière, si vous exécutez votre application sur un système d'exploitation 64 bits, l'application sera en 64 bits. La conséquence de "Tout processeur" est que lorsque vous essayez de déboguer votre application sur un système d'exploitation 64 bits, vous ne pourrez pas utiliser la fonctionnalité Éditer et continuer.

Cependant, il existe une solution de contournement. Pendant le développement, vous pouvez définir la plate-forme de votre projet sur 32 bits, ce qui signifie que votre application s'exécutera en tant que processus 32 bits, même sur un système d'exploitation 64 bits. Ceci s'appelle WOW64 ou "Windows sous Windows", ce qui signifie que vous pouvez exécuter une application 32 bits sur un système d'exploitation 64 bits.

Alors, comment définissez-vous la plate-forme de votre projet sur 32 bits? Eh bien, vous devez créer une plate-forme 32 bits à l'aide de Visual Studio Configuration Manager. Voici une courte procédure.

Commencez par ouvrir la boîte de dialogue "Configuration Manager" à partir de Build -> Configuration Manager. La boîte de dialogue Gestionnaire de configuration est présentée ci-dessous.

0
AhmAr KAka