2012-02-02 15 views
5

プリプロセッサ定数をCC.NETの定義済みブロックに "渡す"方法は何ですか?私は二つの方法でプロジェクト名定数を渡すことができCruiseControl.NETプリプロセッサで事前定義されたブロックに定数を渡す

<cb:define name="ProjectHeaderBlock"> 
    <name>$(ProjectName)</name> 
    <workingDirectory>C:\MyProjects\$(ProjectName)</workingDirectory> 
</cb:define> 

<cb:define name="ProjectBlock"> 
    <project> 
     <cb:ProjectHeaderBlock /> 

     <triggers /> 
     <tasks /> 
     <publishers /> 
    </project> 
</cb:define> 

私は次の宣言を持っていると仮定すると

  1. CBを使用する:スコープ

    <cb:scope ProjectName="FooProject" > 
        <cb:ProjectBlock /> 
    </cb:scope> 
    
  2. 受渡し直接宣言で

    <cb:ProjectBlock ProjectName="FooProject" /> 
    
は、彼らの両方が適切に働いていたと内側 ProjectHeaderBlockは、適切 プロジェクト名値で初期化されました。

これらの2つのオプションには違いがありますか?どちらが優れているか、より効率的ですか?

答えて

4

あなたはそうです:彼らは両方とも機能します。私が知っている唯一の機能的な違いは、scope要素に定義されているプリプロセッサの内容が上書き可能であることです。つまり、後で再定義することができます。

私は、必要に応じて上書きするデフォルト値を設定するために、プリプロセッサ定数を定義しました。scopeを使用しました。

個人的には、xmlでのネストを避けるため、2番目のバージョンが好きです。

+0

ありがとう、この上書きbevahiourについて知っておきたい –

関連する問題