21

わかりました。継続的インテグレーションに関しては、私が初心者であることをすぐに認めます。

そうは言っても、自分自身を教育するために CC.NET 環境をセットアップしようとしていますが、自動ビルド部分をセットアップするために必要な情報を見つけるのに苦労しています。

私が理解しているように、C# では、VS 2005 以降で生成された .csproj ファイル有効な MSBuild ファイルです。つまり、.csproj ファイルを使用して MSBuild タスクを CC.NET に統合できましたが、これにはいくつかの問題があります。

  1. ここでは、自動化されたビルド環境で本当に必要かどうかわからないことがたくさんあります。
  2. 私はこのファイルを作成しませんでした。私はそれを理解していません、そしてそれは私を怖がらせます。(偶然によるプログラミング)
  3. 起こっていることのほとんどは、$(MSBuildToolsPath)\Microsoft.CSharp.targets
  4. 1、2、および 3 の結果として、MbUnit のようなものを含めるようにファイルを変更することは、複雑で必要以上に困難に思えます。私の唯一の現実的なオプションは、それをAfterBuildセクションに含めることです。これは、私にとってハックのように思えます。

そこで、CC.NET 関係者、MSBuild 関係者、および MbUnit 関係者にいくつか質問します。

  1. MSBuild を使用する場合、VS で生成された .csproj ファイルをビルド ファイルとして使用することをお勧めしますか? それとも自分で作成する必要がありますか?
  2. MbUnit テストは、MSBuild ファイルまたは CC.NET ファイルの一部にする必要がありますか? 私の調査によると、それらは MSBuild ファイルに属しているようです。その場合、新しい MSBuild .proj ファイルを作成し、.csproj ファイルに加えて CVS にチェックインしますか? または、MbUnit タスクは .csproj ファイルの一部になりますか?
  3. 質問 2 と同様です。MbUnit テストを MSBuild ファイルに追加し、.csproj ファイルを使用することになった場合、Target Name="AfterBuild"その情報を追加するセクションは本当に必要ですか? セクションがあってはいけませんTarget Name="Test"か?VS で生成された .csproj ファイルを使用すると、2 番目のオプションが妨げられるようです。

そこにたくさんあることは知っていますが、オンラインで見つけることができたもののほとんどは、私が持っていないこれらのトピックにある程度精通していることを前提としています.曲線ではなく、ステップ関数です。:)

編集 1: テキストを更新して、もう少し簡潔にし、回答に関するいくつかの長引く質問に対処しました。

4

7 に答える 7

13

生成された .csproj ファイルを使用することをお勧めします。実際、本番環境では、生成された .sln ファイルを使用することをお勧めします。開発者と同じソリューション ファイルを使用することで得られることがわかりました。

.sln ファイルは、実際には有効な msbuild プロジェクト ファイルではないことに注意してください。入力として使用されると、msbuild 自体によって msbuild プロジェクトに変換されます。トリッキー!

学習目的で、.csproj のビルドをログに記録し、ステップ スルーして何が起こっているかを理解することができます。ただし、MSBuild は nant よりも少し宣言的であるため、時間をかけて少し試してみてください。

最後に、.sln ファイルまたは .csproj ファイルを msbuild タスクを含む継続的なビルド スクリプト プロジェクトにラップして、プロジェクトをビルドし、単体テストを一緒に実行します。この方法では、開発者はビルドするたびに単体テストを実行する必要はありませんが、コードを統合するたびに単体テストが実行されます。そして、はい、彼らが速く走ることを確認してください!1 秒以上かかるものはすべて、代わりにスケジュールされた (夜間?) ビルド中に実行する必要があります。1 秒以上かかる場合は、単体テストが少なく、単体テスト フレームワークで記述された統合テストが多い可能性があります。

編集:私が見つけたいくつかの追加情報が有用であることがわかりました-MSBuild 3.5を使用すると、.slnファイルからターゲット出力を取得できますが、この情報はMSBuild 2.0では返されません(.csprojでは機能するはずですが)両方のバージョンのファイル)。出力 (ビルドしたファイル) を単体テスト フレームワークへの入力として使用できます。

于 2008-10-21T21:39:04.643 に答える
4

csprojファイルはそのままにしておきます(あなたが言うように、あなたはそれを理解していません)。

