2011-01-29 25 views
6

NAntビルドスクリプト内から、コマンドラインで指定されたターゲットの名前を見つけようとしています。指定された)。NAnt:コマンドラインで指定されたターゲット名を取得する方法

私はhttp://nant.sourceforge.net/release/0.85-rc1/help/functions/index.html#NAntのドキュメントを確認していますが、何も見つかりませんでした。私が見つけることができるわずかに関連した関数は、target :: get-current-targetです。コマンドラインで指定されたターゲットではなく、私が現在持っているターゲットの名前を返します。

この情報にアクセスする方法があれば誰でも知っていますか? NAntContribでも何も見つかりませんでした。どこかにいなければならないようだ。

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

+0

何が必要ですか? – AlG

答えて

1

あなたができることの1つは、あなたの名前を維持するプロパティを定義することです。定義する各ターゲットに対して、そのプロパティに値が設定されているかどうかを確認し、空の場合は現在のターゲットの名前に設定します。

1

ちょうど同様のタスクが発生しました。私はこの方法で解決しました、少し助けてくれることを願っています。

<script language="C#"><code><![CDATA[ 
    public static void ScriptMain(Project project) 
    { 
     project.Properties["command-line-targets"] = string.Empty; 
     StringBuilder sb = new StringBuilder(); 
     string[] args = Environment.GetCommandLineArgs(); 
     for (int i = 1; i < args.Length; ++i) 
     { string arg = args[i]; 
      if (! arg.StartsWith("-")) 
      { 
       project.Log(Level.Info, " Command line target: " + arg); 
       sb.Append(" ").Append(arg); 
      } 
     } 
     if (sb.Length >= 1) 
     { 
      project.Properties["command-line-targets"] = sb.ToString(1, sb.Length - 1); 
     } 
    } 
]]></code></script> 
<echo message="Command line targets: ${command-line-targets}" /> 

このコードでは、デフォルトのターゲットは表示されません。

2

ターゲットがコマンドラインで指定されたかどうかを確認する簡単な関数です。 myFunctions :: isTargetOnCommandLine( 'foo')にターゲットの名前を置き換えて呼び出してください。

<script language="C#" prefix="myFunctions" > 
    <code> 
    <![CDATA[ 
     [Function("isTargetOnCommandLine")] 
    public static bool isTargetOnCommandLine(string target) { 
    return (Array.IndexOf(Environment.GetCommandLineArgs(), target) != -1); 
    } 
    ]]> 
    </code> 
</script> 
関連する問題