1. ホーム
  2. .net

[解決済み] CIプラットフォーム(Hudson)でC#アセンブリのバージョンを自動インクリメントするにはどうしたらいいですか?

2022-09-13 04:21:32

質問

私自身と私のグループは、アセンブリのバージョン番号を増加させるのが苦手で、頻繁に 1.0.0.0 のバージョンでアセンブリを出荷しています。 明らかに、これは多くの頭痛の種を引き起こします。

私たちは、私たちの CI プラットフォームでのプラクティスがかなり良くなってきています。 assemblyinfo.cs ファイル内の値を自動的に増分し、アセンブリのバージョンがそのアセンブリ内のコードの変更によって自動的に更新されるように設定したいと思います。

私は以前 (私たちが ハドソン を見つける前)、値を増加させる方法を設定していました。 msbuild またはコマンドライン(思い出せない)で値を増やす方法がありますが、Hudsonの場合、SVNリポジトリを更新して再度ビルドを起動することになります。Hudson は 1 時間ごとに SVN をポーリングするので、これは遅い無限ループになります。

Hudson にバージョン番号をインクリメントさせるのは悪い考えでしょうか。それを行うための代替方法は何でしょうか?

理想的には、私の解決策の基準は次のようなものです。

  • でのビルド番号の増加 assemblyinfo.cs ビルドの前に
  • 変更されたアセンブリのビルド番号のみを増加させます。 Hudson はビルドを実行するたびにプロジェクト フォルダを消去するので、これは不可能かもしれません。
  • 変更された assemblyinfo.cs をコードリポジトリにコミットします(現在は VisualSVN )
  • Hudson が変更をスキャンする際に、新しいビルドをトリガーしないようにする。

しかし、私のすべてのアイデアは、Hudson が次にスキャンするときに新しいビルドをトリガーする原因となります。 私は、誰かが私のためにすべてをやってくれることを求めているわけではなく、正しい方向を示してくれるだけで、おそらく Hudson が特定の SVN コミットを無視するようにするテクニックなどです。

私がこれまでに見つけたものはすべて、バージョン番号を自動的に増加させる方法を説明した記事だけで、無限ループに陥る可能性のある CI プラットフォームを考慮したものは何もありませんでした。

どのように解決するのですか?

単純な代替案は、C# 環境がアセンブリのバージョンをインクリメントするように、version 属性に major.minor.* (に設定することです(AssemblyInfoファイルのテンプレートで説明されています)。

もっと包括的な解決策をお探しかもしれませんが。

EDIT (コメントでの質問に対する回答)。

から AssemblyInfo.cs :

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]