2012-02-02 12 views
5

¿Cuál es la forma preferida de "pasar" constantes de preprocesador a bloques predefinidos en CC.NET?Transmisión de constantes a bloques predefinidos con el preprocesador CruiseControl.NET

Suponiendo Tengo las siguientes declaraciones:

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

puedo pasar la ProjectName constante de dos maneras:

  1. Usando cb: alcance

    <cb:scope ProjectName="FooProject" > 
        <cb:ProjectBlock /> 
    </cb:scope> 
    
  2. Pases directamente en la declaración

    <cb:ProjectBlock ProjectName="FooProject" /> 
    

Ambos trabajaron adecuadamente e interior ProjectHeaderBlock se ha inicializado correctamente con Nombre del Proyecto valor.

¿Hay alguna diferencia entre estas dos opciones? ¿Cuál es mejor/más eficiente?

Respuesta

4

Tienes razón: Ambos funcionan. La única diferencia funcional que conozco es que los contadores del preprocesador definidos en los elementos scope son sobrescribibles, es decir, pueden redefinirse posteriormente.

Utilizo scope constantes de preprocesador definidas para establecer valores predeterminados que sobreescribo si es necesario.

Personalmente, prefiero la segunda versión ya que evita anidar en su xml.

+0

Gracias, es bueno saber sobre este bevahiour sobrescribir –

Cuestiones relacionadas