.NETアプリケーションにおけるFile Version
とAssembly Version
の理解
.NETアプリケーションを作成する際、バージョニングの管理は困難な作業になることがあります。特に、開発者はFile Version
とAssembly Version
の適切な使用について悩むことがよくあります。このブログ記事では、これら2つのバージョン属性、その重要性、およびプロジェクト内での効果的な使用方法に関するガイダンスを掘り下げます。
バージョニングの課題
.NETプロジェクトでは、通常、2つの異なるバージョン番号が必要です:File Version
とAssembly Version
です。これらは時々混乱を引き起こすことがあります、特にそれらの適用方法と相互作用の面で。以下は簡単な概要です:
-
Assembly Version: この属性は、アセンブリマニフェスト自体のバージョンを示し、アセンブリ解決時に重要です。これは、他のアセンブリによって呼び出される際のコードの互換性についてです。
-
File Version: これはディスク上の物理ファイルのバージョンを指し、.NETランタイムによって使用されません。つまり、ユーザーはアセンブリのファイルプロパティでこのバージョンを確認できますが、実行時のアセンブリ参照には影響しません。
File VersionとAssembly Versionの使用に関するベストプラクティス
別々に保つ
一般的な実践の一つは、アセンブリバージョンを一定に保ち、ファイルバージョンを更新することです。たとえば、実行可能ファイル(exe)といくつかの動的リンクライブラリ(dll)がある場合、次のようにできます:
- すべてのアセンブリ(exeとdll)に対して同じAssembly Versionを設定します。これにより、アセンブリインターフェイスを一貫して保つことができます。
- 各アセンブリに対してFile Versionを区別します(例:exeはバージョン1.0.0.0、dll1は1.0.0.1、dll2は1.0.0.2など)。これにより、特に実行可能ファイルに対する変更を追跡できます。
この戦略により、各DLLのどのバージョンが実行可能ファイルに一致するかを明確に理解でき、プロジェクト管理が簡素化され、互換性の問題を最小限に抑えることができます。
バージョンの自動インクリメント
場合によっては、開発者が各ビルドのFile Versionを自動インクリメントすることを好み、Assembly Versionは重要な変更が行われたときのみ手動で更新することがあります。つまり、各コンパイル後にFile Versionはビルドの特定を反映する場合があります(例えば、1.0.0.1、1.0.0.2など)、対してAssembly Versionの更新は大きな間隔で発生します(例えば、1.0.0から1.0.1など)。
AssemblyInformationalVersion
の役割
AssemblyInformationalVersion
属性は、もう一つの重要なバージョニングツールです。この属性は、バージョンの文字列表現を格納でき、通常は現在のバージョンについて追加情報を表示するために使用されます。この情報は、構造化されたバージョニングシステムにうまく収まらない場合があります。
- これには「ベータ」や「リリース候補」、または他の定性的なマーカーなどのラベルが含まれる場合があります。
- ユーザーがソフトウェアの状態を一目で理解できるように役立ちます。
結論
File Version
、Assembly Version
、およびAssemblyInformationalVersion
を理解し効果的に活用することで、.NETプロジェクトにおけるバージョン管理と開発プロセスをスムーズにすることができます。一貫したバージョニングの慣行を採用することで、潜在的な競合を最小限に抑え、プロジェクトを管理しやすくすることができます。
追加のガイダンスについては、Microsoftのサポート記事を参照してください:Assembly VersionとAssembly File Versionの使用方法。
これらの実践に従うことで、コードを整理するだけでなく、複数の開発者が同じアプリケーションに取り組んでいるチーム環境でのコラボレーションを強化できます。