2009-09-01 6 views
0

J'ai créé une étiqueteuse personnalisée pour CC.Net qui fonctionne presque parfaitement, mais il semble que l'étiqueteuse fonctionne avant la construction de l'application. Le problème que j'ai avec ceci est que je veux que mon étiquette de construction soit celle de ma AssemblyVersion.CruiseControl.Net - L'étiqueteuse peut-elle être exécutée après MSBuild?

Je donne les résultats suivants dans mon étiqueteuse:

public string Generate(IIntegrationResult previousResult) 
{ 

    if (File.Exists(this.OutputExecutable)) 
    { 

     Assembly assembly = System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(this.OutputExecutable)); 
     string version = assembly.GetName().Version.ToString(); 
     assembly = null; 

     return version; 

    } 
    else 
    { 
     return "0.0.0.0"; 
    } 

} 

Cela devient la version de la DLL fournie/Exe afin que je puisse l'utiliser comme mon étiquette de build. Je vais probablement ajouter le numéro de build actuel plus tard, mais je veux juste que ce bit fonctionne d'abord.

Le problème est que mon numéro de révision est au format 2.0.93601.254 major.minor.date.svnrevision. Quand un enregistrement se produit, je construis le code base et le numéro de révision irait à 2.0.93601.255. Malheureusement, CC.Net produit toujours une étiquette de construction de .254 jusqu'à ce qu'une force de construction soit appelée quand elle sera modifiée avec succès à .255.

Est-il possible de forcer l'étiqueteuse à attendre que le processus de construction soit terminé? Ou y a-t-il d'autres façons de le faire?

Répondre

0

La réponse à ce que je crois est non. Ce que j'ai fait était de créer ma propre application de console qui met à jour le fichier assemblyinfo.cs avant la tâche MSBuild dans la configuration de projet de CC.Net. Problème (sorte de) résolu.

0

Ceci est en arrière de la façon dont la plupart des gens le font; vous faites ccnet définir la version de votre code & assemblys automatiquement, en tirant la version de config et dire le svn rev #.

C'est pourquoi il est extrêmement important que l'étiqueteuse fonctionne avant les tâches.

Questions connexes