SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

NAntスクリプトによるビルド効率化TIPS

NAntでアセンブリのバージョンアップデートを自動化する

NAntスクリプトによるビルド効率化TIPS


4. geneasminfoターゲット- AssemblyInfoファイルの情報を設定する

 geneasminfoターゲットでは、AssemblyInfoファイルの情報(属性値)を設定しています。

nant.build内のgenasminfoターゲット
<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ファイルを作成・更新するかを指定するものです。

attribタスクの属性
属性名説明必須
archiveboolアーカイブ属性を設定。デフォルト値はfalse。×
filefile属性を設定するファイル(AssemblyInfoファイル)の名前。×
hiddenbool隠し属性を設定。デフォルト値はfalse。×
normalbool標準属性を設定。この属性を設定する場合は、他の属性と同時に設定しないこと。デフォルト値はfalse。×
readonlybool読み取り専用属性を設定。デフォルト値はfalse。×
systemboolシステム属性を設定。デフォルト値はfalse。×
failonerrorboolタスク実行中にエラーが発生した場合、ビルドプロセスを中止させるかどうかを設定。デフォルト値はtrue。×
ifbool値がtrueならば、タスクは実行される。falseならば、タスクはスキップされる。 デフォルト値はtrue。×
unlessboolif属性の逆。値がfalseならば、タスクは実行される。trueならば、タスクはスキップされる。デフォルト値はfalse。×
verbosebool詳細なログを出力するかどうかを設定。デフォルト値はfalse。×

 通常、filenormalがよく利用されます。

asminfoタスク

 asminfoタスクは、AssemblyInfoファイルを作成したり、ファイル内の属性値を変更します。

asminfoタスクの属性
属性名説明必須
languageCodeLanguageAssemblyInfoファイルの言語を指定します。例)CSharp
outputfile生成するAssemblyInfoファイルの名前。
failonerrorboolタスク実行中にエラーが発生した場合、ビルドプロセスを中止させるかどうかを設定。デフォルト値はtrue。×
ifbool値がtrueならば、タスクは実行される。falseならば、タスクはスキップされる。デフォルト値はtrue。×
unlessboolif属性の逆。値がfalseならば、タスクは実行される。trueならば、タスクはスキップされる。デフォルト値はfalse。×
verbosebool詳細なログを出力するかどうかを設定。 デフォルト値はfalse。×
<attributes>~</attributes>タグ内の要素について

 <attributes>要素内の子要素については、次のとおりです。

attributes要素配下の子要素
要素名説明
<imports>インポートするnamespaceを指定。
<references>参照したいDLLのパスを指定。
<attribute>設定したい属性。

 <attribute>要素で利用可能な属性は、次のとおりです。

attributeの属性
属性名説明必須
typestringアセンブリの属性のタイプを指定します。例)AssemblyVersionAttribute
asisbool値がtrueならば、属性の値はそのまま設定される。デフォルト値はfalse。×
ifboolアセンブリの属性が設定されるかどうかを指定。×
unlessboolif属性の逆。アセンブリの属性が設定されないかどうかを指定。×
valuestring属性の値。×

 通常、type属性とvalue属性を指定することが多いです。このスクリプトでは、typeの値として、以下の5つの属性を設定しています。

attributeのtypeの値
属性名説明
AssemblyVersionAttribute.NETアセンブリ用のバージョン番号。.NET Frameworkのバージョン管理機能で使用される。このAssemblyVersionAttribute属性の値が指定されていない場合、AssemblyFileVersionAttributeの値が既定値として設定される。
AssemblyFileVersionAttributeWin32ファイル・システム用のバージョン番号。AssemblyFileVersionAttributeの値が指定されていない場合、AssemblyVersionAttributeの値が既定値として設定される。
AssemblyCopyrightAttribute著作権情報。「Copyright (c) <西暦年> <会社名>.」(例:Copyright (c) 2005-2006, AttCompany.)のように記述する。
AssemblyCompanyAttribute会社名。

実行結果

 「NAntExecute.bat」ファイルをダブルクリックし、サンプルスクリプトを実行した結果を下図に示します。

NAnt実行結果(コマンドプロンプト)
NAnt実行結果(コマンドプロンプト)

 また、「C:\NAntSample_VCSharp\Build\Project1\Assemblies」に、「Product.dll」と「ProductLib.dll」が出力されます。アセンブリのバージョンは、NAntスクリプトによって設定された「1.1.0.1」になっているのが確認できます。

NAnt実行結果(出力されたアセンブリ)
NAnt実行結果(出力されたアセンブリ)

まとめ

 本稿では、NAntを利用して、ファイルバージョンをビルドのたびに動的にアップデートする方法について紹介しました。他にも、NAntの豊富なタスクを利用して、日々のビルド作業を自動かつ便利に行うことができます。NAntはビルド作業のためのツールという枠にとどまらず、さまざまな作業の効率を飛躍的に向上させることができる優れたツールです。ぜひお使いになってみてください。

参考資料

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
NAntスクリプトによるビルド効率化TIPS連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 齋藤 利佳(サイトウ リカ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/620 2006/11/29 16:12

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー