Есть ли задача NAnt, которая будет отображать все имена и значения свойств, которые в настоящее время установлены во время сборки? Может быть, что-то эквивалентное задаче Ant echoproperties?
Есть ли задача NAnt, которая будет отображать все имена / значения свойств?
Ответы (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
Все еще помогает через десять лет!
- 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