Как создать проект в любом режиме процессора при работе со сторонними библиотеками?

StackOverflow https://stackoverflow.com/questions/4857221

Вопрос

У меня есть сторонняя библиотека, которая доступна для загрузки в 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 подходит для текущей среды времени выполнения, и и Загрузите его. Или, если его нельзя загрузить, отобразите сообщение об ошибке, указывающее, в чем проблема.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top