Как создать проект в любом режиме процессора при работе со сторонними библиотеками?
-
27-10-2019 - |
Вопрос
У меня есть сторонняя библиотека, которая доступна для загрузки в 32-битном или 64-битном .dlls. Моя машина разработки запускает 32-битную Windows 7. My Target Production Machine-64-битный Windows Server 2008 R2. Мое проектное решение в настоящее время строит в любом режиме процессора.
Есть ли элегантный способ рассмотрения этого случая без необходимости иметь дубликаты проектов (MyProject32 и MyProject64, каждый из которых ссылается на соответствующую 32 или 64-битную версию 3-й личной библиотеки)?
Первое решение, о котором я подумал, - зацепить в AppDomain.AssemblyResolve
мероприятие, и иметь мои сторонние библиотеки в своих собственных 32 и 64-битных подразделениях. Затем я бы загрузил соответствующую сборку динамически на основе текущего режима.
Второе решение, о котором я подумал,-это построить только в 32-битном режиме и использовать только 32-разрядную 3-ю библиотеку (которая для меня кажется отговоркой ...).
Ни одно решение заставляет меня чувствовать себя особенно чистым ... любой совет был бы полезным!
Решение
Если это внутренняя программа, то я не вижу проблемы. Установите 32-разрядную DLL на машине разработки и установите 64-битный DLL на производственной машине. Не устанавливайте не тот DLL на неправильную машину. С внутренним приложением проблема неправильного DLL на машине в значительной степени эквивалентна отсутствию DLL вообще.
Если это приложение, которое вы будете распространять, или вы не можете зависеть от машин, имеющих правильные DLL в нужном месте, то ваше первое решение звучит разумно: выясните, какой DLL подходит для текущей среды времени выполнения, и и Загрузите его. Или, если его нельзя загрузить, отобразите сообщение об ошибке, указывающее, в чем проблема.