2009-06-05 6 views
1

J'ai un script NAnt qui compile notre application web, mais qui souhaite mettre à jour par programmation le numéro de version de l'assembly qu'il génère. J'ai déjà trouvé les numéros de version et vous pouvez supposer qu'ils ont été stockés dans certaines variables NAnt.Comment mettre à jour le numéro de version de dll généré par le projet de déploiement Web VS2005 en utilisant NAnt

Peut comprendre comment procéder pour les projets standard, mais pas pour les projets de déploiement Web.

Toute aide que vous pouvez fournir serait appréciée.

Merci d'avance!

Répondre

2

Vous devez inscrire le numéro de version dans le fichier de projet de déploiement Web lui-même. Cette tâche NAnt devrait le faire:

<target name="setAssemblyVersion" description="Increments/Sets the AssemblyVersion value" depends="getAssemblyVersion"> 
    <foreach item="File" property="filename"> 
     <in> 
     <items> 
      <include name="**/*.wdproj"></include> 
     </items> 
     </in> 
     <do> 
     <script language="C#"> 
      <code> 
      <![CDATA[ 
      public static void ScriptMain(Project project) { 
       string contents = ""; 
       StreamReader reader = new StreamReader(project.Properties["filename"]); 
       contents = reader.ReadToEnd(); 
       reader.Close(); 
       string replacement = string.Format(
        "<Value>{0}.{1}.{2}.{3}</Value>", 
        project.Properties["build.major"], 
        project.Properties["build.minor"], 
        project.Properties["build.build"], 
        project.Properties["svn.revision"] 
       ); 

       string newText = Regex.Replace(contents, @"<Value>([0-9]+\.){3}[0-9]+</Value>", replacement); 
       StreamWriter writer = new StreamWriter(project.Properties["filename"], false, Encoding.UTF8); 
       writer.Write(newText); 
       writer.Close(); 
      }   
      ]]> 
      </code> 
     </script> 
     </do> 
    </foreach> 
    </target> 

Je devine que vos noms de propriété NAnt ...

+0

Parfait! Merci beaucoup! – MPritchard

+0

De rien. –