4

MSBuild プロジェクト ファイルを介して呼び出されているカスタム (インラインまたは非インライン) タスク内から他の MSBuild タスク (CL、Link、Delete、MakeDir など) を呼び出すことは可能ですか? 何かのようなもの:

<!-- In MSBuild File -->
<MyStrangeTask />

そして、「MyStrangeTask」を実装するC#コードで

// After declaring class, properties, etc.
public override bool Execute()
{
    // Call other MSBuild Tasks here: CL, Link, MakeDir, etc.
}

はい、一部のタスク (削除、MakeDir など) の機能を複製することは可能かもしれませんが、なぜ車輪を再発明するのでしょうか? また、CL やリンクなどのタスクを再実装するには時間がかかります。

なぜこれが必要なのですか?

私は、基本的にファイルのコピー、CL プリプロセッサの呼び出しなどを行う必要があるカスタム タスクを作成しています。このような「巨大な」タスクの設計そのものに疑問を抱く人もいるかもしれませんが、いくつかの要件により、この「退屈な」パスをたどらざるを得なくなるとだけ言っておきましょう。


編集: この質問の正しい文脈を強調する

この質問は設計ではなく、技術的な観点からのものです。

この分野の初心者であるため、これが技術的に可能かどうかを知りたいだけです。はいの場合、どのように?そうでない場合、なぜですか?

4

1 に答える 1

4

まず、MSDNで MSBuild タスクに使用されるクラスを見つけることができます。ただし、明示的に書かれていることに注意してください。

この API は .NET Framework インフラストラクチャをサポートしており、コードから直接使用するためのものではありません

また、このブログ投稿でそのような使用例を見つけることができます。

それはあなたが尋ねたことへの答えですが、必要な別の解決策があるかもしれません: タスクを多くのサブタスクに分割できます: 最初のカスタム タスクからの出力は、組み込みタスクで使用できる MSBuild プロジェクトに送信され、 2 番目のカスタム タスクに送信される組み込みタスクの出力など。

于 2013-10-02T10:45:04.077 に答える