Копирование файлов (проектов) проекта Visual Studio для вывода каталога во время сборки
Когда я создаю проект Visual Studio, исполняемый файл записывается в выходной каталог, указанный на странице свойств проекта.
У меня есть проект с некоторыми дополнительными файлами (например, .ini
file), которые используются программой.
Как я могу настроить проект на копирование файла в выходной каталог, чтобы при запуске программы у него была копия другого файла в CWD?
Я проверил страницу свойств файла и не было ничего полезного, кроме как исключить его из сборки (которая отключена), а команда custom-build-tool пуста (плюс это обычный текст файл, который не нуждается в обработке).
Ответы
Ответ 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:
Ответ 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 - копировать только в том случае, если дата файла цели старше.