2011-07-28 6 views
0

나는 ClickOnce 빌드 자동화에 Nant를 사용합니다. 따라서 응용 프로그램을 빌드 한 후 폴더 생성을 위해 버전이 무엇인지 알아야합니다. 또한 자동 증가 빌드가 필요합니다. 건물에 대한NAnt 및 빌드 버전

나는이를 위해

답변

0

msbuild.exe /t:publish를 사용 전복 또는 자식 저장소를 사용할 때 자주 사용되는 당신이 당신의 소스 코드 저장소 개정 번호/해시를 사용할 수 있습니다.

cruisecontrol (ccnet)과 같은 buildserver를 사용하면이 빌드 버전이 증가합니다.

+0

나는 게시에 nant를 사용합니다. 그래서 내가 무언가를 소스 세이프 인으로 변경하고 게시하면 실수를보고 수정하고 다시 게시합니다. (소스가 안전하지 않으므로 소스 컨트롤의 버전 번호가 변경되지 않았으므로 응용 프로그램에서 변경 되었음) –

0

필자가 이해하는 한, 최소한의 노력으로 버전 감지/관리를하고 싶습니다.

왜 AssemblyInfo 자동 증가 기능을 사용하지 마십시오. [assembly: AssemblyVersion("1.0.*")]AssemblyInfo.cs에 넣으면 모든 빌드에서 빌드 번호가 증가합니다. this answer에서 자세한 정보를 찾아보십시오.

컴파일 한 후에는 NAnt function 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

msbuild/t를 사용하면 게시 할 때 버전을 증가시키지 않으므로 이 깃발. 내가 필요한 NAnt 함수를 가져 주셔서 감사합니다. –

관련 문제