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

NAnt は、囲んでいるタスク (この場合は「スクリプト」) が実行されるときに、この C# スクリプトを 1 回だけコンパイルします。コンパイルされると、結果のタスク (TestTask) はコンパイルされた CLR コードであり、他のアセンブリの場合と同じです。

これは、GenerateInMemory=true で CodeDom 経由でコンパイルされます。

于 2010-03-02T09:14:45.877 に答える
1

スニペットには I/O が含まれておらず、ビルドスクリプトがそのタイルを毎秒何度も変更しない限り、これが測定可能になると信じる理由はありません。

于 2010-03-02T08:53:13.593 に答える