سؤال

هل هناك مهمة NAnt من شأنها أن تردد جميع أسماء الخصائص والقيم التي تم تعيينها حاليًا أثناء الإنشاء؟شيء يعادل النملة com.echoproperties المهمة ربما؟

هل كانت مفيدة؟

المحلول

جرب هذا المقتطف:

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

لا، لا توجد مهمة أو وظيفة للقيام بذلك نيابةً عنك بالفعل.

نصائح أخرى

أردت أن يتم فرزهم لذلك قمت بتوسيع الإجابة الأخرى.إنها ليست فعالة جدًا، ولكنها تعمل:

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

لا يمكنك إثبات النتيجة السلبية، لكني لا أستطيع العثور على واحدة ولم أرها.لقد قمت تقليديًا بتدوير أصداء ممتلكاتي الخاصة.

لقد جربت الحلول التي اقترحها Brad C، لكنها لم تنجح معي (تشغيل 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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top