12

初めてMSBuildカスタムスクリプトを作成し始めました。機能を拡張するための標準オプションは、MSBuild Extention PackMSBuild Community Tasksの2つです。MSBuildエクステンションパックとMSBuildコミュニティタスク

私はこれらの違いが何であるか、そしてなぜ他のものを使用するのか、あるいはその両方を使用するのかについてのガイダンスを探しています。私はビングでグーグルをしましたが、木の木は見えません。どんな指導も高く評価

+3

「私はビングでグーグルである」という素晴らしい表現にコメントしてください:) – Magnus

答えて

8

私はちょうど2セントの価値があります。いくつかの事柄 - まず第一に、私はそれらを「標準」オプションと呼んでいません。 MSBuild 4.0より前のバージョンと、インラインのタスクとプロパティの機能、およびその中の多くのタスクは、かなり古くなっています。私はMSBuildの何千もの行を書いたことがあり、これらのライブラリのいずれかからのタスクを2回しか必要としませんでした。

彼らにとって素晴らしいのは、かなりモジュラーであるということです。必要なアセンブリファイルとターゲットファイルのみを選択して選択し、コードベースにチェックインすることができます。私は時々同じビルドの中で、あるライブラリからタスクを選択し、もう一方のタスクからチェリーを選択しました。私はいつも、MSBuild 4.0の単純な機能をライブラリの中のものよりも使いたいと思っています。私は図書館の仕事のいくつかに関心を持っていましたが、行動はまったく必要なものではありませんでしたので、私は自分自身を盛り上げました(ジップの仕事はこのことを考えています。ソースフォルダとは相関しませんでした)。単一のカスタムタスクを作成しなければならないと、同じアセンブリ内の別のものと別のものをすべてロールバックするのが本当に簡単になります。

最終的には、図書館の特定のタスクに必要な非常に具体的なものであり、必要なものを使い、それ以外は何でも構いません。

+0

スパイダーM9 - あなたのご意見とフィードバックに感謝します。 MSBuild 4にはこれまでにもいくつかの利点があります。しかし、MSBuildにはない2つのリストされたタスク拡張パックの機能がたくさんあるようです.Zip、IIS操作、SCMの統合などです。これらをロールするのは本当にたくさんの仕事でしょう。あなたが言っていることは、私は両方から必要なものだけを選ぶことができるということです。 – James

+0

これは良い点です。私の質問に答えると、これをフラグすることができてうれしいです。しかし、私はこれらのエクステンションパックを両方使って自分の経験についてのフィードバックを与えてくれた人が好きで、好みの人がいれば、もう数日間は出かけるつもりです。 – James

+2

はい、最終的には、プロジェクトに必要な特定のタスクになります。そのために、私の経験では、自分が必要とするタスクを自分のライブラリに収めたり、自分のロールにすることがベストな方法です。 –

1

私は現在私の仕事でMSBuildコミュニティタスクを使用しています。私は他の拡張機能と連絡をとっていませんでしたが、私はこのライブラリ上でいくつかのことを話すことができます。
長所:

  • 簡単にインストールする(MSIインストーラ)
  • 変更するのは簡単。ソースは利用可能で、BSDライセンスを持っているので、自由に変更できます。基本的には、タスクと同じ名前の.csファイルに移動し、変更し、.slnファイルを開き、ソリューションをビルドするだけです。次に出力をC:\ Program Files \ MSBuild \ MsbuildTasks \
  • に貼り付けます。
  • msbuild以外のコードに書きたくない場合は、いくつかの拡張機能が本当に便利です。ジッピングは素晴らしいですし、ファイルに対するRegEx操作も便利です。
    • 私は他の試していないが、私は、ファイルの属性を変更し、IISのディレクトリを作成し、(世界的に見られることのdllのをインストールする)ます。gacutilのようないくつかの興味深いタスクがあります見てきました...
    • そして、はい、あなたが行うことができますこれらすべてのタスクはMSBuildで行いますが、多くの "Exec"コマンドを使用するか、プロパティでC#関数を使用する必要があります。

短所:有用な文書の

  • 不足(多分私は十分に探していませんでしたが、私が見つけた唯一の助けは、ソースをダウンロードして、発見。あなたの仕事のためのcsファイルとそれを分析する)
    • 私を最も邪魔したことは、プロジェクトウェブサイト上のタスクの属性のリストがないことです。あなたはフォーラムでgoogleする必要があります、またはコードに行ってください。
  • 私が得た唯一の問題は、RegexReplaceがUTF-8でファイルを保存することです。
    私の同僚は、ANSIでエンコードされた何千ものSQLスクリプトを書いていました。私はその中のものを置き換えてSQLCMDに渡したとき、すべてのUTF-8ファイルの末尾に追加された1つの記号(ある種の符号化記号)のためにファイルを解析できませんでした。私はRegexReplace.csに行き、関数の1つでエンコーディングパラメータを変更し、コンパイルする必要がありました。だから基本的に私は私のフォークを作成する必要があった:
    (作業の2分、どのように人々を説明する1時間)
    しかし、MSBuildでUTF-8ファイルを解析することに問題はなかったので、外部ツールを使用してファイルを処理する場合

概要:
これは、簡単にインストールして使用、便利なツールですが、それを理解するために、コードが多く、明確容易にするために助けることができ、それはいくつかの時間を節約することができます。私は最大の問題はドキュメントだと思うが、タスクとライブラリの名前をgoogleに書いて、フォーラム、ブログ、そしてここでコードを見つけることができる。

+0

感謝のダミアン - それは良い情報です – James

1

2セント - 私は、バニラのWindowsマシン(TFSとVS.NETがインストールされていない)で実行されるプロジェクトのビルドスクリプトをすばやく作成しなければならない状況にあった。ビルドスクリプトは、次の操作を行うことになっていた - ユニットが

  • 実行FxCopの、StyleCop、CodeMetrics
  • をテスト実行
  • TFS
  • から

    1. のGetソースがプロジェクトをビルドする
    2. コードのドキュメントを作成します。最後に、電子メールの結果

    私はMSBuild 4.0、私は上記のツールを実行し、電子メールを送信する簡単な方法が欲しかったので。私はMSBuild Community TasksとMSBuild Extensionパックの両方を調べました。私は拡張パックが洗練された健全なパッケージだと読んだが、まだ試してみたが、他のものと比べてコードを使用したり拡張したりするためにコミュニティパックを使い終わった。 。拡張パックは、私の意見では、あなたがそれを扱う方法を理解する時間がある場合にのみ、オプションです。