Может ли приложение WinForms быть настроено для работы в качестве & # 8220; x86 & # 8221; без перекомпиляции?

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

Вопрос

Может ли приложение WinForms скомпилировано для "любого процессора"? быть настроенным для запуска как "x86" на 64-битном сервере без перекомпиляции приложения? В частности, я ищу параметр app.config или апплет панели управления для достижения этой цели. Все клиенты клиента - x86, но сервер - x64, и нам нравится устанавливать приложение WinForms на сервере, чтобы администраторы могли настраивать и контролировать систему. Мы бы предпочли не перекомпилировать только для сервера.

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

Решение

С http: // www.request-response.com/blog/PermaLink,guid,34966ef8-3142-46b2-84e0-372b5c36ddcc.aspx

  

Однако вы можете контролировать и   переопределить это поведение по умолчанию даже   после того, как ваш код был скомпилирован.   Есть удобный инструмент под названием   Corflags.exe присутствует в SDK, который   позволяет принудительно скомпилировать 'anycpu'   код для использования 32-битного процесса в 64-битном   мир.

Об использовании этой утилиты можно узнать здесь http: //msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx

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

Конфигурация не требуется, если вы правильно написали свой управляемый код. До тех пор, пока на 64-битном компьютере установлены правильные каркасы, процесс JIT позаботится о любых различиях между 32- и 64-битными требованиями.

Единственное, о чем вам нужно беспокоиться в своем собственном коде, это о том, выполняете ли вы P / Invoke. В этом случае каждый раз, когда вы вызываете функцию API, которая использует тип HANDLE или тип void *, вы должны всегда использовать System.IntPtr, а не System.Int32. В мире .NET тип данных int ВСЕГДА 32-битный, даже на 64-битной машине. Аналогично, long всегда 64-битный, независимо от архитектуры.

А IntPtr всегда имеет размер void *, и поэтому JIT соответствует разным размерам в зависимости от архитектуры машины, на которой вы работаете.

Я тоже нашел эту ссылку полезной: http://blogs.intesoft.net/2007/12/default.aspx

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