#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:
Три способа решения этой проблемы:
- Создайте событие после сборки в каждом проекте, которое ссылается на управляемые библиотеки DLL. Событие после сборки будет содержать команду copy для копирования собственных библиотек DLL из источника в пункт назначения.
- Добавьте ваши неуправляемые библиотеки DLL в качестве ссылки на ваши проекты и отметьте ее для копирования в выходной каталог. (об этих двух уже говорилось в комментарии GoodGuyStoft)
- Если ваш проект является внутренним, добавьте путь к DLL в переменную PATH, он работает без особых изменений. Не забудьте развернуть собственные библиотеки DLL вместе с вашим проектом.
С уважением, Каджал
Комментарии:
1. Мне нравится первое предложение, потому что я не хочу добавлять их в качестве содержимого (и обновлять их) для каждого проекта, который его использует. Есть ли способ отладить событие post build, потому что в настоящее время у меня есть один тест с Xcopy, и, похоже, он работает в командной строке, когда я пытаюсь его выполнить, но он ничего не копирует при сборке.
2. Инструменты> параметры, установите детализацию вывода сборки в режим диагностики