У меня есть код оболочки C #, который вызывает функции из нативной (C ++) dll.В настоящее время я могу добавить ссылку на C # dll и установить для параметра «Копировать локальный» значение true.Однако нативная библиотека DLL, которая является зависимостью, не может быть добавлена в качестве ссылки - поэтому нет опции «Копировать локально».
Я пробовал следующие подходы
Использование событий после сборки для копирования собственной библиотеки DLL из папки Libs в $(TargetFolder)
copy "$(ProjectDir)Libs\NQuantLibc.dll" "$(TargetDir)NQuantLibc.dll"
Включение встроенной библиотеки DLL в качестве существующего элементав проекте (Добавить -> Существующий элемент -> Включить DLL).Эта опция позволяет мне использовать опцию «Копировать локально».Недостатком этого подхода является то, что dll всегда отображается как элемент проекта.
Я также попробовал «Показать все файлы», что позволило мне увидеть папку Libs.Затем я включил в проект файл NQuantLibc.dll, который позволил мне установить опцию «Копировать локально».Однако это дало мне неожиданный результат.Он создал подпапку Libs, содержащую dll в папке bin (например, bin/debug/Libs/NQuantLibc.dll
).Не идеально, так как C # dll не смог правильно вызвать нативный dll, поскольку его там не было.
Обе вышеуказанные опции работают.Есть ли лучшие способы скопировать нативный dll в папку bin, чтобы зависимость всегда была разрешена?В качестве альтернативы, есть ли другой подход к сценарию такого типа?