Не удалось загрузить.Сетевая сборка с неуправляемыми зависимостями

#c# #c #.net #dll #unmanaged

#c# #c #.net #dll #неуправляемый

Вопрос:

Мы купили библиотеку, которая выполняет некоторую обработку сигналов.

Эта библиотека написана на C и предоставляет два.Сетевые оболочки.

Если мы ссылаемся только на .Мы можем создать сетевую оболочку, но при ее запуске мы получаем исключение, сообщающее нам, что он не может найти библиотеки DLL c .

Если я скопирую собственные библиотеки DLL вручную, все работает нормально.

Каков наилучший способ решения этой проблемы? Я имею в виду автоматическое копирование этого DLL-файла C в выходной каталог нашего проекта путем ссылки на это .Только библиотека DLL NET wrapper.(Эта библиотека используется в нескольких проектах, которые используются в разных приложениях Windows).

Мы не можем добавить C dll в качестве ссылки, поскольку они не являются управляемым кодом.

Для примера предположим, что мой проект имеет следующую архитектуру:

 /
  Src/
    ApplicationA/
      ProjectAUsingReference/
    ApplicationB/
      ProjectBUsingReference/
  Lib/
    /LibXYZ
      WrapperDll.dll
      UnManagedDllOne.dll
      UnManagedDllTwo.dll
  

Все мои приложения имеют одинаковый путь вывода, но мы можем создать только приложение A или только приложение B. Таким образом, дополнительной целью было бы не копировать, если файл уже существует (с той же датой / размером?)

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

1. Простая идея: используйте «Событие после сборки», чтобы добавить команду «копировать», которая дублирует эту DLL. Еще одна идея: добавьте неуправляемую DLL в проект как «содержимое» и установите флажок «Копировать в выходной каталог».

Ответ №1:

Три способа решения этой проблемы:

  1. Создайте событие после сборки в каждом проекте, которое ссылается на управляемые библиотеки DLL. Событие после сборки будет содержать команду copy для копирования собственных библиотек DLL из источника в пункт назначения.
  2. Добавьте ваши неуправляемые библиотеки DLL в качестве ссылки на ваши проекты и отметьте ее для копирования в выходной каталог. (об этих двух уже говорилось в комментарии GoodGuyStoft)
  3. Если ваш проект является внутренним, добавьте путь к DLL в переменную PATH, он работает без особых изменений. Не забудьте развернуть собственные библиотеки DLL вместе с вашим проектом.

С уважением, Каджал

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

1. Мне нравится первое предложение, потому что я не хочу добавлять их в качестве содержимого (и обновлять их) для каждого проекта, который его использует. Есть ли способ отладить событие post build, потому что в настоящее время у меня есть один тест с Xcopy, и, похоже, он работает в командной строке, когда я пытаюсь его выполнить, но он ничего не копирует при сборке.

2. Инструменты> параметры, установите детализацию вывода сборки в режим диагностики