Подтвердить что ты не робот

Копирование файлов (проектов) проекта Visual Studio для вывода каталога во время сборки

Когда я создаю проект Visual Studio, исполняемый файл записывается в выходной каталог, указанный на странице свойств проекта.

У меня есть проект с некоторыми дополнительными файлами (например, .ini file), которые используются программой.

Как я могу настроить проект на копирование файла в выходной каталог, чтобы при запуске программы у него была копия другого файла в CWD?

Я проверил страницу свойств файла и не было ничего полезного, кроме как исключить его из сборки (которая отключена), а команда custom-build-tool пуста (плюс это обычный текст файл, который не нуждается в обработке).

4b9b3361

Ответ 1

В то время как я искал файл Property page для поля построения, у меня возникла мысль: установите шаг пользовательской сборки, чтобы скопировать файл (вручную). Это оказалось проще, чем я думал. Я полагал, что для этого потребуется использовать cmd или другой внешний исполняемый файл (xcopy, robocopy и т.д.), Но это необязательно.

Я устанавливаю шаг пользовательской сборки следующим образом:

Command Line : copy $(InputFileName) $(OutDir)
Description  : Copying foobar...
Outputs      : $(InputFileName)

Настройка поля выходов (правильно) была критической, чтобы не допустить, чтобы VS всегда думал, что проект устарел и требует перестройки (я не уверен, что его нужно префикс с $(OutDir)\).

Это отражается в окне вывода как таковое:

Copying foobar...
        1 file(s) copied.
Compiling resources...
Linking...

Ответ 2

Для копирования файлов в выходной каталог в Visual Studio 2003 вы можете использовать событие Post-Build:

  • Щелкните правой кнопкой мыши по проекту- > Свойства
  • Общие свойства- > События сборки
  • Установить командную строку события после сборки:

    xcopy /y $(ProjectDir)my_file.ini  $(ProjectDir)$(OutDir)
    
  • ОК и постройте!

Ответ 3

Попробуйте выбрать файл в обозревателе решений. Затем вы сможете увидеть его свойства в окне "Свойства" (нажмите F4, если он не виден). Вы найдете там два свойства:

  • "Действие сборки" и
  • "Копировать в каталог вывода"

Установите "Построить действие" на "Содержимое", а затем - выберите соответствующее значение для параметра "Копировать в выходной каталог".

Окно свойств файла с настройками "Build Action" и "Copy to Output Directory"

File properties window with "Build Action" and "Copy to Output Directory" settings

Если вышеописанный способ не работает для вас, прочитайте этот пост "Копировать в выпуск каталога с файлом .inf". И посмотрите на это, затем "Visual Studio: действие по умолчанию для нестандартных файлов

Надеюсь, что поможет

Ответ 4

Вам нужен дополнительный $(OutDir). В противном случае на этапе rebuild/clean он выкинет ваш источник.

CommandLine : copy "$(SolutionDir)last-script.js" "$(TargetDir)Debug"

Outputs  : $(TargetDir)Debug\last-script.js

Ответ 5

Улучшение Synetech ответ:

В VS 2013 С++ project Command Line: copy% (Identity) $(OutDir) Описание: Копирование foobar... Выходы:% (Identity) Он работает, но он приводит к циклической зависимости, т.е. Будет выполняться каждый раз, когда вы потребуете нарастающей сборки, а счетчик уже не скопирован.

Чтобы решить эту проблему, вы можете добавить этот элемент в целевую папку, изменить путь к $(OutDir) и использовать это в первом добавленном элементе как Output. Недостаток - два элемента с похожим именем находятся в решении.

Также полезно xcopy с параметрами /d/y в postbuild - копировать только в том случае, если дата файла цели старше.