2009-10-28 3 views

Répondre

1

Vous devez écrire un script pour définir votre AssemblyVersion. Je recommanderais d'utiliser NAnt ou MSBuild à cette fin, mais PowerShell ou un simple fichier bat fera également.

Dans votre configuration CCNET, vous utilisez Assembly Version Labeller. CCNetLabel est disponible puis à l'intérieur du script via ${CCNetLabel} (NAnt) resp. variable d'environnement %CCNetLabel% (batch - essayez différents boîtiers, car je sais qu'ils ont un problème avec ça).

La tâche du script consiste à modifier le fichier AssemblyInfo.cs du projet ou à créer un fichier CommonAssemblyInfo.cs et à le référencer à partir du projet pour la génération.

SO pour rechercher

[cruisecontrol.net] AssemblyInfo

donne des conseils plus précieux.

1

Vous devez le définir avant la compilation dans votre AssemblyInfo.cs comme le signale l'autre répondeur. L'éditeur de version d'assemblage est génial, mais cela ne fonctionne pas avec svn. Si vous utilisez svn, vous pouvez jeter un oeil à la svn revision labeller. Une fois que l'étiquette est générée correctement, vous pouvez l'utiliser dans votre script CC ou Nant lors de la création/édition du fichier AssemblyInfo.cs. Si vous utilisez Nant, la tâche asminfo sera d'une grande aide pour vous. Une recherche SO serait bien, mais vous pouvez également jeter un oeil à this article, ce qui devrait être très utile.

0

Vous pouvez y parvenir avec un Nant C# Snipped décrivent here

Créer une propriété appelée $ {} assemblyinfo.file qui pointe vers le fichier AssemblyInfo.cs dans votre projet.

<!-- Updating assembly version with the CI build http://lazyloading.blogspot.com/2007/05/updating-assembly-version-with-ci.html --> 
<target name="update.assembly" description="Replaces the version in the assemblyinfo.cs file"> 
    <echo message="AssemblyInfo: ${assemblyinfo.file}" /> 
    <echo message="Version: ${CCNetLabel}" /> 
    <script language="C#"> 
     <references> 
      <include name="System.dll" /> 
     </references> 
     <imports> 
      <import namespace="System.Text.RegularExpressions" /> 
     </imports> 
     <code> 
     <![CDATA[ 
      public static void ScriptMain(Project project) 
      { 
       string fileContent=""; 
       using (StreamReader reader = new StreamReader(project.Properties["assemblyinfo.file"])) 
       { 
        fileContent = reader.ReadToEnd(); 
        reader.Close(); 
       } 
       string newVersion = string.Format("[assembly: AssemblyVersion(\"{0}\")]", project.Properties["CCNetLabel"]); 
       string newText = Regex.Replace(fileContent, @"\[assembly: AssemblyVersion\("".*""\)\]", newVersion); 
       using (StreamWriter writer = new StreamWriter(project.Properties["assemblyinfo.file"], false)) 
       { 
        writer.Write(newText); 
        writer.Close(); 
       } 
      } 
     ]]> 
     </code> 
    </script> 
</target> 

Exemple:

[assembly: ("* 1,0") AssemblyVersion]

devient

[assembly: AssemblyVersion ("2013.03.11.001")]

Questions connexes