.NET TIPS

アセンブリ・バージョンとファイル・バージョンを一致させるには?[VS 2005のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2007/11/01

 「TIPS:Visual Studio 2005でバージョン情報を設定するには?では、Visual Studio 2005(以降、VS 2005)のIDEで.NETアセンブリ(.EXEファイルや.DLLファイル)に対してバージョン番号を設定する方法を紹介している。.NETアプリケーションに設定できるバージョン番号には、(主に)アセンブリ・バージョン(Assembly Version)とファイル・バージョン(File Version)の2種類が存在し*1、前掲のTIPSの方法では、この両方を別々に設定しなければならない。

*1 厳密には、この2つに加えて製品バージョン(Informational Version)というバージョン番号も存在する。本稿ではこの説明は割愛する。詳しくは「TIPS:アセンブリにバージョン情報を設定するには?」を参考にしていただきたい。

 しかし現実的には、このアセンブリ・バージョンとファイル・バージョンを1つにまとめて設定できた方が、バージョン番号の管理は容易になるだろう。そこでその方法を本TIPSで紹介する。

VS 2005でアセンブリ・バージョンとファイル・バージョンをひとまとめに設定する方法

 アセンブリ・バージョンやファイル・バージョンの設定は、VS 2005では次の画面(=[アセンブリ情報]ダイアログ)のようにビジュアル化されている(この画面の表示方法は「TIPS:Visual Studio 2005でバージョン情報を設定するには?」を参照されたい)。

[アセンブリ情報]ダイアログを利用したバージョン番号の設定

 この[アセンブリ情報]ダイアログで設定したバージョン番号の値は、当然ながらソース・ファイルに格納されている。C#では「Properties」フォルダ内の「AssemblyInfo.cs」ファイル、VB(Visual Basic)では「My Project」フォルダ内の「AssemblyInfo.vb」ファイルである(VBで、[ソリューション エクスプローラ]からこのファイルを参照・編集するには、[ソリューション エクスプローラ]の上部にある[すべてのファイルを表示]ボタンをON状態にしなければならない)。

 次のコードは、それぞれのファイルでバージョン番号の設定が記述されている部分の抜粋である。

……省略……

// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
[assembly: AssemblyVersion("1.2.3.4")]
[assembly: AssemblyFileVersion("5.6.7.8")]
……省略……

' アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
'
'      Major Version
'      Minor Version
'      Build Number
'      Revision
'
' すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を
' 既定値にすることができます:
' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.2.3.4")>
<Assembly: AssemblyFileVersion("5.6.7.8")>
バージョン設定に関する部分のソース・コード(上:C#、下:VB)

 このコードの意味については、「TIPS:アセンブリにバージョン情報を設定するには?」で詳しく説明されているので、詳しくはそちらを参照してほしい(本TIPSでは割愛する)。

 このコードを見ると分かるように、アセンブリ・バージョンを設定するには、アセンブリに対してAssemblyVersion属性を指定すればよく、ファイル・バージョンを設定するにはAssemblyFileVersion属性を指定すればよい(いずれもSystem.Reflection名前空間の属性)。先ほどの[アセンブリ情報]ダイアログでバージョン番号を設定すると、これらの属性設定に関するコードが自動生成されるわけである。

 では、AssemblyVersion属性とAssemblyFileVersion属性の値を1つにまとめるには、どうすればよいのか。これにはAssemblyFileVersion属性を指定しなければよい。というのも、ファイル・バージョンは、AssemblyFileVersion属性の値が指定されていなければAssemblyVersion属性の値を既定値として使う仕様になっているからだ。

 次のコードは、AssemblyFileVersion属性をコメントアウトしたコードの例である。

……省略……
[assembly: AssemblyVersion("1.2.3.4")]
//[assembly: AssemblyFileVersion("5.6.7.8")]
……省略……
<Assembly: AssemblyVersion("1.2.3.4")>
'<Assembly: AssemblyFileVersion("5.6.7.8")>
AssemblyFileVersion属性をコメントアウトしたコードの例(上:C#、下:VB)

 この状態で、先ほど示したVS 2005の[アセンブリ情報]ダイアログを開くと、次の画面のように[ファイル バージョン]が空欄で表示される。

AssemblyFileVersion属性をコメントアウトした後の[アセンブリ情報]ダイアログ

 以降、バージョン番号を設定する際は、この[アセンブリ情報]ダイアログの[アセンブリ バージョン]の欄だけを編集すればよい。これだけで、ファイル・バージョンが常にアセンブリ・バージョンと同じ値になる。End of Article

カテゴリ:クラス・ライブラリ 処理対象:アセンブリ
使用ライブラリ:AssemblyVersion属性(System.Reflection名前空間)
使用ライブラリ:AssemblyFileVersion属性(System.Reflection名前空間)
関連TIPS:Visual Studio 2005でバージョン情報を設定するには?
関連TIPS:アセンブリにバージョン情報を設定するには?

この記事と関連性の高い別の.NET TIPS
アセンブリにバージョン情報を設定するには?
Visual Studio 2005でバージョン情報を設定するには?
バージョン情報ダイアログを作成するには?
複数のプロジェクトでファイルを共有するには?
[参照の追加]ダイアログに独自のアセンブリを表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間