2011-07-28 29 views
0

私は、ClickOnceビルドを自動化するためにNantを使用します。だから、アプリケーションを構築した後、そのバージョンが何であるかを知る必要があります。また、私は自動インクリメントを構築する必要があります。建物についてはNAntおよびビルドバージョン

私はこのために

答えて

0

msbuild.exe /t:publishを使用したSubversionやGitのリポジトリを使用するときには、多くの場合、使用されているとして、あなたのソースコードリポジトリのリビジョン番号/ハッシュを使用することができます。

cruisecontrol(ccnet)のようなbuildserverを利用することもできます。これは、このビルドバージョンを増やします。

+0

私は出版にナントを使用します。だから、私が何かを安全なソースに変更して公開すると、それを公開してから間違いを見て修正し、再び公開します。 (ソースの安全なところでチェックインしているので、ソース管理のバージョン番号は変更されませんでしたが、アプリケーションで変更されました) –

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:publishを使用すると、このフラグ。私が必要とするNAnt機能をありがとう。 –