.NETアセンブリバージョニングにSVNリビジョンを含める
ソフトウェア開発の世界では、バージョン管理は非常に重要です。Subversion(SVN)をバージョン管理システムとして使用している場合、SVNリポジトリのリビジョン番号を.NETアセンブリのバージョン文字列に含めることができれば、追跡性やデバッグの容易さが向上します。「CC.NETのようなサードパーティ製ツールなしにこれができる方法はあるのか?」と自問しているなら、その答えは明確な「はい」です。
問題:追加ツールなしのバージョニング
バージョン文字列にメジャーおよびマイナーのバージョン番号だけでなく、SVNリビジョン番号も反映させたいシチュエーションに出くわしたことがあるかもしれません。考慮するかもしれない一般的なターゲットバージョン形式は以下の通りです:
Major.Minor.SVNRev
残念ながら、追加ソフトウェアなしでこの実現方法を.NETで見つけるのは難しいかもしれません。特に、CやC++のような言語で同様のことを行ったことがある場合、なおさらです。C/C++では、ビルドスクリプトを使用してヘッダーファイルをバージョン番号で更新する方法がありました。
解決策:SubWCRevを使用する
SVNリビジョン番号を.NETアセンブリバージョニングに組み込むための効果的な方法は、SubWCRevを使用することです。これはTortoiseSVNに含まれているユーティリティです。SubWCRevは、ファイルからSVNキーワードを読み取り、ビルドプロセス中に適切なリビジョン情報に置き換えます。
SubWCRevの実装手順ガイド
-
TortoiseSVNをダウンロードして設定する:
- まだダウンロードしていない場合はTortoiseSVNをダウンロードします。
- それをマシンにインストールして、バンドルされているSubWCRevユーティリティにアクセスします。
-
AssemblyInfo.csを設定する:
AssemblyInfo.cs
ファイルを開きます。このファイルには通常、アセンブリのバージョン情報が含まれています。SubWCRev
によってバージョン番号が置き換えられるプレースホルダーを追加します。
例:
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0.0")]
-
テンプレートファイルを作成する:
- 新しいテキストファイル(例:
VersionInfo.txt
)を作成し、バージョン情報がどのように埋め込まれるか定義します。 - リビジョン番号のためのプレースホルダーを使用します。
VersionInfo.txt
の例:[assembly: AssemblyVersion("${VersionNumber}.0")] [assembly: AssemblyFileVersion("${VersionNumber}.0")] [assembly: AssemblyInformationalVersion("${VersionNumber}.${Revision}")]
- 新しいテキストファイル(例:
-
SubWCRevを実行する:
- SubWCRevコマンドを使用して、
VersionInfo.txt
ファイル内のプレースホルダーをSVNリポジトリからの実際のバージョン番号に置き換えます。 - これは通常、コマンドラインまたはビルドスクリプトに組み込む形で行えます。
- SubWCRevコマンドを使用して、
-
プロジェクトをビルドする:
- プロジェクトをビルドする際に、SubWCRevはリビジョン番号が埋め込まれた新しい
AssemblyInfo.cs
を生成します。
- プロジェクトをビルドする際に、SubWCRevはリビジョン番号が埋め込まれた新しい
結論
SubWCRevを.NETプロジェクトのワークフローに組み込むことで、外部ソフトウェア(CC.NETなど)に依存することなく、アセンブリのバージョン文字列にSVNリビジョン番号を簡単に含めることができます。このアプローチは、バージョニングをより情報豊かにするだけでなく、シンプルで管理しやすいものに保つことができます。
SVNリビジョン番号
を.NETアセンブリバージョニングに含める方法がわかったので、次のプロジェクトで試してみてください。明確さを実感できるでしょう。