Question

Existe-t-il une tâche NAnt qui répercute sur tous les noms de propriétés et valeurs actuellement définis lors de la construction? Quelque chose d’équivalent à la echoproperties tâche Ant peut-être?

Était-ce utile?

La solution

Essayez cet extrait:

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

Vous pouvez simplement enregistrer et exécuter avec nant.

Et non, il n'y a pas encore de tâche ou de fonction pour le faire pour vous.

Autres conseils

Je voulais qu'ils soient triés alors j'ai développé l'autre réponse. Ce n'est pas très efficace, mais ça marche:

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

Vous ne pouvez pas prouver un négatif, mais je ne parviens pas à en trouver un et je n'en ai pas vu. J'ai traditionnellement roulé mes propres échos de propriétés.

J'ai essayé les solutions suggérées par Brad C, mais elles ne m'ont pas fonctionné (sous Windows 7 Profession sous x64 avec NAnt 0.92). Cependant, cela fonctionne pour ma configuration locale:

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top