Как заставить Visual Studio копировать DLL-файл в выходной каталог?

У меня есть проект Visual Studio C ++, который опирается на внешний DLL-файл. Как я могу заставить Visual Studio копировать этот DLL-файл автоматически в выходной каталог (debug / release) при создании проекта?

Используйте действие post-build в вашем проекте и добавьте команды для копирования повреждающей DLL. Действие post-build записывается как пакетный скрипт.

В выходной каталог можно ссылаться как $(OutDir) . Каталог проекта доступен как $(ProjDir) . Попробуйте использовать относительные патчи, где это применимо, чтобы вы могли скопировать или переместить папку проекта, не нарушив действие после сборки.

$ (OutDir) оказался относительным путем в VS2013, поэтому мне пришлось объединить его с $ (ProjectDir) для достижения желаемого эффекта:

 xcopy /y /d "$(ProjectDir)External\*.dll" "$(ProjectDir)$(OutDir)" 

BTW, вы можете легко отлаживать сценарии, добавляя «echo» в начале и наблюдая расширенный текст в окне вывода сборки.

Подробности в разделе комментариев выше не работали для меня (VS 2013) при попытке скопировать выходную dll из одного проекта C ++ в папку выпуска и отладки другого проекта C # в рамках одного и того же решения.

Мне пришлось добавить следующее пост-действие (щелкните правой кнопкой мыши по проекту с выходом .dll), затем свойства -> свойства конфигурации -> события сборки -> пост-построить событие -> командная строка

теперь я добавил эти две строки, чтобы скопировать выходную dll в две папки:

 xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller\bin\Release xcopy /y $(TargetPath) $(SolutionDir)aeiscontroller\bin\Debug 

(Этот ответ применим только к C #, а не C ++, извините, я неправильно понял исходный вопрос)

Раньше у меня был DLL-ад. Моим окончательным решением было хранить неуправляемые библиотеки DLL в управляемой DLL в виде двоичных ресурсов и извлекать их во временную папку, когда программа запускает и удаляет их при ее удалении.

Это должно быть частью инфраструктуры .NET или pinvoke, поскольку это так полезно … Это упрощает управление вашей управляемой DLL, используя Xcopy или ссылку на проект в более крупном решении Visual Studio. Когда вы это сделаете, вам не придется беспокоиться о событиях после сборки.

ОБНОВИТЬ:

Я написал код здесь в другом ответе https://stackoverflow.com/a/11038376/364818

  • Где я могу получить VB6 IDE
  • Каково значение тега ProjectTypeGuids в файле проекта visual studio
  • Добавление элементов в столбцы в WPF ListView
  • Определение пространства стека с помощью Visual Studio
  • Request.UrlReferrer null?
  • Предотrotation закрытия windows консоли в приложении консоли Visual Studio C / C ++
  • Как отключить кэширование определений сборки в Visual Studio
  • Получение пути к текущей сборке
  • HTTPS с встроенным ASP.NET-сервером Visual Studio
  • Visual Studio показывает ошибки IntelliSense, но компиляции решений
  • Как изменить шаблоны Visual Studio для нового classа / интерфейса C #?
  • Interesting Posts

    Как найти индексы верхних 10 000 элементов в симметричной матрице (12k X 12k) в R

    Почему я не могу получить общее исключение в C #?

    Преобразование уравнений MathType в собственные уравнения Word 2007/2010

    Перемещение ресурсов в рамках WEB-INF

    Как установить цвета пули в списки UL / LI html через CSS без использования каких-либо изображений или тегов span

    Когда кабели Ethernet должны быть экранированы?

    Chrome 18+: как разрешить встроенные скрипты с политикой безопасности контента?

    Как форматировать объект времени даты с форматом dd / mm / yyyy?

    Что такое djvu2pdf.rb в Homebrew?

    MongoDB atomic «findOrCreate»: findOne, вставить, если не существует, но не обновлять

    Конфигурация tmux зависит от ОС

    создать макет chatView в android

    Бокс и распаковка: когда это придумано?

    Получение проводника Windows 7 для отображения окна поиска без включения поиска в Windows

    Как заменить один символ в именах файлов Windows с помощью командного файла?

    Давайте будем гением компьютера.