Frage

Gibt es eine NAnt Aufgabe, die alle Eigenschaftsnamen und Werte Echo aus, die derzeit während eines Build gesetzt werden? Etwas entspricht dem Ant echoproperties Aufgabe vielleicht?

War es hilfreich?

Lösung

Versuchen Sie, diese Schnipsel:

<project>
    <property name="foo" value="bar"/>
    <property name="fiz" value="buz"/>

    <script language="C#" prefix="util" >
        <code>
            <![CDATA[
            public static void ScriptMain(Project project) 
            {
                foreach (DictionaryEntry entry in project.Properties)
                {
                    Console.WriteLine("{0}={1}", entry.Key, entry.Value);
                }
            }
            ]]>
        </code>
    </script>
</project>

Sie können nur mit Nant speichern und ausführen.

Und nein, es ist keine Aufgabe oder Funktion dies bereits für Sie tun.

Andere Tipps

Ich wollte, dass sie sortiert, so erweiterte ich auf der anderen Antwort. Es ist nicht sehr effizient, aber es funktioniert:

<script language="C#" prefix="util" >
    <references>
        <include name="System.dll" />
    </references>       
    <imports>
        <import namespace="System.Collections.Generic" />
    </imports>      
    <code>
        <![CDATA[
        public static void ScriptMain(Project project) 
        {
            SortedDictionary<string, string> sorted = new SortedDictionary<string, string>();
            foreach (DictionaryEntry entry in project.Properties){
                sorted.Add((string)entry.Key, (string)entry.Value);
            }
            foreach (KeyValuePair<string, string> entry in sorted)
            {
                project.Log(Level.Info, "{0}={1}", entry.Key, entry.Value);
            }
        }
        ]]>
    </code>
</script>

Sie können keine negativen beweisen, aber ich kann man nicht finden und habe ihn nicht gesehen. Ich habe meine eigene Eigenschaft Echos traditionell gerollt.

Ich habe versucht, die von Brad C vorgeschlagenen Lösungen, aber sie haben nicht für mich (mit NAnt 0,92 auf x64 Windows 7 Beruf) zu arbeiten. Dies funktioniert jedoch für meine lokale Konfiguration:

<target name="echo-properties" verbose="false" description="Echo property values" inheritall="true">
<script language="C#">
    <code>
    <![CDATA[
        public static void ScriptMain(Project project)
        {
        System.Collections.SortedList sortedByKey = new System.Collections.SortedList();
        foreach(DictionaryEntry de in project.Properties)
        {
            sortedByKey.Add(de.Key, de.Value);
        }

        NAnt.Core.Tasks.EchoTask echo = new NAnt.Core.Tasks.EchoTask();
        echo.Project = project;

        foreach(DictionaryEntry de in sortedByKey)
        {
            if(de.Key.ToString().StartsWith("nant."))
            {
                continue;
            }
            echo.Message = String.Format("{0}: {1}", de.Key,de.Value);
            echo.Execute();
        }
        }
    ]]>
    </code>
</script>
</target>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top