我的nant构建脚本中有一段C#代码,它运行并使用我想要的任何消息更新控制台窗口的标题,这就是这个(并且运行得非常好):
<script language="C#" >
<code unless="${string::ends-with(build.script.debug, 'off')}">
[TaskName("consoletask")]
public class TestTask : Task
{
private string title;
[TaskAttribute("title", Required=true)]
public string Title
{
get { return title; }
set { title = value; }
}
protected override void ExecuteTask() {
System.Console.Title = title;
}
}
</code>
</script>
我的问题是,从nant调用此C#代码会对整个构建脚本的总运行时间产生任何负面的时间影响。
我试图通过使用和不使用这个C#代码来运行它来测试这个并且存在边际差异,但是在我将其部署到我的脚本中之前我想要一个更正式的答案,并对构建产生巨大的影响在内部开发的潜在巨大系统的时代。
编辑:我担心解析/编译/执行C#代码需要时间。
答案 0 :(得分:1)
该代码段不包含I / O,除非您的构建文件每秒多次更改该图块,否则没有理由相信这甚至可以衡量。
答案 1 :(得分:1)
当执行封闭任务时,NAnt将完全编译一次该C#脚本,在本例中为“脚本”。编译后,生成的任务(TestTask)是编译的CLR代码,与任何其他程序集中的任务没有区别。
它通过CodeDom进行编译,GenerateInMemory = true。