TFS 2015 a číslo verzie assembly

Krátky návod ako nastaviť automatickú úpravu čísla verzie assembly pomocou TFS-ka 2015 pre automatické buildy. Skript upravuje posledné dve čisla, kde Build Number je počet dní od zadaného dátumu a Revision sekunda buildu vrámci dňa, ide to samozrejme upraviť.

Do sourse controlu treba pridať do koreňového priečinku PowerShell script nazvaný UpdateSourceVersion.ps1:

param([string] $BaseDir="")

if([string]::IsNullOrEmpty($BaseDir))
{
    $BaseDir = Split-Path -parent $MyInvocation.MyCommand.Definition
}

$re = [regex] 'Assembly[a-zA-Z]+\("\d\.\d\.\*"\)'
[int] $buildNumberDay = ((Get-Date) - (Get-Date '2013-06-30')).Days
[int] $buildNumberSec = ((Get-Date) - [DateTime]::Now.Date).TotalSeconds
[string] $replacment = "{0}.{1}" -f $buildNumberDay, $buildNumberSec

$reCallback = {
    $args[0].Value -replace "\*", $replacment
};

Write-Host "Scan AssemblyInfo.cs in " $baseDir
$files = Get-ChildItem $BaseDir -Recurse -Filter "AssemblyInfo.cs" 
foreach ($file in $files)
{
    $content = [IO.File]::ReadAllText($file.FullName, [Text.Encoding]::UTF8)
    if($re.IsMatch($content))
    {
        $content = $re.Replace($content, $reCallback)
        Set-Content -Path  $file.FullName -Value $content
        "Write vesion : * {0}.{1} to file '{2}'." -f $buildNumberDay, $buildNumberSec, $file.FullName | Write-Host
    }
}

Všetky súbory AssemblyInfo.cs sa upravia tak aby v obsahovali:

 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyFileVersion("1.0.0.0")]
 [assembly: AssemblyInformationalVersion("1.0.*")]

Potom sa v nastaveniach buildu v Team Foundation Server 2015 sa pridá PowerShell script UpdateSourceVersion.ps1 predradený pred samotnú kompiláciu a testy.

Team Foundation Server 2015

A veselo buildujeme.