前回のプロジェクトでは、MSBuild をスクリプト言語として使用しました。(ええ、本当に!) また、C# でより意味のある部分のために、何百ものカスタム MSBuild タスクを作成しました。(MSBuild タスクのボイラープレート コードを生成する MSBuild タスクも作成しました。はい、それ自体を消費しました。)
他の人がこの同じアプローチを取ることはお勧めしませんが、私が非常に役立つと思ったものの 1 つは、組み込みの依存関係管理です。ご想像のとおり、依存関係を表現するのは簡単で、MSBuild に依存関係を満たすように任せることができました。たとえば、ソフトウェアのほぼすべてのステップで、特定のファイル セットを特定の場所にコピーする必要がありました。あなたは簡単に書くことができます:
Step1: CopyFiles
Step2: CopyFiles, Step1
を実行するStep2
と、ファイルが一度だけコピーされます。
依存関係ツリーを構築して満たすことは、ソフトウェアではかなり一般的です。MSBuild チームが依存関係管理コードを取得し、MSBuild から分離して、誰もが使用できる .NET Framework に移動してくれることを願っています。それをむき出しにして、この方法で依存関係を管理するための最良のオプションは何だと思いますか?