16 February 2009 0 Comments

【日本語版】 Team Build でカスタム プロパティを個々のソリュ―ションに渡す

  こんにちは! フォーラム オペレーターの服部清次です。 前回の更新から少し時間が経ち、 あっという間に2月も後半に入 ってしまいましたが、皆さん、いかがお過ごしですか? 今日は、久しぶりに、 MSDN フォーラムの Team Foundation Server 関連 FAQ コンテンツ で紹介しました英語スレッドの日本語訳を紹介してみようと思います。   こちらの記事は、ノース・カロライナ州にあるマイクロソフトのオフィスで Team Foundation Server のビルド自動化機能 Team Build の開発を担当している Aaron Hallberg のブログに掲載されたスレッドです。 こちらの情報が皆さんのお役に立てることを願っています! (^_^)v   * なお、日本語に翻訳するうえで表現のニュアンスを変えている箇所などがありますので、ご了承ください。     ◆ Team Build でカスタム プロパティを個々のソリュ―ションに渡す(原題: ”Passing custom properties to individual solutions in Team Build” )   このトピックに関して、 Gautam Goenka が 2006 年 4 月 20 日に 記事 を投稿しています。 そこには、ターゲット ファイルが含まれていました。 これは、 Team Build の標準 CoreCompile ターゲットをオーバーライドし、 Team Build が SolutionToBuild 項目グループ内のソリュ―ションをビルドするために使用する MSBuild タスクに渡されるユーザー特有のプロパティを許可するものでした。 このアプローチは、同じカスタム プロパティ値を SolutionToBuild 項目グループ内の各ソリューションに渡す場合は有効です。 しかし、 異なる プロパティ値を各ソリュ―ションに渡す場合はどうでしょうか?   Manish Agarwal   が、初歩的なスタートとして役立つ 記事 を投稿しています。 彼の目的は、アセンブリをソリュ―ション特有のサブディレクトリにリダイレクトすることでした。 しかも、この方法では、ソリュ―ションの特質に基づいて、他のユーザー特有のプロパティを渡すことができるように、容易に拡張することができます。 しかし、残念ながら、この方法は、ビルドのコンパイル段階でのエラーや警告で計算が中断されるといった問題があります。   このまま続ける前に、私は、 Team Build のビルドでは e Core* ターゲットのオーバーライドが推奨されていないということを言うべきでしょう 。 この主な理由は、これらのターゲットをオーバーライドした場合、それらの大半が Visual Studio 2010 で大幅に変更されるため、アップグレード後に壊れてしまうことが原因です。 詳細に関しましては、 Buck Hodges   が投稿した 記事 をご覧ください。 良いニュースとしまして、 Visual Studio 2010 では、ユーザーが Team Build v1 で Core* ターゲットをオーバーライドする原因となっていた問題が対応されているため、このようなことをする必要はありません。   こう言った後で、ソリュ―ション特有のメタデータを通じて各ソリュ―ションにカスタム プロパティ値を渡すことのできる、新しい CoreCompile オーバーライドを添付します。 例えば、各ソリュ―ションが異なるキーファイルで書名できるようにする場合、以下のようにすることができます。       < SolutionToBuild Include = ” $(SolutionRoot)foo.sln ” >       < Properties > SignAssembly=true;AssemblyOriginatorKeyFile=C:foo.snk </ Properties >     </ SolutionToBuild >     < SolutionToBuild Include = ” $(SolutionRoot)bar.sln ” >       < Properties > SignAssembly=true;AssemblyOriginatorKeyFile=C:bar.snk </ Properties >     </ SolutionToBuild >   注意: 個々のバイナリを個々のサブ ディレクトリに入れようとしていた私の当初のサンプルは、壊れてしまいました! この点を指摘してくださった Esteban Garcia に感謝したいと思います。 もし、ご迷惑をお掛けした方がいらっしゃいましたら、お詫び申し上げます。。。 バイナリを個々のサブディレクトリに入れたい場合は、以下のような新しい添付コードを試すことができます。       < SolutionToBuild Include = ” $(SolutionRoot)foo.sln ” >       < Subdirectory > foo </ Subdirectory >     </ SolutionToBuild >     < SolutionToBuild Include = ” $(SolutionRoot)bar.sln ” >       < Subdirectory > bar </ Subdirectory >     </ SolutionToBuild >   この修正された CoreCompile ターゲットを使用するには、   添付の CoreCompileOverride.targets ファイルをダウンロードし、 TfsBuild.proj と併せて確認する。(もう 1 つの方法として、このファイルをビルド マシンのどこかにインストールし、手順 2 でインポート ディレクトリを修正することができます。) 以下のように、 TfsBuild.proj ファイルに <import> 命令文を追加する。 < Import Project = ” $(MSBuildProjectDirectory)CoreCompileOverride.targets ” /> SolutionToBuild 項目グループの各項目にカスタム プロパティを追加する。   こちらの情報がお役に立てることを願っています! 添付コードなどに関して問題に直面した場合は、コメントでお知らせください。

Read the original here:
【日本語版】 Team Build でカスタム プロパティを個々のソリュ―ションに渡す

If you liked this post, buy me a Coffee.

Leave a Reply