VSTS构建定义中的Powershell脚本未更新AssemblyVersion.cs

时间:2017-04-01 20:33:23

标签: powershell azure-devops devops azure-pipelines build-definition

我在VSTS中托管了一个项目,我正在尝试构建定义。我正在尝试执行一个powershell脚本,在构建项目之前更新AssemblyVersion.cs。当我在本地运行脚本时它工作正常,但是当它在构建过程中运行时,脚本运行时没有错误,但是AssemblyVersion.cs没有更新。

$regex = '\[assembly: AssemblyVersion\("(.*)"\)\]'
$assemblyInfoPath = "..\Properties\AssemblyInfo.cs"

(Get-Content $assemblyInfoPath) | ForEach-Object {
    if($_ -match $regex) 
    {
        # Get current version, and update revision number
        $version = [version]$matches[1]
        $newVersion = "{0}.{1}.{2}.{3}" -f $version.Major, $version.Minor, $version.Build, ($version.Revision + 1)
        '[assembly: AssemblyVersion("{0}")]' -f $newVersion

        Write-Host "Version updated to: $newVersion"
    } 
    else 
    {
        $_
    }
} | Set-Content $assemblyInfoPath

Build输出表明版本已更新,但是当我在File Viewer中查看AssemblyInfo.cs时,它显示的是旧版本。

2 个答案:

答案 0 :(得分:0)

构建过程不会在流程结束时自动检入/提交对源代码所做的更改。你必须写一个脚本来做到这一点。

答案 1 :(得分:0)

您需要签入或推送对远程存储库的更改。

如果您使用的是TFVC,则TFVC Build Tasks extension包含可以检查更改的TFVC-Check-in Changes步骤/任务。

如果您使用Git,可以添加这些步骤/任务以推送更改:

  1. 命令行(工具:git;参数:add **\*.*;工作文件夹:$(build.sourcesdirectory))
  2. 命令行(工具:git;参数:commit -m "update";工作文件夹:$(build.sourcesdirectory))
  3. 命令行(工具:git;参数:push origin HEAD:$(Build.SourceBranchName);工作文件夹:$(build.sourcesdirectory))
  4. 另一方面,您还可以构建自定义构建/发布任务,并在构建/发布中使用它。有关自定义构建/发布任务的更多信息,请参阅:Add a build task

    注意:建议不要在构建或发布中签入/推送对远程存储库的更改。