Customizzare il nome della Team Build
Mi è capitato in questi giorni, durante la configurazione di una build automatica in TFS 2008 di dover dare un nome diverso da quello di default alla build e, di conseguenza, al nome della directory in cui tutto viene copiato.
Nello specifico la mia esigenza era quella di rinominare la build nel banalissimo formato YYYYMMDD_HHMMSS
. La prima cosa che ho cercato è stata una qualche property nel file TFSBuild.proj per impostarne il formato ma, purtroppo, la cosa non è così immediata.
Infatti, per customizzare il nome della build occorre (come molte cose in TFS) scrivere del codice creando una class library con un oggetto che erediti dall'oggetto Task di TFS in modo da, appunto, customizzare il task nel target BuildNumberOverrideTarget.
using System;
using Microsoft.Build.Utilities;
using Microsoft.Build.Framework;
namespace BuildNumberGenerator
{
public class BuildNumberGenerator:Task
{
public override bool Execute()
{
m_buildNumber = DateTime.Now.ToString("yyyyMMdd_hhmmss");
return true;
}
private string m_buildNumber;
[Output]
public string BuildNumber
{
get { return m_buildNumber; }
}
}
}
La dll risultato della compilazione va aggiunta al source control nella stessa posizione in cui si trova il file TFSBuild.proj e, in questo vanno aggiunte alcune righe di riferimento alla dll.
Il codice seguente va aggiunto immediatamente dopo lo statement Import:
<UsingTask
TaskName="BuildNumberGenerator.BuildNumberGenerator"
AssemblyFile="BuildNumberGenerator.dll"/>
Per inserire il task nel target BuildNumberOverrideTarget va aggiunta la seguente configurazione:
<Target Name = "BuildNumberOverrideTarget" >
<BuildNumberGenerator>
<Output TaskParameter="BuildNumber" PropertyName="BuildNumber"/>
</BuildNumberGenerator>
</Target>
Approfondimenti sull'argomento le trovate, ovviamente, su MSDN all'indirizzo http://msdn.microsoft.com/en-us/library/aa395241(VS.80).aspx