Вызов кода C # внутри скрипта сборки nant - влияние времени? - PullRequest
1 голос
/ 02 марта 2010

У меня есть фрагмент кода на C # в моем скрипте nant build, который запускается и обновляет заголовок окна консоли любым сообщением, которое я хочу, а именно (и работает отлично):

    <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 # из nant какое-либо негативное влияние на общее время выполнения всего сценария сборки.

Я попытался протестировать это сам, запустив его с и без кода C #, и есть небольшая разница, но я хотел получить более официальный ответ, прежде чем приступить к его развертыванию в своих сценариях и реально изменить сборку времена потенциально огромных систем, разработанных собственными силами.

edit: Меня больше беспокоит то, что есть время, необходимое для разбора / компиляции / выполнения кода C #.

Ответы [ 2 ]

1 голос
/ 02 марта 2010

NAnt скомпилирует этот сценарий C # ровно один раз при выполнении задачи, которая в данном случае является «сценарием». После компиляции полученная задача (TestTask) представляет собой скомпилированный код CLR, ничем не отличающийся от кода в любой другой сборке.

Компилируется через CodeDom с GenerateInMemory = true.

1 голос
/ 02 марта 2010

Фрагмент не содержит операций ввода-вывода, и если ваш сборочный скрипт не будет изменять этот тайл много раз в секунду, нет никаких оснований полагать, что это даже измеримо.

...