2012-02-02 9 views
5

Jaki jest preferowany sposób "przekazywania" stałych preprocesorów do predefiniowanych bloków w CC.NET?Przekazywanie stałych do predefiniowanych bloków za pomocą preprocesora CruiseControl.NET

Zakładając, że ma następujące zgłoszenia:

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

można przekazać Nazwa_projektu stałej na dwa sposoby:

  1. Stosując CB: zakres

    <cb:scope ProjectName="FooProject" > 
        <cb:ProjectBlock /> 
    </cb:scope> 
    
  2. Passing bezpośrednio w deklaracji

    <cb:ProjectBlock ProjectName="FooProject" /> 
    

Obie pracowała prawidłowo, a wewnętrzna ProjectHeaderBlock inicjowano z odpowiednim Nazwa_projektu wartości.

Czy są jakieś różnice między tymi dwiema opcjami? Który z nich jest lepszy/bardziej wydajny?

Odpowiedz

4

Masz rację: działają zarówno. Jedyną różnicą funkcjonalną, o której mi wiadomo, jest to, że elementy preprocesora zdefiniowane w elementach scope są nadpisywalne, tj. Mogą zostać ponownie zdefiniowane później.

Używam zdefiniowanych stałych preprocesorów scope do ustawiania wartości domyślnych, które w razie potrzeby zostaną nadpisane.

Osobiście wolę drugą wersję, ponieważ pozwala uniknąć zagnieżdżenia w twoim xml.

+0

Dzięki, dobrze wiedzieć o tym nadpisaniu bevahiour –

Powiązane problemy