Можно ли настроить приложение WinForms для работы в режиме "x86" без перекомпиляции? - PullRequest
4 голосов
/ 09 октября 2008

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

Ответы [ 3 ]

11 голосов
/ 09 октября 2008

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

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

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

1 голос
/ 09 октября 2008

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

1 голос
/ 09 октября 2008

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

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

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

...