целевой 64-разрядный сервер, разработка на 32-разрядной ОС

#.net #asp.net

#.net #asp.net

Вопрос:

Предыстория: я разрабатываю ASP.NET веб-приложение, которое будет разработано в Visual Studio 2010 на 32-разрядной ОС Windows XP (стандарт компании, не может быть изменен). Целевой сервер — 64-разрядная версия Windows 2008 Server (IIS 7). Приложение будет ссылаться на неуправляемую DLL (Oracle ODP.NET, 11.2), который имеет как 32-разрядную, так и 64-разрядную версии.

Вопрос: В целом, каков наилучший подход к разработке приложения .NET, которое ссылается на неуправляемую dll, имеющую как 32-разрядную, так и 64-разрядные версии, из 32-разрядной среды разработки ОС, которая развертывается на 64-разрядной ОС? Одним из упомянутых решений было переключение в 32-разрядный режим в IIS, но я хотел бы сохранить прирост производительности от 64-разрядного драйвера.

Комментарии:

1. С этим у меня тоже были проблемы. Я думаю, что @Joel прав, вам понадобятся как 32, так и 64-разрядные DLL. Если это веб-приложение, то еще одна проблема заключается в том, что встроенный веб-сервер casini является 32-разрядным, и при попытке загрузить 64-разрядный драйвер Oracle произойдет сбой с «BadImageFormatException».

Ответ №1:

Если имя библиотеки DLL одинаково для 32 и 64 разрядных версий, то просто напишите его для 32, но при развертывании для 64-разрядной версии просто используйте правильную библиотеку DLL. Это должно сработать, если предположить, что библиотека использовала IntPtr для правильных целей.