Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Запуск 32-битного приложения .NET на 64-битной машине

Автор вопроса: nishantvОтветов: 3

У меня есть приложение с проектами, имеющими платформу как любой процессор. при запуске приложения на 64-битной машине (win7) в VS2008 я вижу в диспетчере задач процесс с * 32, что означает, что он работает в 32-битном режиме. Но я читал, что приложения с платформой как любой процессор работают в зависимости от машины (64-битная в моем случае). Я весь в замешательстве. Пожалуйста, объясни.

32bit-64bit

Ответы

Ответ 1 · рейтинг 2 · Martin Liversage

Вы уверены, что проект, создающий исполняемый файл, имеет значение 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-разрядной операционной системе.

Ответ 2 · рейтинг 1 · Thorsten Dittmar

Поскольку VS2008 является 32-битным, я ожидаю, что он также запустит 32-битный процесс. Другая причина может заключаться в том, что вы ссылаетесь только на 32-разрядные библиотеки DLL?

Вы пытались запустить приложение вне VS2008 - оно все еще в 32-битном режиме?

Ответ 3 · Mayur Gondaliya

  1. Перейдите в Сборка => Диспетчер конфигураций.
  2. Щелкните раскрывающийся список Active Solution Platform и выберите .
  3. В раскрывающемся списке "Тип или выберите новую платформу" выберите "x64".
  4. Нажмите ОК.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы