6

テスト用のカスタムNAntタスクがあり、タスクが失敗した場合はNAntビルドプロセスをキャンセルしたいと思います。カスタムErrorTaskを作成しました:

[NAnt.Core.Attributes.TaskName("errorTask")]
public class ErrorTask : NAnt.Core.Task
{
    public ErrorTask()
    {
        FailOnError = true;
    }

    protected override void ExecuteTask()
    {
        Log(NAnt.Core.Level.Error, "Error!");
    }
}

これが私がNAntビルドファイルに持っているものです:

<target name="errorTarget"> 
    <errorTask failonerror="true" />
    <errorTask failonerror="true" />
</target>

結果(build.log)には次のものがあります。

errorTarget:
[errorTask] Error!
[errorTask] Error!
BUILD SUCCEEDED - 2 non-fatal error(s), 0 warning(s)
Total time: 0 seconds.

したがって、2番目のタスクも実行されていることがわかりますが、最初の呼び出しで「エラー!」が返されるため、キャンセルしたいと思います。修正を手伝ってもらえますか?

また、FailOnError値をハードコーディングする必要はなく、ビルドスクリプトでfailonerror属性を使用するだけで十分であると思いますが、どのような場合でも機能しません。

ありがとうございました。

4

1 に答える 1

8

ExecuteTask関数から例外バブルを発生させる必要があります。ログステートメントの後に、次の行を追加します。

throw new BuildException("Something terrible has happened!");
于 2010-10-20T19:06:12.597 に答える