2009-03-04 14 views
13

多くのアセンブリでC#で書かれたVS2008プロジェクトがあります。私は、すべての異なるアセンブリ間のバージョン番号を管理する単純な方法と、ビルド番号を自動的にインクリメントして各アセンブリのバージョン番号に保存する方法を持っていたいと思います。VS2008での自動アセンブリバージョン番号管理

これは、ほとんどのプロジェクトで問題になっていると思われます。これはおそらくこれまでに解決されていると思われますか?

私のプロジェクトのバージョンリソースの管理を簡素化するための提案はありますか?

答えて

17

は、私は次の行を含む溶液内のすべてのプロジェクトによってリンクされているソリューション・レベルでは.csファイルを使用します。

+0

VBで動作するようには見えないのですが、VS.NETのExpress Editionのためですか?素晴らしいトリックのように見えます。 –

+0

また、を使用する必要があります。私は私の答えを忠告します。 –

+2

「AssemblyFileVersion」属性を削除することを意味します。 – Alexander

0

これを行うカスタムMSBuildタスクを作成できます。を参照してくださいthis approach

10

"SolutionInfo.cs"(私はC#、VBでも動作すると仮定していると仮定している)ソリューションにファイルを入れてください。これにはあなたが共通するすべてのプロパティを入れてください。 AssemblyVersionAttributeで開始してください。

各プロジェクトでは、既存のアイテムを各プロジェクトに追加することを選択しますが、追加をクリックするのではなく、ドロップダウンを使用してリンクとして追加します。

using System.Reflection; 
[assembly : AssemblyVersion("1.2.3.*")] 

そして、あなたのプロジェクトにAssemblyInfoファイルからAssemblyFileVersion属性を削除してください:

0

あなたのAssemblyInfo.csでアスタリスクを使用することができます。

// Version information 
[assembly: AssemblyVersion("1.0.*")] 

は、それは自動的にあなたのversionnumbersが増加します。すべてのアセンブリ間で1つの数値を共有するために...わかりませんが、共有ファイルで前述の属性を使用している可能性があります。

3

他の回答と同様に、ソリューションレベルで1つのAssemblyInfoGlobal.csファイルがあります。次に、ビルドスクリプトの一部として、CruiseControl.netが定義するCCNetLabel(ラベルを生成するためにdefaultLabellerを使用)とグローバルファイルのチェックアウト、バージョン番号の変更、グローバルファイルのチェックインを行う小さなアプリケーションを用意しています

いくつかのプロジェクトでは複数のソリューションが用意されているため、グローバルファイルはディレクトリ構造のソリューションレベルより上にあるため、必要なものすべてがその下にあります。

また、展開プロジェクトのバージョン番号も更新されます。これらの番号はVDProjファイル内にありますが、エクスプレスバージョンではこれらの番号がわかりません。これは完全なProfessional上の機能だと思います。また、いくつかのプロジェクトには十数の展開プロジェクトがありますが、VDPROJファイル自体からバージョン番号を外部化する簡単な方法はありません。

次に、ビルドのすべての出力が同じバージョン番号を持っていることを意味します。いつでもMSIまたはアセンブリからバージョンを取得できます。その出力を構築するために使用されます。

+0

TeamCityとMSBuildコミュニティタスクを使用して同じことを行います。番号を増やす代わりに、バージョンリビジョンをソースコントロールチェンジセット番号に設定します。これにより、すべてのバイナリアーチファクトを正確なソースリビジョンにトラッキングすることができます。 – Todd

0

私はこのようなことをするためにsvnversion MSBuild community tasksを使用しました。私は指示に従いましたhere私はそれを行う方法は複数のアセンブリにまたがっていません。

1

using System.Reflection; [assembly : AssemblyVersion("1.2.3.*")]

この上だけコメント、自動生成されたバージョン番号サイクル。だから、昨日のビルドにバージョン1.2.3.Xがあるようなバージョンのものを探しているのなら、X < Xは今日ビルドされています。これはあなたにX.Yの組み合わせは、それが昨日よりも、今日の大きいバージョン1.2.X.Yを取得します

​​

この使用を達成するために

。私はX.Yがそれぞれ日付と時刻の関数であると推測しています