是否有一个 NAnt 任务会回显当前在构建期间设置的所有属性名称和值?可能相当于 Ant echoproperties任务的东西?
serg10
问问题
2437 次
4 回答
24
试试这个片段:
<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 运行。
不,没有任务或功能可以为您执行此操作。
于 2008-09-26T18:36:10.873 回答
6
我希望对它们进行排序,所以我扩展了另一个答案。它不是很有效,但它有效:
<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>
于 2012-12-07T23:22:26.927 回答
2
我尝试了 Brad C 建议的解决方案,但它们对我不起作用(在 x64 上使用 NAnt 0.92 运行 Windows 7 Profession)。但是,这适用于我的本地配置:
<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>
于 2013-11-27T17:04:02.793 回答
1
你无法证明是否定的,但我找不到也没有见过。我传统上滚动我自己的财产回声。
于 2008-09-26T17:14:31.227 回答