“Изменения в 64-разрядных приложениях не разрешены” при отладке в Visual Studio 2008

StackOverflow https://stackoverflow.com/questions/1498464

Вопрос

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

"Изменения в 64-разрядных приложениях не разрешены"

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

Это было полезно?

Решение

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

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

  1. Щелкните правой кнопкой мыши на .EXE-приложение и выберите Свойства
  2. Перейдите на вкладку Сборка
  3. Измените поле со списком Целевая платформа на x86

enter image description here

Другие советы

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

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

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

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

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

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

Вы можете найти его на Сообщение о лепете ошибки.

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

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

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

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

Смотрите также Почему не редактируется и не продолжается работа над x64 CLR?

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

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

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

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

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

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

    a) установите для "Целевого процессора" значение "Любой процессор", но установите флажок "Предпочитать 32-битный".

    b) или установите для "Целевого процессора" значение "x86"

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

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

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

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

Сначала откройте диалоговое окно "Configuration Manager" из меню Build –> Configuration Manager.Диалоговое окно Configuration Manager показано ниже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top