【问题标题】:Powershell script in VSTS Build Definition not updating AssemblyVersion.csVSTS 构建定义中的 Powershell 脚本未更新 AssemblyVersion.cs
【发布时间】:2017-08-26 23:12:55
【问题描述】:

我在 VSTS 中托管了一个项目,并且正在尝试构建定义。我正在尝试执行一个在项目构建之前更新 AssemblyVersion.cs 的 powershell 脚本。当我在本地运行脚本时它工作正常,但是在构建过程中运行时,脚本运行没有错误,但 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 输出表明版本已更新,但当我在文件查看器中查看 AssemblyInfo.cs 时,它显示的是旧版本。

【问题讨论】:

  • 您说的是哪个文件查看器?来自源代码控制的那个?用于文物的那个?还是构建机器上的 Windows 资源管理器?
  • @baywet 源代码控制文件查看器
  • 你现在解决问题了吗?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    如果您使用的是 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))

    另一方面,您也可以构建自定义构建/发布任务并在您的构建/发布中使用它。更多自定义构建/发布任务,可以参考:Add a build task

    注意:不建议在构建或发布时将更改签入/推送到远程存储库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-07
      相关资源
      最近更新 更多