nant <version>задача - PullRequest
       0

nant <version>задача

4 голосов
/ 15 марта 2011

Как я могу использовать задачи nant для увеличения версий сборки? Чтобы быть более конкретным, как я могу связать это с номерами версий в assemblyinfo.cs?

Ответы [ 4 ]

8 голосов
/ 15 марта 2011

Вы захотите рассмотреть какую-то систему управления вашими приращениями версий. Один из распространенных способов сделать это - непрерывная интеграция, например CruiseControl.NET . Если вы идете по этому пути, вы можете использовать цель сборки, подобную этой:

<target name="set.version" description="generates the version number">
    <echo message="Setting the build version to ${CCNetLabel}..." />
    <attrib file="AssemblyInfo.cs" readonly="false" />
    <asminfo output="AssemblyInfo.cs" language="CSharp">
        <imports>
            <import namespace="System" />
            <import namespace="System.Reflection" />
        </imports>
        <attributes>
            <attribute type="AssemblyVersionAttribute" value="${CCNetLabel}" />
            <attribute type="AssemblyFileVersionAttribute" value="${CCNetLabel}" />
        </attributes>
    </asminfo>
    <attrib file="AssemblyInfo.cs" readonly="true" />
</target>

Где CCNetLabel - это динамическое свойство, которое устанавливается из CruiseControl при выполнении nant.

3 голосов
/ 15 марта 2011

Мы используем TeamCity для предоставления NAnt номера версии. Затем номер версии вводится в AssemblyInfo следующим образом.

<asminfo output="${solutionDir}/CommonAssemblyInfo.cs" language="CSharp">
      <imports>
        <import namespace="System" />
        <import namespace="System.Reflection" />
      </imports>
      <attributes>
        <attribute type="AssemblyVersionAttribute" value="${version}" />
      </attributes>
    </asminfo>

Это создает файл CommonAssemblyInfo.cs с указанной версией, который необходимо связать со всеми проектами в вашем решении.

3 голосов
/ 15 марта 2011

NAnt's <asminfo> task помогает вам с генерацией AssemblyInfo.cs.

2 голосов
/ 12 июля 2012

Я использую несколько проектов, на которые есть ссылки (Windows Forms, Библиотека классов и BatchConsole)

Лучшим примером будет копирование «раздела Assemblyinfo» из файла nAnt Build (его можно загрузить с Github )

Хитрость в том, что вы можете использовать файл commonAssemblyinfo, к которому ваши nAnt Targets будут ссылаться на него.

ниже цели из файла nAnt

<target name="create-common-assemblyinfo" if="${create.assemblyinfo}">
    <!-- ensure src/CommonAssemblyInfo.cs is writable if it already exists -->
    <attrib file="src/CommonAssemblyInfo.cs" readonly="false" if="${file::exists('src/CommonAssemblyInfo.cs')}" />
    <!-- generate the source file holding the common assembly-level attributes -->
    <asminfo output="src/CommonAssemblyInfo.cs" language="CSharp">
        <imports>
            <import namespace="System" />
            <import namespace="System.Reflection" />
            <import namespace="System.Runtime.InteropServices" />
        </imports>
        <attributes>
            <attribute type="ComVisibleAttribute" value="false" />
            <attribute type="CLSCompliantAttribute" value="true" />
            <attribute type="AssemblyTitleAttribute" value="NAnt" />
            <attribute type="AssemblyDescriptionAttribute" value="A .NET Build Tool" />
            <attribute type="AssemblyConfigurationAttribute" value="${project.release.type}" />
            <attribute type="AssemblyCompanyAttribute" value="http://nant.sourceforge.net" />
            <attribute type="AssemblyProductAttribute" value="NAnt" />
            <attribute type="AssemblyCopyrightAttribute" value="Copyright (C) 2001-${datetime::get-year(datetime::now())} Gerry Shaw" />
            <attribute type="AssemblyTrademarkAttribute" value="" />
            <attribute type="AssemblyCultureAttribute" value="" />
            <attribute type="AssemblyVersionAttribute" value="${project.version}.${build.number}.0" />
            <attribute type="AssemblyInformationalVersionAttribute" value="${project.version}" />
        </attributes>
    </asminfo>
</target>
...