none
Компиляция .NET 1.1 приложения под платформу x32 в Visual Studio .NET 2003 RRS feed

  • Вопрос

  • Есть необходимость скомпилировать .NET 1.1 приложение в Visual Studio .NET 2003 под платформу x32, а не AnyCPU.

    В 2008-й студии есть соответствующая опция - PlatformTarget - AnyCPU, x32, x64.  В 2003-й же выбор платформы только из одной опции - .NET. Студия - Visual Studio .NET Enterprise Architect 2003, установлены все компоненты, проект написан на C#.

    18 февраля 2011 г. 14:18

Ответы

  • И тем не менее сборка под .NET 1.1 запускается на 64-разрядной Windows как 64-разрядный процесс (по крайней мере, там где она вызывает методы из 32-разрядной библиотеки - приложение падает). Проблему удалось решить с помощью утилиты CorFlags.exe, которая входит в состав более старших версий Visual Studio (используя параметр /32BIT+).

    • Помечено в качестве ответа IvanSG 22 февраля 2011 г. 21:03
    22 февраля 2011 г. 21:02

Все ответы

  • Во времена .NET 1.1 еще не было x64 :) Под AnyCPU в Visual Studio 2003 понимается как раз x86.

    Подробнее в статье Visual Studio .NET Platform Target Explained . Цитата оттуда: "All assemblies targeting .Net 1.0 and 1.1 will be 32-bit only (x86)".

    • Помечено в качестве ответа Abolmasov Dmitry 20 февраля 2011 г. 16:26
    • Снята пометка об ответе IvanSG 22 февраля 2011 г. 21:02
    18 февраля 2011 г. 14:42
  • Специально для тех, кто любит отвечать не по существу вопроса: смена платформы x86/x64 не меняет генерируемый IL-код сборки, так как он, по определению, кроссплатформенный. Смена платформы только помечает исполняемый файл как для 32- или 64-разрядной платформы, так, чтобы установить явные ограничения на тип процесса, в котором будет исполняться этот код (полезно, когда в Вашем приложении используются неуправляемые 32-разрядные библиотеки, которые не могут быть загружены в 64-разрядный процесс).
    18 февраля 2011 г. 14:47
  • И тем не менее сборка под .NET 1.1 запускается на 64-разрядной Windows как 64-разрядный процесс (по крайней мере, там где она вызывает методы из 32-разрядной библиотеки - приложение падает). Проблему удалось решить с помощью утилиты CorFlags.exe, которая входит в состав более старших версий Visual Studio (используя параметр /32BIT+).

    • Помечено в качестве ответа IvanSG 22 февраля 2011 г. 21:03
    22 февраля 2011 г. 21:02