4. geneasminfoターゲット- AssemblyInfoファイルの情報を設定する
geneasminfoターゲットでは、AssemblyInfoファイルの情報(属性値)を設定しています。
<target name="genasminfo" > <!-- 「asm.file」プロパティが存在するかどうか判定 --> <if test="${property::exists('asm.file')}" > <!-- 属性値を設定したいAssemblyInfoファイルと、 標準属性を設定 --> <attrib file="${asm.file}" normal="true" /> <!-- 属性値を設定したいAssemblyInfoファイルと、 AssemblyInfoファイルの言語を設定 --> <asminfo output="${asm.file}" language="CSharp"> <imports> <import name="System" /> <import name="System.Reflection" /> <import name="System.Runtime.InteropServices" /> </imports> <!-- 設定する属性と、その値などを設定 --> <attributes> <!-- .NETアセンブリ用のバージョン番号 (アセンブリバージョン) --> <attribute type="AssemblyVersionAttribute" value="${solution.long.ver}" /> <!-- Win32ファイル・システム用のバージョン番号 (ファイルバージョン) --> <attribute type="AssemblyFileVersionAttribute" value="${build.version}" /> <attribute type="AssemblyCopyrightAttribute" value="Copyright (c) 2005-2006, AttCompany." /> <attribute type="AssemblyCompanyAttribute" value="AttCompany." /> </attributes> </asminfo> </if> </target>
ここで使用されているNAntのタスクは以下の2つです。
attribタスクasminfoタスク
これら2つのタスクの使い方について、以下に記します。
attribタスク
attribタスクは、どのAssemblyInfoファイルを作成・更新するかを指定するものです。
| 属性名 | 型 | 説明 | 必須 |
archive | bool | アーカイブ属性を設定。デフォルト値はfalse。 | × |
file | file | 属性を設定するファイル(AssemblyInfoファイル)の名前。 | × |
hidden | bool | 隠し属性を設定。デフォルト値はfalse。 | × |
normal | bool | 標準属性を設定。この属性を設定する場合は、他の属性と同時に設定しないこと。デフォルト値はfalse。 | × |
readonly | bool | 読み取り専用属性を設定。デフォルト値はfalse。 | × |
system | bool | システム属性を設定。デフォルト値はfalse。 | × |
failonerror | bool | タスク実行中にエラーが発生した場合、ビルドプロセスを中止させるかどうかを設定。デフォルト値はtrue。 | × |
if | bool | 値がtrueならば、タスクは実行される。falseならば、タスクはスキップされる。 デフォルト値はtrue。 | × |
unless | bool | if属性の逆。値がfalseならば、タスクは実行される。trueならば、タスクはスキップされる。デフォルト値はfalse。 | × |
verbose | bool | 詳細なログを出力するかどうかを設定。デフォルト値はfalse。 | × |
通常、fileとnormalがよく利用されます。
asminfoタスク
asminfoタスクは、AssemblyInfoファイルを作成したり、ファイル内の属性値を変更します。
| 属性名 | 型 | 説明 | 必須 |
language | CodeLanguage | AssemblyInfoファイルの言語を指定します。例)CSharp | ○ |
output | file | 生成するAssemblyInfoファイルの名前。 | ○ |
failonerror | bool | タスク実行中にエラーが発生した場合、ビルドプロセスを中止させるかどうかを設定。デフォルト値はtrue。 | × |
if | bool | 値がtrueならば、タスクは実行される。falseならば、タスクはスキップされる。デフォルト値はtrue。 | × |
unless | bool | if属性の逆。値がfalseならば、タスクは実行される。trueならば、タスクはスキップされる。デフォルト値はfalse。 | × |
verbose | bool | 詳細なログを出力するかどうかを設定。 デフォルト値はfalse。 | × |
<attributes>~</attributes>タグ内の要素について
<attributes>要素内の子要素については、次のとおりです。
| 要素名 | 説明 |
<imports> | インポートするnamespaceを指定。 |
<references> | 参照したいDLLのパスを指定。 |
<attribute> | 設定したい属性。 |
<attribute>要素で利用可能な属性は、次のとおりです。
| 属性名 | 型 | 説明 | 必須 |
type | string | アセンブリの属性のタイプを指定します。例)AssemblyVersionAttribute。 | ○ |
asis | bool | 値がtrueならば、属性の値はそのまま設定される。デフォルト値はfalse。 | × |
if | bool | アセンブリの属性が設定されるかどうかを指定。 | × |
unless | bool | if属性の逆。アセンブリの属性が設定されないかどうかを指定。 | × |
value | string | 属性の値。 | × |
通常、type属性とvalue属性を指定することが多いです。このスクリプトでは、typeの値として、以下の5つの属性を設定しています。
| 属性名 | 説明 |
AssemblyVersionAttribute | .NETアセンブリ用のバージョン番号。.NET Frameworkのバージョン管理機能で使用される。このAssemblyVersionAttribute属性の値が指定されていない場合、AssemblyFileVersionAttributeの値が既定値として設定される。 |
AssemblyFileVersionAttribute | Win32ファイル・システム用のバージョン番号。AssemblyFileVersionAttributeの値が指定されていない場合、AssemblyVersionAttributeの値が既定値として設定される。 |
AssemblyCopyrightAttribute | 著作権情報。「Copyright (c) <西暦年> <会社名>.」(例:Copyright (c) 2005-2006, AttCompany.)のように記述する。 |
AssemblyCompanyAttribute | 会社名。 |
実行結果
「NAntExecute.bat」ファイルをダブルクリックし、サンプルスクリプトを実行した結果を下図に示します。
また、「C:\NAntSample_VCSharp\Build\Project1\Assemblies」に、「Product.dll」と「ProductLib.dll」が出力されます。アセンブリのバージョンは、NAntスクリプトによって設定された「1.1.0.1」になっているのが確認できます。
まとめ
本稿では、NAntを利用して、ファイルバージョンをビルドのたびに動的にアップデートする方法について紹介しました。他にも、NAntの豊富なタスクを利用して、日々のビルド作業を自動かつ便利に行うことができます。NAntはビルド作業のためのツールという枠にとどまらず、さまざまな作業の効率を飛躍的に向上させることができる優れたツールです。ぜひお使いになってみてください。


