1

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

4

2 回答 2

1

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

于 2010-03-02T08:53:13.593 回答
1

执行封闭任务时,NAnt 将只编译此 C# 脚本一次,在本例中为“脚本”。编译后,生成的任务 (TestTask) 是编译后的 CLR 代码,与任何其他程序集中的代码没有什么不同。

它通过 CodeDom 编译,GenerateInMemory=true。

于 2010-03-02T09:14:45.877 回答