質問: AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いについて下記の理解をもっています。MSDNの説明だけではハッキリしないので、現場で使用される方からどのようなの場合にてどれを使用するのは一般的なのかをアドバイスをいただきたいです。 **アセンブリバージョン(AssemblyVersion)** *MSDN:属性を付けるアセンブリのバージョンを指定します。* ■他のアセンブリに参照される際に使用される。 ■もし変更のある場合に、参照するアセンブリにてバージョンの更新が必要 ■サンプルフォーマットmajor.minor > > [assembly: AssemblyVersion("1.0")] > > > **アセンブリファイルバージョン(AssemblyFileVersion)** *MSDN:Win32 ファイル バージョン リソースとして特定のバージョン番号を使用するようにコンパイラに命令します。 Win32 ファイル バージョンは、アセンブリのバージョン番号と同じにする必要はありません。* ■特定でユニークなビルドを意図しています。 ■ディプロイメント時に使用します。 ■ディプロイメント都度、数字を増やす。 ■インストーラーにも使用されます。 ■同じアセンブリで違うビルドを示す際にも使われます。 ■ウィンドウズでは、ファイルのプロパティで確認できます。 ■サンプルフォーマット:major.minor [revision as string]. > > [assembly: AssemblyFileVersion("1.0.1.20150218")] > > > **アセンブリ情報バージョン属性(AssemblyInformationalVersion)** *MSDN:アセンブリ マニフェストの追加バージョン情報を定義します。* ■製品全体のバージョンを表すことを意図しています。 ■顧客また、公式に表示されるバージョンです。 ■サンプルフォーマット:major.minor [revision as string] > > [assembly: AssemblyInformationalVersion("1.0 RC1")] > > >
回答: 詳細はMSDNのアセンブリ属性の項を参照すればよいかと思いますが、プログラム的には * `AssemblyVersionAttribute`はアセンブリの完全修飾名に使用される。 * `AssemblyFileVersionAttribute`は基本的にファイルのプロパティにしか使われない * `AssemblyInformationalVersionAttribute`はAppDataのバージョン管理に使用される という役割があります。また参照アセンブリのバージョンチェックは厳密名が指定されていなければ行われませんし、行われる場合でも完全一致というわけではないので普通`AssemblyVersion`の変更による再コンパイルは不要です。 なお.NETアプリのバージョンとして他にClickOnceのPublish Versionなどがあります。