Указание non-.NET зависимости в Visual Studio
-
02-07-2019 - |
Вопрос
Я вызываю 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.