Как я могу добавить свою версию сборки к имени папки во время процесса сборки?

Когда я делаю сборку релиза своего приложения, я копирую все файлы, необходимые для запуска программы, в папку. Я хочу, чтобы это имя папки содержало версию сборки.

Команда 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!.

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