2010-03-02 26 views
1

我的C#代码段运行,并与我想要的任何消息,这也是本更新控制台窗口的标题(和运行完美的罚款)我的恶性构建脚本中:在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> 

我的问题,虽然是,调用这个C#代码不会对整个构建脚本的总运行时间产生负面影响。

我试图通过在没有这个C#代码的情况下运行它来测试这一点,并且存在边缘差异,但是在我去之前我想要一个更正式的答案,并将其部署到我的脚本中以实现真正的差异,建造内部开发的潜在巨大系统的时间。

编辑:我的担心更多的是需要时间解析/编译/执行C#代码。

回答

1

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

它通过CodeDom编译,GenerateInMemory = true。

+0

宾果 - 谢谢! – 2010-03-02 09:16:22

1

该片段不包含任何I/O,除非您的buildscript每秒钟会多次更改该片段,否则没有理由相信这甚至可以衡量。

+0

我想在运行脚本的过程中,标题会在各个点上发生变化,因为这会给用户一个视觉指示,因为脚本如此快速地传递,很难确定我们在这个过程中的位置 - 所以,我希望它*不会每秒更改几次...... – 2010-03-02 09:05:55

相关问题