1

当我对我的应用程序进行发布构建时,我会将运行程序所需的所有文件复制到一个文件夹中。我希望该文件夹名称包含程序集版本。

我的构建命令部分有效。我可以将版本号放入一个名为 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 包含版本号。当我运行构建脚本时,fileversion 包含“Echo is on”,我认为这意味着 VER 是空白的。我的构建命令可能还有其他问题,但我被困在阅读版本号的这一点上。

4

1 回答 1

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!。

于 2019-02-01T17:24:05.997 回答