独自のmsbuildprojファイルを作成し、msbuildタスクを介してメインビルドファイルからcsproj(またはsln)を呼び出します。CIサーバーにビルドファイルをビルドするように指示します。

この分離により、独自の事前タスクと事後タスク(単体テスト、スモークテストSQLスクリプト、fxcop /その他の静的分析など)を簡単に追加でき、作業環境を壊すことはありません。また、カスタムターゲットを好きなように実行できることも意味します(msbuild / antなど)。コードプレックスでMSBuildContribを参照して、さらに優れた機能を実現してください。

ビルドサーバーに視覚的な学習は必要ありません(展開プロジェクトがある場合を除きます。ただし、これも最後に確認してから変更されている場合を除きます)。

于 2008-10-20T23:05:44.127 に答える
3

独自のプロジェクト ファイルを作成し (*proj で終わるものはすべて、MSBuild によってプロジェクト ファイルと見なされます)、そこからビルドを呼び出します。このような:

<MSBuild Projects="MySolution.sln" Targets="Clean; Rebuild" Properties="Configuration=$(BuildMode);">

msbuild は、変更を加えずに .sln (ソリューション ファイル) をビルドすることもできることに注意してください。これは通常、多数の csproj ファイルを用意するよりも簡単です...

于 2008-10-21T08:14:48.743 に答える
2

NAnt と MSBuild の両方を使用しています。NAnt は NAntContrib でアップグレードされたので、msbuild taksを取得しました。一時的なセットアップかもしれませんが、これまでのところ大きな問題は発生していません。つまり、VS2008 で使用しているものと同じ csproj/sln を使用しているため、新しい csproj ファイルも作成しません。msbuild を使用してプロジェクトをビルドすると、従来の NAnt スクリプトが大幅に簡素化されました ( cscタスクを使用しました)。

ノート:

  1. プロジェクトで Windows Workflow Foundation を使用する場合、msbuild なしでそのようなプロジェクトをビルドするのは非常に困難です。
  2. ビルド マシンに VS.NET をインストールしないでください。Wixを使用してインストール msi を作成できます。
  3. @Franci Penov: 単体テストの実行は、すべてのビルドの一部であるべきです。バグを見つけるのを明日まで待ってもよろしいですか? 付記があります: 単体テストは非常に高速に実行する必要があります。
于 2008-10-21T19:16:52.760 に答える
1

個人的には、.csproj ファイルを使用しても問題ないと思います。独自の MSBuild プロジェクトを展開する場合に、自分自身を追加する必要がないほど多くのことは行われていません。

ただし、どのルートを選択するにしても、MbUnit をビルド ステップの一部として追加するのではなく、CC.Net の別のステップとして追加することをお勧めします。単体テストの実行は、毎日の CI サイクルの一部である必要があります。ただし、すべてのビルドに含める必要はありません。

于 2008-10-20T22:33:32.100 に答える
0

OK、注意すべき点がいくつかあります。csproj 形式が VS2005 から VS2008 に変更されました。また、MSBuild を使用する場合は、.vdproj (セットアップ) ファイルをビルドできないことに注意してください。そのためには、devenv (VS 実行可能ファイル) が必要です。つまり、devenv を呼び出してビルドする MSBuild タスクをいつでも作成できます。

独自の csproj ファイルを作成するか、VS2005 で作成したファイルを使用するかという質問については、中間の道をお勧めします。独自のプロジェクト テンプレートを作成します。これは、ニーズに対応し、残りは VS に任せます。

于 2008-10-20T23:28:01.523 に答える
0

msbuild の入力として .csproj を使用しても問題ありません。VS からのコンパイル中に無視されるタスクを csproj に手動で追加できます。ただし、自明ではないものを作成する場合は、別の msbuild のスクリプトを作成することをお勧めします。また、csproj ファイルから参照できます。TFS の一部である MS Build Server を見ましたか? TFS の SourceControl と統合され、CI に使用できます。そのプロジェクト ファイルは msbuild スクリプトです。

nAnt を使用した場合、サーバーに VS をインストールする必要がありますか? 「MSBuild」のことですか? いいえ、csproj ファイルで msbuild を使用するために VS をインストールする必要はありません。

于 2008-10-20T22:23:13.587 に答える