2009-06-09 8 views
17

Kann jemand eine Nachricht mit echo mit einem neuen Zeilenzeichen ausgeben, in der Ameisenwelt benutzte ich $ {line.seperator}, aber ich sehe keine verwandte Eigenschaft in Nant, noch Jede der Funktionen lieferte diese Info. Ich habe auch das Escape-Zeichen ausprobiert, aber das wurde so gedruckt, wie es ist. Ein examaple unterecho Nachricht mit neuer Zeile in nant

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

Antwort

20

Ich weiß nicht, Nant, aber die XML-Einheit für Newline ist in der Regel &#xa;

+0

Dank erzeugt, ich konnte es nach dem Wechsel bekommen, nicht auf die Idee kommen kam es sogar zu verwenden, dachte Ich wusste es, aber ich würde gerne warten, um zu sehen, ob jemand irgendwelche Antworten speziell für Nant hat –

+1

Es funktioniert! Überrascht gibt es keine klarere Methode. – Thiru

+3

das bekommst du für die Programmierung in XML! –

1

Sie nur Zeilenumbrüche in der XML verwenden können:

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

Einfachste Antwort :-) – MrBlueSky

+0

das hat nicht funktioniert. – Abhilash

11

Nant 0.90, ich habe die Funktion environment :: newline() benutzt, um neue Zeilen einzufügen, wo ich sie haben wollte. Da es jedoch etwas unhandlich ist, $ {environment :: newline()} zu verwenden, habe ich es einem verkürzten Eigenschaftsnamen zugewiesen, den ich in meinem Skript verwenden kann.

Leider für 0,86 Anwender, die Umwelt :: Newline() Funktion wurde hinzugefügt, bis 0,90-alpha1.

5

Es wird mehr convienient sein, wenn Sie Echo verwenden, wie unten dargestellt:

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

Nant wird beibehalten Zeilenumbrüche aus dem Kasten heraus :)

+0

Sie sollten das '/' nach dem Dateiattribut auf '' 'fixieren – Erhhung

5

Verwenden ${environment::newline()}

Früher Echo verwendet, um ein hinzufügen Newline standardmäßig auf append, die in der letzten Version behoben wurde. Also, jetzt ist diese Funktion eingeführt worden, so dass Sie die Umgebungsvariable für newline erhalten und Protokoll so formatiert haben können, wie Sie möchten.

Ich musste die Versionshinweise durchgehen, um es zu finden, also dachte ich, es könnte jemand anderem etwas Mühe ersparen, es hier beantwortet zu bekommen.

0

Vielleicht hat man auch einen Fehler, denn in Ihrem Beitrag, den Sie line.seperator statt line.separator schrieb

0

Wenn Sie Ihr NAnt Skript in Visual Studio und wie zu auto-Format (Ctrl-E D) Ihr XML-Dokument bearbeiten, Wenn Sie das Formular <echo> message </echo> verwenden, um mehrere Zeilen auszugeben, wird Visual Studio Ihren Text automatisch einrücken. Um dies zu verhindern, müssen Sie eine XML-CDATA-Abschnitt verwenden, wie folgt aus:

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

Dies wird die Auto-Format Prozess überleben. Sie werden immer noch mit einem führenden Zeilenumbruch enden, wenn Sie nicht direkt nach dem Tag <![CDATA[ in dieser Zeile Ihren Text beginnen.

0

In meinem Fall:

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

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

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


Mit &#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 '<!-- ********************** -->'; 

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


einfach mit der Eingabe-Befehl funktioniert es:

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

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

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