Как мне обновить номер версии dll, сгенерированной проектом веб-развертывания VS2005 с помощью NAnt - PullRequest
1 голос
/ 05 июня 2009

У меня есть скрипт NAnt, который компилирует наше веб-приложение, но я хотел бы программно обновить номер версии сборки, которую он генерирует. Я уже получил номера версий, и вы можете предположить, что они были сохранены в некоторых переменных NAnt.

Можно выяснить, как это сделать для стандартных проектов, но не для проектов веб-развертывания.

Буду признателен за любую помощь, которую вы можете предоставить.

Заранее спасибо!

1 Ответ

2 голосов
/ 05 июня 2009

Вы должны записать номер версии в сам файл проекта веб-развертывания. Эта задача NAnt должна сделать это:

  <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>

Я предполагаю, что ваши имена свойств NAnt ...

...