4

是否可以从通过 MSBuild 项目文件调用的自定义(内联或非内联)任务中调用其他 MSBuild 任务(CL、链接、删除、MakeDir 等)?就像是:

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

在 C# 代码中实现“MyStrangeTask”

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

是的,有可能复制某些任务的功能(删除、MakeDir 等),但为什么要重新发明轮子呢?此外,像 CL 和 Link 这样的任务重新实现会很耗时。

为什么我需要这个?

我正在编写一个自定义任务,它基本上需要复制文件、调用 CL 预处理器等。人们可能会质疑这样一个“巨大”任务的设计,但我们只是说一些要求迫使我们走这条“乏味”的道路。


编辑: 强调这个问题的正确背景

这个问题不是来自设计,而是来自技术的角度

作为该领域的新手,我只想知道这在技术上是否可行?如果是,如何?如果不是,为什么不呢?

4

1 回答 1

4

首先,您可以在MSDN找到用于 MSBuild 任务的类。但是你应该注意它是明确写的:

此 API 支持 .NET Framework 基础结构,不打算直接从您的代码中使用

您还可以在此博客文章中找到此类用法的示例。

这就是您所问问题的答案,但也许您需要不同的解决方案:您可以将任务分解为许多子任务:第一个自定义任务的输出被发送到 MSBuild 项目,内置任务和将内置任务的输出发送到您的第二个自定义任务中,依此类推。

于 2013-10-02T10:45:04.077 回答