“Изменения в 64-разрядных приложениях не разрешены” при отладке в Visual Studio 2008
-
19-09-2019 - |
Вопрос
Я использую Visual Studio 2008, C #.Я пытаюсь использовать edit-and-continue (редактировать код во время отладки) и получаю это исключение:
"Изменения в 64-разрядных приложениях не разрешены"
Почему это?Есть ли обходной путь?
Решение
Edit and Continue не поддерживается в 64-разрядных приложениях на уровне CLR, поэтому Visual Studio также не может его реализовать.
Самый простой способ обойти эту проблему - настроить таргетинг вашего приложения на чипы x86.Это приведет к тому, что он будет запускаться в режиме Wow64 как 32-разрядный процесс и, следовательно, сможет выполнять ENC.Вы можете сделать это, выполнив следующее
- Щелкните правой кнопкой мыши на .EXE-приложение и выберите Свойства
- Перейдите на вкладку Сборка
- Измените поле со списком Целевая платформа на x86
Другие советы
Лично я на самом деле хочу "остановить и отредактировать", а не "редактировать и продолжать".
Поэтому я просто отключаю Инструменты / Параметры / Отладку / Редактирование и продолжаю.
Это не позволяет этому надоедливому диалоговому окну приставать ко мне по поводу отсутствующей функции, которую я изначально не хотел :-)
Функция "Редактировать и продолжить" для 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 не свободен от ошибок ;)
когда для целевого процессора установлено значение "Любой процессор", он будет запускаться как 32-разрядное приложение в 32-разрядной Windows и 64-разрядное приложение в 64-разрядной Windows.Однако Visual Studio не разрешает функцию "редактировать и продолжать" для 64-разрядного приложения.
Чтобы "свободно" отлаживать на 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 показано ниже.