自动版本 Asp.net Core Web App

Automatically version Asp.net Core Web App

我在 Asp.Net Core 2.0 中有一个 Web 应用程序。在 csproj 中,我有一个带有模式 1.0.0.0 的版本号。我希望当我用 VSTS 编译时模式变成 1.0.0.$Build.Id,但我找不到方法来做到这一点。

我尝试了 Update Assembly Info VSTS 扩展这个任务,但它不起作用:

marketplace that can update assembly info, such as Assembly Info中有很多扩展。

您也可以使用 PowerShell 任务通过 PowerShell 脚本完成此操作:Auto assembly versioning in Visual Studio Team Services (or VSTS) build.

Param
    (
    [Parameter(Mandatory=$true)]
        [string]$productVersion
    )

    $buildNumber = $env:BUILD_BUILDNUMBER
    if ($buildNumber -eq $null)
    {
        $buildIncrementalNumber = 0
    }
    else
    {
        $splitted = $buildNumber.Split('.')
        $buildIncrementalNumber = $splitted[$splitted.Length - 1]
    }

    $SrcPath = $env:BUILD_SOURCESDIRECTORY
    Write-Verbose "Executing Update-AssemblyInfoVersionFiles in path $SrcPath for product version Version $productVersion"  -Verbose

    $AllVersionFiles = Get-ChildItem $SrcPath AssemblyInfo.cs -recurse

    $versions = $productVersion.Split('.')
    $major = $versions[0]
    $minor = $versions[1]
    $patch = $versions[2]

    $assemblyVersion = $productVersion
    $assemblyFileVersion = "$major.$minor.$patch.$buildIncrementalNumber"
    $assemblyInformationalVersion = $productVersion

    Write-Verbose "Transformed Assembly Version is $assemblyVersion" -Verbose
    Write-Verbose "Transformed Assembly File Version is $assemblyFileVersion" -Verbose
    Write-Verbose "Transformed Assembly Informational Version is $assemblyInformationalVersion" -Verbose

    foreach ($file in $AllVersionFiles) 
    { 
        (Get-Content $file.FullName) |
        %{$_ -replace 'AssemblyVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)', "AssemblyVersion(""$assemblyVersion"")" } |
        %{$_ -replace 'AssemblyFileVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)', "AssemblyFileVersion(""$assemblyFileVersion"")" } |
    %{$_ -replace 'AssemblyInformationalVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)', "AssemblyInformationalVersion(""$assemblyInformationalVersion"")" } | 
    Set-Content $file.FullName -Force
    }

    return $assemblyFileVersion