2009-05-28 11 views
11

C#2008 SP1リビジョン番号を管理するための効果的な方法

リビジョン番号を処理する最も良い方法は何ですか?

私はいつも普通の数字が3つしかないと思っていました。 (メジャー、マイナー、バグ修正)。

しかし、ビルド番号とリビジョン番号が何か不思議です。

たとえば、過去に私は通常3つの数字しか使用しませんでした。私はいくつかの非常にマイナーな変更やバグの修正があります。私は3番目の数字を増やします(バグ修正)。

私はこれに新しいです。プロの世界では通常何が行われていますか?私のAssemblyInfoファイルで

何かアドバイスのための多くのおかげで、

私は、次のしている:

// 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.*")] 
[assembly: AssemblyVersion("1.0.2.*")] 
[assembly: AssemblyFileVersion("1.0.0.0")] 

// 1.0.2 Added feature for detecting if a sound card is installed. 

答えて

1

ご意見ありがとうございます。

私は以下を使用することに決めました。

私のプロジェクトのバージョン番号は1.0.2.20です。 1:メジャー 0に変更:マイナーチェンジ 2:バグ修正 20:Subversionのリビジョン番号

だから私は上の任意の提案私のassemblyinfo.cファイルに

[assembly: AssemblyVersion("1.0.2.20")] 

を以下のように変更されましたがこのアイデアは、私が聞いて嬉しいです。

多くのおかげで、

+2

複数の異なるプログラマが同じコードを処理している場合、バグ修正の数を追跡するのは難しいでしょう。 –

8

はこれを試してみてください:

http://autobuildversion.codeplex.com/

+0

は、私たちは、同様のアプローチを使用するために使用されるが、この方法では、長期的な管理が実際には非常に困難であることがわかりました。 1つは、継続的な統合ではうまく機能せず、インクリメンタルビルドでは大混乱です。最終的には、ビルド番号としてSVNのバージョン番号を使用することに切り替えました。ビルド番号は、パブリッシング/バグ追跡の観点から理にかなっていました。 –

4

あなたのバージョン管理を検討したいと思いますアセンブリとファイルが異なっています。アセンブリのバージョン番号を変更すると、再コンパイルせずに既存のコードを使用することは可能ですが、非常に困難です。壊れた変更がある場合にのみアセンブリバージョンを変更するので、マイナーなバグ修正を簡単にリリースできます。

Assembly Versioningポリシーの詳細については、こちらをご覧ください。

+0

メジャーとマイナーのバージョン番号を変更しないと、アセンブリは.netフレームワーク(バインディング)で同じものとして扱われます。 –

+0

これは実際には当てはまりません。強力な名前を使用すると、バージョン番号全体が考慮されます。 –

+0

答えのリンクが壊れています。私はそれが今[これ1](http://xheo.com/knowledge-base/deploylx/general/assembly-versioning)だと信じています。 – ssarabando

10

MSDNから:

  • ビルド:ビルド番号の差は 同じソースの再コンパイルを表します。これは プロセッサー、 プラットフォーム、またはコンパイラーの変更により適切です。

  • 改訂:同一の名前、メジャー番号、およびマイナーバージョン番号の がありますが、異なるリビジョンのアセンブリは、完全に互換性があります。この は、以前にリリースされた アセンブリにセキュリティーの穴( )を修正するのに適しています。

フィル・ハークは、.NETのバージョン管理システムのnice deconstructionを持っているが、実際には、私は彼の懸念は本当に問題以来、私の経験では、.NET/MSのバージョン管理システムはだけは本当に技術で使用されているとは思いませんデバッグ/サポート/追跡の目的で、公的およびプロジェクト管理は、しばしば、日付またはメーキャップバージョン番号ベースのものとなる。

FWIW私が作業したすべての.NETプロジェクトは、 "X.Y. *"によって管理されています。つまり、メジャーとマイナーが何であるかを手動で制御したいのですが、システムがビルドとリビジョンを制御できるようにします。

2

バグフィックスナンバーは2刻みで使用します。奇数はマイナーなバグ修正をリリースし、偶数はバグ修正を意味します。明らかに、これは一部のビジネスでは一般的です(つまり、私が現在行っているビジネス)。

アイデアは偶発的なリリースを特定することであり、どういうわけか私はそのアイディアが好きです。あなたが間違っていることを簡単に見られるようにすること。これは、必ずしも奇数が事故ではなく、かなり高い確率で放出されているだけであるとは言いません。 (*に置き換え)最後のビットがランダムであることを覚えておいてください

あなたが1.0.2.*を使用する場合:

+0

それ以外の方法ではありませんか?あなたのシステムの.0は開発版を意味しますが、1.0.0のリリースは実際のリリースの可能性が高いからです。 :Dそれ以外は、私はこのシステムが好きです。意味をなさない私はいつも数字を増やすのが不安です(早すぎると間違ったバージョンがあることを意味し、遅すぎると新しいバージョン番号で早くテストできないことを意味します)。 – OregonGhost

5

私はポール・アレキサンダーの答えが正しいものであると思いますが、私はあなたのAssemblyInfoファイルに次の注釈を追加したいのですがあなたが1.0.2. * `今晩を構築し、明日の朝にもう一度ビルドすれば、2番目のバージョンは前回のビルドよりも低いバージョン番号を持つ可能性があります。

+2

MSDNによれば、「デフォルトのビルド番号は毎日増分されます。デフォルトのリビジョン番号はランダムです」 –

+0

ランダムであれば、後のビルドのバージョン番号が以前のバージョンよりも低いという同じアノーマリを得ることができます。 –

+0

レコードの場合は、リビジョン番号はランダムではありません(それ以上)。現在、自動増分ビルドとリビジョンはそれぞれ日付と時刻を表します。ビルドは01.01.2000から経過した日数であり、リビジョンはその日を2で割った秒数です(65535という制限があるため)。 –

関連する問題