Есть ли задача NAnt, которая будет отображать все имена / значения свойств?

Есть ли задача NAnt, которая будет отображать все имена и значения свойств, которые в настоящее время установлены во время сборки? Может быть, что-то эквивалентное задаче Ant echoproperties?


person serg10    schedule 26.09.2008    source источник


Ответы (4)


Попробуйте этот фрагмент:

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

Вы можете просто сохранить и запустить с помощью nant.

И нет, у вас уже нет задачи или функции, чтобы сделать это за вас.

person craigb    schedule 26.09.2008
comment
Все еще помогает через десять лет! - person Arghya C; 11.04.2018

Я хотел, чтобы они были отсортированы, поэтому я расширил другой ответ. Это не очень эффективно, но работает:

<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>
person Brad C    schedule 07.12.2012

Я пробовал решения, предложенные Брэдом Си, но они у меня не работали (работала под управлением Windows 7 Profession на x64 с NAnt 0.92). Однако это работает для моей локальной конфигурации:

<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>
person Ben Corpus    schedule 27.11.2013

Вы не можете доказать отрицательный результат, но я не могу его найти и не видел. Я традиционно накручиваю собственные эхо собственности.

person John Rudy    schedule 26.09.2008