При успешной сборке я хочу скопировать содержимое выходного каталога в другое место в той же «базовой» папке. Эта родительская папка является относительной частью и может варьироваться в зависимости от настроек контроля источника.
Я перечислил несколько доступных мне значений макросов ...
$ (SolutionDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ build
$ (ProjectDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ Version \ ProjectA \
Я хочу скопировать содержимое Output Dir в следующую папку:
D: \ GlobalDir \ Version \ AppName \ Solution2 \ Project \ Dependency
Базовое расположение «D: \ GlobalDir \ Version \ AppName» необходимо извлечь из одного из вышеупомянутых макросов. Однако ни одно из значений макроса не содержит только родительское расположение.
Как извлечь только базовое местоположение для команды копирования после сборки?
Вот что вы хотите поместить в командную строку события Post-build проекта:
РЕДАКТИРОВАТЬ: Или, если ваше целевое имя отличается от названия проекта.
источник
/Y
. Спасибо за показ всей команды.xcopy
с подстановочными знаками и соответствующими переключателями для достижения аналогичного результата, сохраняя при этом структуру (дерево) исходной папки, например:xcopy /i /e /s /y /f "<source>\MyFolder\*" "<destination>\MyFolder"
copy /Y "$(TargetPath)" "$(SolutionDir)somewhere\"
без дополнительной обратной косой черты, так как $ (SolutionDir) включает в себя обратную косую черту (по крайней мере в VS2012)Вы можете попробовать:
источник
Я думаю , что это связано, но у меня была проблема при создании непосредственно с помощью
msbuild
командной строки (из пакетного файла) против строительства внутри VS.Используя что-то вроде следующего:
(примечание:
start XCOPY
вместо того,XCOPY
чтобы обойти проблему с разрешениями, которая помешала копированию)Макрос
$(SolutionDir)
оценивается..\
при выполнении msbuild из пакетного файла, что привело к сбоюXCOPY
команды. В противном случае он работал нормально, если был построен из Visual Studio. Подтверждено с помощью,/verbosity:diagnostic
чтобы увидеть оцененный результат.$(ProjectDir)..\
Вместо этого использование макроса , который является одним и тем же, работал нормально и сохранял полный путь в обоих сценариях сборки.источник
Start
работал для меня (дляxcopy
общей папки).Не имеет ли смысла использовать msbuild напрямую? Если вы делаете это с каждой сборкой, то вы можете добавить задачу msbuild в конце? Если вы просто хотите посмотреть, не можете ли вы найти другое значение макроса, которое не отображается в Visual Studio IDE, вы можете включить опции msbuild для диагностики, и это покажет вам все переменные, которые вы можете использовать, как а также их текущая стоимость.
Чтобы включить это в Visual Studio, перейдите в Инструменты / Параметры, затем прокрутите вниз древовидное представление до раздела «Проекты и решения», разверните его и нажмите «Построить и запустить», справа - это раскрывающийся список, в котором указывается подробность выходных данных сборки. , установив это на диагностику, покажет вам, какие другие значения макросов вы можете использовать.
Поскольку я не совсем знаю, на какой уровень вы хотели бы перейти и насколько сложным вы хотите, чтобы ваша сборка была, это может дать вам некоторое представление. Недавно я делал сценарии сборки, которые даже исполняют код SQL как часть сборки. Если вам нужна дополнительная помощь или даже примеры сценариев сборки, дайте мне знать, но если это просто небольшой процесс, который вы хотите запустить в конце сборки, возможно, полноценный сценарий msbuild будет слишком сложным. ,
Надеюсь, это поможет Rihan
источник