У меня есть приложение с проектами, имеющими платформу как любой процессор. при запуске приложения на 64-битной машине (win7) в VS2008 я вижу в диспетчере задач процесс с * 32, что означает, что он работает в 32-битном режиме. Но я читал, что приложения с платформой как любой процессор работают в зависимости от машины (64-битная в моем случае). Я весь в замешательстве. Пожалуйста, объясни.
Запуск 32-битного приложения .NET на 64-битной машине
Ответы (3)
Вы уверены, что проект, создающий исполняемый файл, имеет значение AnyCPU
, а не x86
? Этот проект, а также все упомянутые проекты должны быть установлены на AnyCPU
. Если вы сделаете это, процесс будет работать как 64-битный процесс в 64-битной Windows (и как 32-битный процесс в 32-битной Windows).
Именно целевая платформа для проекта .EXE определяет «разрядность» приложения. Если какой-либо упомянутый проект .DLL имеет «разрядность», несовместимую с «разрядностью» работающего приложения, вы получите ошибку времени выполнения. Например. если проект AnyCPU
.EXE ссылается на проект x86
.DLL, он успешно запустится в 32-битной Windows, но завершится ошибкой выполнения в 64-битной Windows.
Вопрос касается Visual Studio 2008, но Visual Studio 2012 с .NET 4.5 представила любая настройка cpu32bitpreferred:
anycpu32bitpreferred компилирует вашу сборку для запуска на любой платформе. Ваше приложение работает в 32-разрядном режиме в системах, поддерживающих как 64-разрядные, так и 32-разрядные приложения. Этот параметр можно указать только для проектов, предназначенных для .NET Framework 4.5.
Включение этого параметра (по умолчанию в Visual Studio) означает, что AnyCPU
приложения будут выполняться как 32-разрядные даже в 64-разрядной операционной системе.
Поскольку VS2008 является 32-битным, я ожидаю, что он также запустит 32-битный процесс. Другая причина может заключаться в том, что вы ссылаетесь только на 32-разрядные библиотеки DLL?
Вы пытались запустить приложение вне VS2008 - оно все еще в 32-битном режиме?
- Перейдите в Сборка => Диспетчер конфигураций.
- Щелкните раскрывающийся список Active Solution Platform и выберите .
- В раскрывающемся списке «Тип или выберите новую платформу» выберите «x64».
- Нажмите ОК.