TFS を使用する前は、Visual Studio を使用してローカルでパッケージをビルドしていました。ソリューションにまとめられた多くのプロジェクトがありました。パッケージをビルドしたいときは、ccproj プロジェクトを見つけて右クリックし、「パッケージ」をクリックするだけです。
私たちのソリューションには、具体的なものがいくつかあります。
- 複数の Web サイトと仮想アプリケーションで Web ロールを使用し、VS2012 ソリューションのプロジェクトの依存関係としてそれらを持っています
- Web ロールと worker ロールの両方に構成変換を使用します。Worker ロールの変換は、プロジェクト ファイルに変換ターゲットを手動で追加することによって実現されました。
- 追加のクラス ライブラリ プロジェクトがいくつかあります。それらの出力は、ワーカー ロールのサブフォルダーに正しい構成ファイルと共に配置する必要があります。これは一種のプラグイン アーキテクチャです。いくつかの xcopy コマンドを使用して、参照されていないこれらのライブラリをワーカー ロールに含めました。
VS 2012 をローカルでビルドすると、すべてがスムーズに機能しました。
TFS に移行したとき、ビルド サーバーで同じビルド プロセスをレプリケートできないことがすぐにわかりました。
- TFS がソリューション構造を保持していないことが判明しました。詳細はこちら: http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/9ac815c8-5961-4670-a6d0-660a9b66da9c
- 単一の役割で複数の Web サイトと仮想アプリケーションを解決していたプロジェクトの依存関係は、おそらく異なる出力ディレクトリが原因で、ビルド サーバーでは機能しませんでした。ccproj および csproj ファイルにいくつかのハックを追加して、これらを公開し、結果のパッケージに正しく含める必要がありました。
- TFS ビルド サーバーのディレクトリ構造が異なるため、xcopy コマンドが失敗しました。
- /t:Publish パラメーターを msbuild コマンド ラインに明示的に追加して、TFS ビルド サーバーで cspack を強制的に実行する必要がありました。
- ワーカー ロールの構成変換が機能しなかったため、ccproj および csporj ファイルで別のハックを使用して強制的に発生させる必要がありました。
- さらに問題がありましたが、それらは詳細すぎます。問題全体を説明するためだけに、それを高レベルに保ちます。ビルドは何とか機能するようになりましたが、現在、多くのハックが行われています。
2 つの質問があります。
- VS2012 のローカル ビルドとまったく同じ動作をするように TFS ビルド サーバーを構成することは可能ですか?
- 単一の Web ロールで複数の Web サイトと仮想アプリケーションを使用して Azure パッケージを構築するための公式のソリューションはありますか?