gpt4 book ai didi

nant - 编写能够使用过滤器的自定义 NAnt 任务

转载 作者:行者123 更新时间:2023-12-05 01:23:38 26 4
gpt4 key购买 nike

我正在尝试编写一个自定义 NAnt 任务来执行一些基于文件的操作。其中一项非常有用的功能是运行 <expandproperties> 的能力。过滤其中一个输入文件。

为了保持任务的通用性,我只想启用对 <filterchain> 的支持元素(类似于 <copy> 任务的工作方式)。

我一直在使用 <copy> 的源代码任务来指导我,但是在编写任务时我不断遇到内部方法。我知道我可以使用反射来打破封装,但我不愿意这样做。

有没有人知道任何有用的文章,或者有这方面的经验?

最佳答案

我开始着手创建一个采用 TextReader 的私有(private) Filter 子类(基本上是在 NAnt 源代码中重新创建 PhysicalTextReader)。但是我意识到,实际上,有一种更简单的方法可以通过过滤器链读取文件:

[TaskName("mytask")]
public class MyTask : Task
{
/// <summary>
/// Chain of filters used to alter the input file's content as it is read.
/// </summary>
[BuildElement("filterchain")]
public FilterChain Filters { get; set; }

/// <summary>
/// The input file.
/// </summary>
[TaskAttribute("input")]
public FileInfo InputFile { get; set; }

protected override void ExecuteTask()
{
Log(FileUtils.ReadFile(InputFile.FullName, Filters, null));
}
}

然后你就可以像你期望的那样使用它了:

<mytask input="foo.txt">
<filterchain>
<expandproperties />
</filterchain>
</mytask>

关于nant - 编写能够使用过滤器的自定义 NAnt 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12914477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com