2011-03-15 4 views
4

nant 작업을 사용하여 빌드 버전을 늘리는 방법은 무엇입니까? 좀 더 구체적으로 어떻게 이것을 assemblyinfo.cs의 버전 번호와 연결시킬 수 있습니까?nant <version> 작업

답변

8

버전 증가를 관리하기위한 시스템을 고려해야합니다. 이를 수행하는 일반적인 방법 중 하나는 CruiseControl.NET과 같은 지속적인 통합을 사용하는 것입니다. 이 경로를 이동하는 경우, 당신은이 같은 빌드 타겟을 사용할 수 있습니다 CCNetLabel 그것 NANT를 실행할 때 CruiseControl을에서 설정되는 동적 속성입니다

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

합니다.

+1

이 굉장합니다! 하지만 내 스크립트에서 이것을 구현할 때를 이해하지 못합니까? BUILD/COMPILE이 실제로 발생하기 전에이 작업을 수행해야합니까? 이 예제는 단순히 "AssemblyInfo.cs"파일을 생성합니다. 내 솔루션에서 기존 AssemblyInfo.cs 파일을 사용하려면 어떻게해야합니까? 나는 많은 것을 가지고있다. – D3vtr0n

+1

컴파일 대상이 발생하기 전에 수행해야합니다. 기존 AssemblyInfo.cs 파일이 많이있는 솔루션에서이 방법을 사용하는 가장 좋은 방법은 버전 속성 및 솔루션의 다른 공통 정보 (예 : AssemblyVersion, Company 등)를 모두에 포함 된 "GlobalAssemblyInfo.cs"파일로 분리하는 것입니다 솔루션을위한 프로젝트 위의 asminfo 태스크를 수정하여 대신 해당 파일을 수정할 수 있습니다. –

+0

^완전히 효과가있었습니다. 감사! – D3vtr0n

3

NAnt의 <asminfo> task은 AssemblyInfo.cs 생성에 도움이됩니다.

3

우리는 TeamCity를 사용하여 NAnt에 버전 번호를 제공합니다. 이 이것은 CommonAssemblyInfo.cs이 솔루션의 모든 프로젝트에 연결해야 지정된 버전으로 파일을 생성

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

.: 같은 버전 번호는 다음 어셈블리 정보에 주입된다.

2

나는

최고의 예를 들어 파일을 빌드 NANT에서 "어셈블리 정보 섹션"을 복사하는 것입니다

을 (당신이 Github에서 다운로드 할 수 있습니다) 여러 참조 프로젝트 (윈도우 폼, 클래스 라이브러리 및 BatchConsole)를 사용하고 있습니다

트릭은 nAnt 대상에서 참조 할 commonAssemblyinfo 파일을 사용할 수 있습니다. 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>