2009-06-09 16 views
17

Qualcuno sa come emettere un messaggio usando echo con un nuovo carattere di riga, nel mondo delle formiche ho usato $ {line.seperator}, ma non vedo alcuna proprietà correlata in Nant, né una qualsiasi delle funzioni fornite queste informazioni. Ho anche provato il carattere di escape \ n ma è stato stampato così com'è. Un examaple è al di sottoecho messaggio con nuova riga in nant

<echo message="spool \n off \n quit" file="${scripts.list}" append="true"/> 

risposta

20

Non so Nant, ma l'entità XML per nuova linea è di solito &#xa;

+0

Grazie, sono stato in grado di farlo, dopo la sostituzione, non ha ottenuto l'idea di utilizzarlo anche pensato lo sapevo, tuttavia mi piacerebbe aspettare per vedere se qualcuno ha delle risposte specifiche per Nant –

+1

Funziona! Sorpreso non c'è un metodo più chiaro .. – Thiru

+3

è quello che ottieni per la programmazione in XML! –

1

si può semplicemente utilizzare nuove righe nel xml:

<echo message="Line1 
Line2"/> 
+0

Risposta più semplice :-) – MrBlueSky

+0

questo non ha funzionato. – Abhilash

11

a Nant 0.90, ho usato la funzione environment :: newline() per inserire newline dove volevo. Ma dal momento che è un po 'ingombrante usare $ {environment :: newline()}, l'ho assegnato a un nome di proprietà abbreviato che potrei usare nel mio script.

Purtroppo per gli utenti 0.86, l'ambiente :: funzione di ritorno a capo() non è stato aggiunto fino a 0.90-alfa1.

5

Sarà più comodo se si utilizza l'eco come illustrato di seguito:

<echo append="true" file="${scripts.list}"> 
spool 
off 
quit 
</echo> 

Nant manterrà newlines fuori dalla scatola :)

+0

È necessario correggere "/" dopo l'attributo file su "" " – Erhhung

5

Usa ${environment::newline()}

All'inizio echo utilizzati per aggiungere un newline di default su append che è stato corretto nell'ultima versione. Quindi, ora questa funzione è stata introdotta in modo da poter ottenere la variabile di ambiente per newline e generare il registro come formattato a piacere.

Ho dovuto passare attraverso le note di rilascio per trovarlo, quindi ho pensato che potrebbe salvare qualcun altro qualche sforzo per avere una risposta qui.

0

Forse anche fatto un errore, perché nel tuo post che hai scritto line.seperator invece di line.separator

0

Se si modifica lo script NAnt in Visual Studio e, come per l'auto-formato (Ctrl-E D) il documento XML, vedrai che se utilizzi il modulo <echo> message </echo> per generare più righe, Visual Studio applicherà automaticamente il rientro del testo. Per evitare questo, è necessario utilizzare una sezione CDATA XML, in questo modo:

<echo file="${file}" 
     append="true"> 
    <![CDATA[ 
cmd1 "${arg1}" 
cmd2 "${arg2}" 
]]> 
    </echo> 

Ciò sopravvivere al processo di auto-formato. Finirai comunque con una nuova riga iniziale, a meno che non inizi il tuo testo subito dopo il tag <![CDATA[ su quella linea.

0

Nel mio caso:

header('Content-Type: application/xml;');  
header('Content-Disposition: attachment; filename="strings.xml"'); 

//for example 
echo '<?xml version="1.0" encoding="utf-8"?>';   
echo '<!-- ********************** -->';   

genera <?xml version="1.0" encoding="utf-8"?><!-- ********************** -->


Con &#xa;:

header('Content-Type: application/xml;');  
header('Content-Disposition: attachment; filename="strings.xml"'); 

//for example 
echo '<?xml version="1.0" encoding="utf-8"?>&#xa;';   
echo '<!-- ********************** -->'; 

genera <?xml version="1.0" encoding="utf-8"?>&#xa;<!-- ********************** -->


semplicemente con il comando immettere funziona:

header('Content-Type: application/xml;');  
    header('Content-Disposition: attachment; filename="strings.xml"'); 

    //for example 
    echo '<?xml version="1.0" encoding="utf-8"?> 
';   
    echo '<!-- ********************** -->'; 

genera

<?xml version="1.0" encoding="utf-8"?> <!-- ********************** -->