質問

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

これはほとんどのプロジェクトの問題であると推測しているので、おそらく以前に解決されていると思われますか?

プロジェクトのバージョンリソースの管理を簡素化する方法についての提案はありますか?

役に立ちましたか?

解決

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

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

そして、プロジェクトのAssemblyInfoファイルからAssemblyFileVersion属性を必ず削除してください。

他のヒント

ソリューションにファイルを入れて、これを<!> quot; SolutionInfo.cs <!> quot;と呼びます。 (私はC#を想定していますが、VBでも動作します)。これには、共通するすべてのプロパティが含まれます。 AssemblyVersionAttributeで開始します。

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

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

一部のプロジェクトには複数のソリューションがあるため、グローバルファイルはディレクトリ構造内のソリューションレベルの上にあり、必要なものはすべてその下にあります。

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

その後、ビルドが発生します。つまり、ビルドからのすべての出力はまったく同じバージョン番号を持ち、MSIまたはアセンブリからいつでもバージョンを取得でき、その出力のビルドに使用されたソースを正確に把握できます。

  

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

これに関するコメント、自動生成されたバージョン番号のサイクル。したがって、昨日のビルドのバージョンが1.2.3.Xであるようにバージョン管理できるようにしたい場合、X <!> lt; Xを今日ビルドする場合、これは方法ではありません。

この使用を実現するには

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

これにより、X.Yの組み合わせが昨日よりも大きいバージョン1.2.X.Yが取得されます。 X.Yはそれぞれ日付と時刻の関数であると推測しています

これを行うカスタムMSBuildタスクを作成できます。 このアプローチ

をご覧ください。

AssemblyInfo.csでアスタリスクを使用できます:

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

バージョン番号が自動的に増加します。すべてのアセンブリ間で1つの番号を共有するために...確かではありませんが、おそらく共有ファイルで上記の属性を使用します。

svnversion MSBuildコミュニティタスク を使用して、これは、 こちら 私のやり方は、複数のアセンブリにまたがっていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top