Windows НЕ МОЖЕТ загружать 32-битную DLL в 64-битный процесс - это ограничение, которое вы не можете обойти. Это означает, что если ваша 32-битная DLL-библиотека выполняет какие-либо операции P / Invoc для других 32-битных DLLS (или использует любые 32-битные .Net DLLS), вам не повезет (вам нужно будет запустить весь веб-сайт в 32-битной версии).
Вы не совсем понимаете, когда это работает, а когда нет. Вот объяснения:
- x86 - 32 бита - не может быть загружен в 64-битный процесс.
- x64 - 64-битная - не может быть выполнена на 32-битной машине.
- AnyCPU - dual - Может загружаться и выполняться в обеих средах.
В терминах AnyCPU:
- 64-битный процесс на 64-битной машине - DLL загружается как 64-битная.
- 32-битный процесс на 32-битной машине - DLL загружается как 32-битная.
- 32-битный процесс на 64-битной машине - DLL загружается как 32-битная.
В большинстве случаев можно оставить его как AnyCPU. Однако, как я уже сказал, если вы используете любые собственные или 32-битные DLL-библиотеки .Net, вам нужно будет сделать все ваше приложение 32-битным (и вы ничего не можете, или Microsoft не может с этим поделать).