在构建过程中,如何将assemby版本附加到文件夹名称中?

时间:2019-01-31 20:35:18

标签: windows batch-file cmd delayedvariableexpansion

在执行应用程序的发行版本时,我将运行程序所需的所有文件复制到文件夹中。我希望该文件夹名称包含程序集版本。

我有部分构建命令。我可以将版本号放入一个名为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\"
)

我已经使用CMD窗口测试了读取和写入VER的行,并且这些命令有效,文件版本包含版本号。当我运行构建脚本时,fileversion包含“ Echo on on”,我认为这意味着VER为空。我的build命令可能还有其他问题,但是我仍然无法读取版本号。

1 个答案:

答案 0 :(得分: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!代替。