20

CruiseControl を使用した自動ビルド システムがあります。使用するバージョン文字列を取得するために SvnRevisionLabeller を使用しています。この文字列を使用すると、nant を使用して AssemblyInfo.cs を更新できるため、ビルド時に正しいビルド文字列が含まれます。この CC ラベルを使用して、Subversion リポジトリにタグを付けることもできます。

すべてが揃っているので、
CCNet ビルド ラベル
- 実行可能ファイル (アセンブリ情報)
- バージョン管理 (サブバージョン タグ)

ここで問題が発生するのは、リポジトリから古いイメージを再構築しようとする場合です。AssemblyInfo.cs はバージョン管理下ではなく、生成されたファイルであるため、ビルドしようとすると、バージョン管理情報は、このバージョンのリポジトリが CruiseControl を使用してビルドされたときと同じにはなりません。CC ビルド中にビルドされたか、後日 Subversion からチェックアウトしたときにビルドされたかに関係なく、まったく同じイメージを生成できるようにしたいと考えています。

多くの場合、推奨されないことはわかっていますが、svn チェックアウトから後でビルドするときに正しいバージョン情報が使用されるように、ビルドごとに assemblyInfo.cs ファイルをチェックインする必要がありますか?

ありがとう、リアム

4

4 に答える 4

7

AssemblyInfo.cs をまったくバージョン管理しないか、それらの「開発者バージョン」をリポジトリに配置し、ビルド後に CruiseControl.Net svn-revert を実行します (開発者ワークステーションで作成されたビルドが簡単に削除できるように、後者を行います)。 CruiseControl.Net からダウンロードした「公式」のもの)。

後で同じビルド ラベルを再現する場合は、手動で MSBuild / NAnt を呼び出して再構築を行う必要があります。適切な値に設定された CCNetLabel をそれに渡すだけで、CruiseControl から呼び出されたビルドと同じアセンブリ バージョンが生成されます。 .Net (MSBuild: /p:CCNetLabel=1.4.2.333、NAnt: -D:CCNetLabel=1.4.2.333)。

于 2009-06-12T11:11:57.343 に答える
2

私は常にチェックインしています。実際、これが Team System ソース管理のデフォルトの動作だと思います。

于 2009-06-10T21:46:45.050 に答える
1

ビルドの前に必要なすべての AssemblyInfo.cs ファイルを生成する MSBuild スクリプトがあります。このようにして、アセンブリ バージョンで SVN リビジョン番号を使用することもできます。AssemblyInfo.cs ファイルは SVN にチェックインされません (人々の迷惑にならないように無視されます) が、ビルド前に生成されます (自動ビルド スクリプトか VS かは関係ありません)。

また、AssemblyInfo.cs ファイルの生成を処理するバッチ ファイルも提供するので、開発者は詳細に煩わされる必要がありません。

于 2009-12-18T16:18:36.133 に答える