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


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

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

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

7 55

7 ответов:

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

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

  1. щелкните правой кнопкой мыши на .EXE приложение и выберите Свойства
  2. перейти к сборке Вкладка
  3. измените поле со списком цель платформы на x86

enter image description here

лично я на самом деле хочу, чтобы stop-and-edit не редактировал и не продолжал.

поэтому я просто отключаю Инструменты / Параметры / отладку / редактирование и продолжаю.

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

функция "изменить и продолжить" для 64-разрядного кода будет поддерживаться в Visual Studio 2013.

подробнее здесь.

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

вы можете найти сообщение об ошибке лепет.

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

для проекта VB, щелкните правой кнопкой мыши на проекте и перейти к Свойства / компиляция / расширенные параметры компиляции / целевой процессор и установите его в "x86". Для проекта C# щелкните правой кнопкой мыши по проекту и перейдите в Properites/Build/Platform Target и установите его в "x86".

надеюсь, что это помогает.

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

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

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

В конце концов, это была следующая строка отсутствует в моей .файл csproj:

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

Я не знаю, почему она пропала ... Я думаю, MS Visual C# Express 2010 не является bugfree ;)

  1. когда целевой процессор установлен на "любой процессор", он будет работать как 32-битное приложение на 32-битной windows и 64-битное приложение на 64-битной windows. Однако visual studio не разрешает функцию "редактировать и продолжать" для 64-битного приложения.

  2. для того, чтобы отлаживать "свободно" на 64-битной машине, мы можем либо:

    a) установите "целевой процессор" на "любой процессор", но установите флажок "предпочитаю 32bit".

    b) или установите "целевой процессор" в 'x86'

очень важно: оба варианта требуют, чтобы поле "включить оптимизацию" было снято.