Как я могу добавить свою версию сборки к имени папки во время процесса сборки?
Когда я делаю сборку релиза своего приложения, я копирую все файлы, необходимые для запуска программы, в папку. Я хочу, чтобы это имя папки содержало версию сборки.
Команда build у меня частично работает. Я могу получить номер версии в файл с именем tmpfile. Кажется, проблема заключается в чтении номера версии из этого файла в переменную.
if $(ConfigurationName) == Release (
powershell "(Get-Item -path $(TargetPath)).VersionInfo.ProductVersion" > tmpfile
set /p VER=< tmpfile
echo %VER% > fileversion
set "DIRNAME=FilterUtilityApp%VER%"
xcopy /s /y "$(TargetDir)*" "$(SolutionDir)%DIRNAME%\"
xcopy /y "$(ProjectDir)Docs\*" "$(SolutionDir)%DIRNAME%\Docs\"
)
Я проверил строки, где я читаю и пишу VER, используя окно CMD, и команды работают, fileversion содержит номер версии. Когда я запускаю скрипт сборки, fileversion содержит "Echo on", что, как я предполагаю, означает, что VER пуст. Могут быть другие проблемы с моей командой сборки, но я застрял в этой точке чтения в номере версии.
1 ответ
Основываясь на комментарии aschipfl, вот рабочий скрипт.
if $(ConfigurationName) == Release (
SETLOCAL EnableDelayedExpansion
powershell "(Get-Item -path $(TargetPath)).VersionInfo.ProductVersion" > version
set /p VER=< version
del version
set "DIRNAME=FilterUtilityApp_!VER!"
xcopy /s /y "$(TargetDir)*" "$(SolutionDir)!DIRNAME!\"
xcopy /y "$(ProjectDir)Docs\*" "$(SolutionDir)!DIRNAME!\Docs\"
)
Обратите внимание, что%VER% заменяется на!VER!.