Других ответов на этот вопрос, как правило, предположит, что вы не используете VisualStudio, но MSBuild непосредственно или существующий проект, для которого вы можете добавить шаг пользовательской сборки или событие сборки (я нашел тип события сборки проблемы с решениями, поскольку они не всегда будут копировать файлы, когда они вам будут скопированы).
Если вы хотите, чтобы проект VisualStudio выполнял только копию, вы можете сделать это с помощью VisualStudio с проектом Makefile.
Немного прозванный Проект Makefile может делать все, что вы можете сделать из командной строки. Очевидно, это означает, что вы можете создать проект Makefile, который копирует только файлы. В Свойства файла сборки проекта ⇒ Configuration Properties ⇒ NMake раздела являются поля для сборки, перестроения и чистые действия. Они могут быть заполнены обычными командами командного файла. При каждой сборке 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
)
)
(thie "copy foobar" line abo ве не получится в результате чего сборка на провал)
Note, VisualStudio (и MSBuild) будет всегда запустить файл сборки проекта -. он не проверяет метку времени на выходном файле, но вместо того, чтобы плоскодонки эту работу к тому, что он ожидает быть другим инструментом сборки (nmake, cmake, make, ant, maven и т. д.). Поскольку в этом случае есть только простая команда копирования, а не какая-либо программа, проверяющая, следует ли выполнять копию, копия происходит в каждой сборке.
VisualStudio всегда работает Makefile проекты также означает, что каждый раз, когда вы нажимаете F5 для отладки проекта, VisualStudio будет раздражать вас с плохо сформулированным всплывающим диалоговым окном (если вы еще не сказали, не его) сообщая вам, что ваш проект устарел и что вы должны его снова создать. Если вы сообщите VisualStudio не отображать диалоговое окно, оно просто выполнит копию без запроса перед запуском исполняемого файла.
Почему вы не могли создать пакетный или командный файл для копирования? –
@JB King, я хочу интегрировать/обернуть все в msbuild. Любые идеи или рекомендуемые образцы? – George2
См. Мой ответ ниже. –