Как мне построить проект в режиме Any CPU при работе со сторонними библиотеками? - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть сторонняя библиотека, которая доступна для скачивания в 32-битных или 64-битных .dll.Моя машина для разработки работает под управлением 32-битной Windows 7. Моя целевая рабочая машина работает под управлением 64-битной Windows Server 2008 R2.В настоящее время мое проектное решение строится в режиме «Любой процессор».

Существует ли элегантный способ справиться с этим делом без дублирования проектов (MyProject32 и MyProject64, каждый из которых ссылается на соответствующую 32- или 64-разрядную версиюсторонняя библиотека)?

Первое решение, о котором я подумал, - это подключиться к событию AppDomain.AssemblyResolve и иметь сторонние библиотеки в своих 32- и 64-битных подпапках.Затем я бы динамически загружал соответствующую сборку в зависимости от текущего режима.

Второе решение, о котором я подумал, - это сборка только в 32-битном режиме и использование только 32-битной сторонней библиотеки (которая кажетсякак отговорка для меня ...).

Ни одно из решений не заставляет меня чувствовать себя особенно чистым ... Любой совет будет полезен!

1 Ответ

1 голос
/ 01 февраля 2011

Если это внутренняя программа, то я не вижу проблемы. Установите 32-разрядную DLL на компьютере разработчика и установите 64-разрядную DLL на рабочем компьютере. Не устанавливайте неправильную DLL на неправильный компьютер. В случае собственного приложения проблема неправильной библиотеки DLL на компьютере в значительной степени эквивалентна отсутствию библиотеки DLL вообще.

Если это приложение, которое вы будете распространять, или вы не можете зависеть от машин, имеющих правильные библиотеки DLL в нужном месте, то ваше первое решение звучит разумно: выясните, какая библиотека DLL подходит для текущей среды выполнения окружающей среды, и загрузить его. Или, если он не может быть загружен, отобразите сообщение об ошибке, указывающее, в чем проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...