在nant构建脚本中调用C#代码 - 时间影响?

时间:2010-03-02 08:36:34

标签: c# nant build-script

我的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#代码需要时间。

2 个答案:

答案 0 :(得分:1)

该代码段不包含I / O,除非您的构建文件每秒多次更改该图块,否则没有理由相信这甚至可以衡量。

答案 1 :(得分:1)

当执行封闭任务时,NAnt将完全编译一次该C#脚本,在本例中为“脚本”。编译后,生成的任务(TestTask)是编译的CLR代码,与任何其他程序集中的任务没有区别。

它通过CodeDom进行编译,GenerateInMemory = true。