2012-09-06 14 views
8

は、私は私のアプリのためのバージョン管理扱うために、より有意義な方法を見つけようとしていると私はアセンブリのバージョンが修正されることを推奨しています自動増分ファイルバージョンの固定アセンブリバージョン?

基本的に

http://support.microsoft.com/kb/556041

このKBの記事acrossed来て、ファイルバージョンはimcrementedします各ビルドごとに今これは私にとって完璧な意味がありますが、私の人生では私はそれを実装するように見えません。

以下のスニペットは、アセンブリバージョンとFileVersionの両方を自動的にインクリメントします。

[assembly: AssemblyVersion("1.0.*")] 

この次は1.0.0.0の固定アセンブリバージョンと1.0.*の固定ファイルのバージョンを設定するために思えますが。

[assembly: AssemblyVersion("1.0")] 
[assembly: AssemblyFileVersion("1.0.*")] 

ところで、ファイルのプロパティの[詳細]タブでの製品バージョンは、同様に今1.0.*を読み込みます。これでファイルのプロパティで製品バージョンを修正できるようになりました。

[assembly: AssemblyInformationalVersion("1.0")] 

しかし、それは私の元の仕事には役立ちません。好奇心の中で私は以下を試して、ファイルのバージョンを2.0.*に変更したので、少なくともそれを使用しています。自動増分ではありません。私は、自動増分は国会のバージョンであるバージョン番号のみを収集することができますが、オフのチャンスにあなたはそれが国会のバージョンと同じに設定されますファイルのバージョンを指定していないものとそう

[assembly: AssemblyVersion("1.0")] 
[assembly: AssemblyFileVersion("2.0.*")] 

アセンブリバージョンを固定したままファイルバージョンを自動的にインクリメントする方法を知っている人はいますか?

答えて

11

はい、それはちょっとばかげて、Microsoftは間違った方法を持っているようです。 AssemblyVersionは.NETアセンブリのバージョン管理システムで使用されるため、自動インクリメントすることは絶対にしないでください。ただし、AssemblyFileVersionはファイルのバージョンリソースのファイルバージョンエントリに書き込まれるため、デフォルトで常に自動的にインクリメントすると予想されます。

あなたのためにこれを行うことができるサードパーティのビルドシステムがあると確信していますが、ちょっとしたコマンドラインを使ってC#アプリケーションを作成しました。プロセスを構築する。それは非常に簡単です:

  1. 行ごとにAssemblyInfo.csファイルを読んでください。
  2. RegExの行を検索して、4つのバージョンのすべての部分を別々のキャプチャグループにキャプチャします。あなたはそれを自分で解析することができますが、正規表現はすべての検出と解析を一度に行いますので、利用しないことは愚かなようです。
  3. 4つの整数を取得したら、適切な方法で独自のインクリメントロジックを実装します。
+2

私はこの奇妙なことを見つけただけではありませんか?マイクロソフトでは実際に使用することをお勧めしない機能を追加しましたか? さて、次のステップは、ビルドタスクを使用してこれを行うことができるかどうかを確認することです –

関連する問題