NAnt и сборка версии - PullRequest
       2

NAnt и сборка версии

0 голосов
/ 28 июля 2011

Я использую Nant для автоматизации сборки ClickOnce.Поэтому после сборки приложения мне нужно знать его версию (для целей создания папки).Также мне нужно построить автоинкремент.

Для сборки я использую msbuild.exe /t:publish

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

Насколько я понял, вы хотели бы выполнять обнаружение / управление версиями с минимальными усилиями.

Почему бы вам не использовать возможности автоматического увеличения AssemblyInfo. Помещение [assembly: AssemblyVersion("1.0.*")] в AssemblyInfo.cs будет увеличивать номер сборки с каждой сборкой. Найти больше информации в этот ответ .

После компиляции вы можете определить версию сборки с помощью Функция NAnt assemblyname::get-version:

assemblyname::get-version(assemblyname::get-assembly-name('MyAssembly.dll'))

Обновление: Если вы не можете использовать возможности автоматического увеличения информации о сборке, вы можете позволить NAnt создавать AssemblyInfo.cs для каждой сборки, используя NAntContrib's <version> -task .

<loadtasks assembly="C:\PathToNAntContibTasks\NAnt.Contrib.Tasks.dll" />
<target name="assemblyinfo" description="generates AssemblyInfo.cs">
  <property
    name="working.dir"
    value="C:\src\foo" />
  <property
    name="build.number.path"
    value="${path::combine(working.dir, 'build.number')}" />
  <echo
    file="${build.number.path}"
    message="0.0.0.0"
    unless="${file::exists(build.number.path)}" />
  <version
    buildtype="Increment"
    path="${build.number.path}"/>
  <foreach
    item="File"
    property="assemblyinfo.path">
    <in>
      <items>
        <include name="${path::combine(working.dir, '**\AssemblyInfo.cs')}" />
      </items>
    </in>
    <do>
      <asminfo output="${assemblyinfo.path}" language="CSharp">
        <imports>
          <import namespace="System.Reflection" />
        </imports>
        <attributes>
          <attribute type="AssemblyVersionAttribute" value="${buildnumber.version}" />
        </attributes>
      </asminfo>
    </do>
  </foreach>
</target>
0 голосов
/ 29 июля 2011

Для этого вы можете использовать номер / хэш ревизии вашего хранилища исходного кода, поскольку это часто используется при использовании subversion или git-репозиториев.

Вы также можете использовать сервер сборки, такой как cruisecontrol (ccnet), это будет делатьэта версия сборки увеличивается для вас.

...