私は、ClickOnceビルドを自動化するためにNantを使用します。だから、アプリケーションを構築した後、そのバージョンが何であるかを知る必要があります。また、私は自動インクリメントを構築する必要があります。建物についてはNAntおよびビルドバージョン
私はこのために
私は、ClickOnceビルドを自動化するためにNantを使用します。だから、アプリケーションを構築した後、そのバージョンが何であるかを知る必要があります。また、私は自動インクリメントを構築する必要があります。建物についてはNAntおよびビルドバージョン
私はこのために
msbuild.exe /t:publish
を使用したSubversionやGitのリポジトリを使用するときには、多くの場合、使用されているとして、あなたのソースコードリポジトリのリビジョン番号/ハッシュを使用することができます。
cruisecontrol(ccnet)のようなbuildserverを利用することもできます。これは、このビルドバージョンを増やします。
私が理解している限り、最小限の労力でバージョン検出/管理を行いたいと思っています。
なぜ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>
msbuild/t:publishを使用すると、このフラグ。私が必要とするNAnt機能をありがとう。 –
私は出版にナントを使用します。だから、私が何かを安全なソースに変更して公開すると、それを公開してから間違いを見て修正し、再び公開します。 (ソースの安全なところでチェックインしているので、ソース管理のバージョン番号は変更されませんでしたが、アプリケーションで変更されました) –