Есть ли лучшие способы скопировать нативный dll в папку bin?

У меня есть код оболочки 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, чтобы зависимость всегда была разрешена? Альтернативно, есть ли другой подход к этому типу сценария?

Ответы на вопрос(6)

Ваш ответ на вопрос