it-swarm.com.ru

"Изменения в 64-битных приложениях не допускаются" при отладке в Visual Studio 2008

Я использую Visual Studio 2008, C #. Я пытаюсь использовать edit-and-continue (редактировать код во время отладки) и получаю следующее исключение:

«Изменения в 64-битных приложениях не допускаются»

Это почему? Есть ли обходной путь?

56
ripper234

Редактирование и продолжение не поддерживается в 64-разрядных приложениях на уровне CLR, поэтому Visual Studio также не может реализовать это. 

Самый простой способ обойти эту проблему - настроить приложение на чипы x86. Это заставит его работать в режиме Wow64 как 32-битный процесс и, следовательно, сможет выполнять ENC. Вы можете сделать это, выполнив следующее

  1. Щелкните правой кнопкой по приложению .EXE и выберите «Свойства».
  2. Перейти на вкладку сборки
  3. Измените поле со списком Platform Target на x86

enter image description here

47
JaredPar

Лично, что я на самом деле хочу, это остановить и редактировать, а не редактировать и продолжить.

Поэтому я просто отключаю Сервис/Параметры/Отладка/Редактировать и продолжить.

Это препятствует тому, чтобы это надоедливое диалоговое окно приставало ко мне из-за отсутствующей функции, которую я вообще не хотел :-)

6
Steve Pitchers

Функция «Редактировать и продолжить» для 64-битного кода будет поддерживаться в Visual Studio 2013.

Больше информации здесь .

4
kenchilada

Как сказал jcopenha, на x64 пока нет правки и продолжения. Текущая версия 64-битного CLR не поддерживает его. Тем не менее, есть работа вокруг.

Вы можете найти его на сообщение об ошибке Babble .

Вам необходимо скомпилировать управляемую сборку с целевым процессором x86. Это приведет к использованию 32-битного CLR, а не 64-битного CLR. 

Для проекта VB щелкните проект правой кнопкой мыши и выберите «Свойства»/«Компиляция»/«Дополнительные параметры компиляции»/«Целевой процессор» и установите для него значение «x86» . Для проекта C # щелкните правой кнопкой мыши проект и перейдите в Properites/Build/Platform Target и установите для него значение «x86».

Надеюсь, поможет.

4
Vadim

Функция редактирования и продолжения просто еще не реализована в x64. Я не слышал никаких обновлений о том, когда они планируют сделать это еще.

Смотрите также Почему не редактировать и продолжить работу на 64-разрядной среде CLR?

3
jcopenha
  1. если для параметра Target CPU установлено значение «Any CPU», он будет работать как 32-битное приложение в 32-битных окнах и как 64-битное приложение в 64-битных окнах. Однако Visual Studio не позволяет использовать функцию «редактировать и продолжить» для 64-битных приложений.

  2. Чтобы отладить «свободно» на 64-битной машине, мы можем:

    a) установите для параметра «Target CPU» значение «Any CPU», но установите флажок «Prefer 32bit».

    б) или установите «Target CPU» на «x86»

ОЧЕНЬ важно: оба варианта требуют, чтобы флажок «Включить оптимизации» был снят.

0
Joseph Wu

У меня было такое же сообщение об ошибке в MS Visual C # Express 2010. Это было забавно, потому что приложение определенно было настроено как проект x86!

В итоге в моем файле .csproj отсутствовала следующая строка:

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

Я не знаю, почему этого не было ... Я думаю, что MS Visual C # Express 2010 не без ошибок;)

0
Jane

К сожалению, Edit и Continue не поддерживаются в 64-битной среде. Фактически, если вы попытаетесь использовать Edit & Continue при отладке 64-битного приложения, вы получите следующее сообщение об ошибке: «Изменения в 64-битных приложениях не допускаются» Многие пользователи могут не знать, что по умолчанию, когда вы создаете проект C # или VB в Visual Studio 2008, для «Платформы» для этого проекта устанавливается значение «Любой процессор». Это означает, что если вы запустите приложение в 32-битной операционной системе, ваше приложение будет работать как 32-битный процесс, и, аналогично, если вы запустите приложение в 64-битной операционной системе, приложение будет 64-битным. Следствием «любого процессора» является то, что при попытке отладки приложения в 64-разрядной операционной системе вы не сможете использовать функцию «Изменить и продолжить».

Тем не менее, есть обходной путь. Во время разработки вы можете установить платформу для вашего проекта на 32-битную, что означает, что ваше приложение будет работать как 32-битный процесс даже в 64-битной операционной системе. Это называется WOW64 или «Windows On Windows», что в основном означает, что вы можете запустить 32-разрядное приложение в 64-разрядной операционной системе.

Итак, как вы устанавливаете платформу для вашего проекта на 32-бит? Что ж, вам нужно создать 32-разрядную платформу с помощью диспетчера конфигурации Visual Studio. Вот краткое прохождение.

Сначала откройте диалоговое окно «Диспетчер конфигурации» из меню «Сборка» -> «Диспетчер конфигурации». Диалог Configuration Manager показан ниже.

0
AhmAr KAka