2012-02-02 15 views
5

Qual è il modo preferito di "passare" le costanti del preprocessore ai blocchi predefiniti in CC.NET?Passaggio di costanti a blocchi predefiniti con il preprocessore CruiseControl.NET

Supponendo Ho le seguenti dichiarazioni:

<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> 

posso passare la ProjectName costante in due modi:

  1. Uso cb: portata

    <cb:scope ProjectName="FooProject" > 
        <cb:ProjectBlock /> 
    </cb:scope> 
    
  2. Passaggio direttamente nella dichiarazione

    <cb:ProjectBlock ProjectName="FooProject" /> 
    

entrambi lavoravano correttamente e interna ProjectHeaderBlock è stata inizializzata con una corretta ProjectName valore.

Ci sono differenze tra queste due opzioni? Quale è migliore/più efficiente?

risposta

4

Hai ragione: lavorano entrambi. L'unica differenza funzionale di cui sono a conoscenza è che i contendenti del preprocessore definiti negli elementi scope sono sovrascrivibili, vale a dire che potrebbero essere ridefiniti in un secondo momento.

Io uso scope costanti di preprocessore definite per l'impostazione di valori predefiniti che sovrascrivo se necessario.

Personalmente preferisco la seconda versione in quanto evita l'annidamento nel tuo xml.

+0

Grazie, buona notizia di questa sovrascrittura bevahiour –

Problemi correlati