Копировать результаты сборки из нескольких проектов в одну папку

У меня есть решение Visual Studio 2013 с настраиваемыми типами проектов, предоставляемыми плагином. Эти проекты не поддерживают указание папки вывода сборки или событий после сборки. Мне нужно скопировать выходные данные сборки из выходного местоположения каждого проекта в один bin папка такая, что их можно выгрузить в папку размещения в TFS. Как бы я написал пакетный скрипт или аналогичный, чтобы скопировать выходы из

\SolutionDir\Project1\Debug\Win32\*
\SolutionDir\Project2\Debug\Win32\*
...

в

\SolutionDir\bin\Debug\Win32\*

Принимая во внимание, что некоторые проекты зависят от других и, следовательно, одинаковы .dll может присутствовать в нескольких местах. Неважно, что я храню. Я пробовал что-то вроде

for /f "tokens=*" %a in ('dir *.dll *.exe /b /s /a-d') do copy "%a" "bin" /y

Но это не сохраняет \Debug\Win32 структура папок

1 ответ

Решение

Мне удалось решить это с помощью пакетного сценария, который я назвал CopyBins.bat, Это не особенно элегантно, но вот оно;

dir /b /s /ad | find "\%1\" > folders.txt
for /f "tokens=*" %%a in ('cat folders.txt') do xcopy /s /y "%%a" %1\
del folders.txt

Тогда я могу выполнить это, позвонив

CopyBins Debug

Имейте в виду, что я не могу просто казнить

for /f "tokens=*" %a in ('dir /b /s /ad | find "\Debug\"') do xcopy /s /y "%a" Debug\

Потому что я получаю ошибку

| was unexpected at this time.

Если у кого-то есть лучшее решение, я хотел бы услышать это...

Другие вопросы по тегам