Есть несколько вещей, которые нужно проверить, но в основном это должно сработать:
- Убедитесь, что все ваши сборки скомпилированы в 'Any CPU'.
- Проверьте любые сторонние сборки, которые могут быть несовместимы с 64-разрядными.
- Если в вашем приложении есть какой-либо COM Interop / PInvoke, он должен быть 64-битным (например, выравнивание памяти и т. Д.), Используя
IntPtr
вместо Int32
в случае адресов.
- Если это не сработает, вы можете остаться в 64-битной операционной системе и просто изменить свой AppPool на использование WOW.
- Попробуй. Легко раскрутить новый экземпляр EC2.
Я предлагаю еще одну вещь, которую люди упоминают, когда переходят на 64-битную версию, они думают, что что-то не так, потому что приложение использует больше памяти, чем оно было, когда оно было 32-битной. Это часто вызывается «раздуванием указателя». Адреса теперь имеют ширину 64 бита, а не 32 бита.
В некоторых других, более экстремальных случаях, поскольку x64 и x86 .NET Framework имеют разные JIT-модули, x64 оптимизируется по-разному и может скорее снизить производительность, чем улучшить. Это было более серьезной проблемой для .NET Framework 2.0, когда его не исправили.