Вопрос

Я вызываю non-.NET библиотеку DLL из моего проекта, используя P / Invoke , что означает, что .dll всегда должна присутствовать в каталоге .exe.

Есть ли какой-нибудь способ сообщить Visual Studio об этой зависимости, чтобы она автоматически копировала .dll в выходной каталог при компиляции и автоматически включит .dll в настройках?Или я должен сделать это вручную?

Это было полезно?

Решение

Вы можете скопировать / связать этот файл (ы) с проектом и в свойствах Windows установить для "Действие сборки" значение "Нет", а для "Копировать в выходной каталог" значение "Копировать, если новее" или "Копировать всегда".

Или вы можете использовать "События предварительной сборки" и "События после сборки", где вы можете указать любые пакетные сценарии.

Я предпочитаю второй вариант, потому что этот способ более гибкий, чем первый.

Также вы можете изменить файл MSBuild и добавить задачу для копирования файла (ов).

Другие советы

Вы можете просто добавить .DLL для вашего проекта.

Выберите нужный Properties панель для этого файла и установите Build Action Для Content и Copy to Output Directory Для Copy if newer.

Я думаю, что одна из проблем с простым добавлением .DLL в проект заключается в том, что вам могут понадобиться разные версии DLL для отладочных и релизных сборок.Можно подумать, что вы можете добавить в файл как отладочную, так и релизную версии библиотеки DLL и, основываясь на конфигурациях, исключить неподходящую, но я не смог найти способ сделать это.Я использую Visual Studio 2010.Я уверен, что это работало в старые времена с VS6.

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