Другие ответы на этот вопрос, как правило, предполагают, что вы используете не VisualStudio, а MSBuild напрямую или у вас есть существующий проект, для которого вы можете добавить пользовательский шаг сборки или событие сборки (я обнаружил, что тип события сборки решений подвержен ошибкам, поскольку они не всегда будут копировать файлы, когда они вам понадобятся).
Если вам нужен проект VisualStudio, который только копирует, вы можете сделать это с помощью стандартного VisualStudio с Makefile проектом.
С слегка ошибочным именем Makefile проект может делать все, что вы можете делать из командной строки. Очевидно, это означает, что вы можете создать проект Makefile, который копирует только файлы. В проекте Свойства & rArr; Свойства конфигурации & rArr; NMake в разделе Makefile находятся поля для действий Build, Rebuild и Clean. Они могут быть заполнены простыми старыми командами командного файла. При каждой сборке VisualStudio создает временный командный файл из соответствующего поля и выполняет его с помощью cmd. Предупреждение вы получите 32-битный интерпретатор cmd на 64-битных машинах, поэтому вам потребуется использовать магический каталог sysnative , если вы хотите получить доступ к 64-битному Команды Windows или библиотеки DLL (я не уверен, что это где-то задокументировано, так что это не всегда так - ваши пакетные сценарии должны быть устойчивы к битности изменения cmd.
Пример пакетного кода, требующего 64-разрядных системных файлов, без предварительного знания того, какой cmd или ОС (32-разрядная или 64-разрядная) будет выполнять код:
if /i "%programfiles%"=="%programfiles(x86)%" if /i not "%programfiles%"=="%programw6432%" (
REM 32 bit cmd on 64-bit computer
REM Use the 'sysnative' fake directory to get to 64-bit system32 files
) else (
if /i not "%programfiles%"=="%programfiles(x86)%" if /i "%programfiles%"=="%programw6432%" (
REM 64 bit cmd on 64-bit computer
REM Use the 'system32' directory to get to 64-bit system32 files
) else (
echo "Cannot do 64-bit on 32-bit computer"
copy foobar
)
)
(приведенная выше строка «copy foobar» приведет к сбою сборки).
Обратите внимание, VisualStudio (и MSBuild) будет всегда запускать проект Makefile - он не проверяет временную метку в выходном файле, а вместо этого переводит это задание в то, что, как ожидается, будет каким-то другим инструментом сборки (nmake). , cmake, make, ant, maven и т. д.). Так как в этом случае есть простая команда копирования, а не какая-то программа, проверяющая, выполнять копирование или нет, копирование происходит при каждой сборке.
VisualStudio всегда выполнение проектов makefile также означает, что каждый раз, когда вы нажимаете F5 для отладки вашего проекта, VisualStudio будет раздражать вас всплывающим диалоговым окном с плохой формулировкой (если у вас нет не говорите, что не) говорю вам, что ваш проект устарел и что вы должны построить его заново. Если вы скажете VisualStudio не отображать диалоговое окно, оно просто выполнит копирование без запроса перед запуском исполняемого файла.