我一直在尝试在运行 Cruise Control.Net 的构建服务器中将 Nant 从 0.86-beta1 升级到 0.92。现在(似乎自从我重新启动服务器以来),<script>
任务失败了。即使恢复到旧的南特也无济于事。这是任务:
<script language="C#">
<code>
<![CDATA[
public static void ScriptMain(Project project)
{
System.Collections.Generic.SortedDictionary<string, string> sortedByKey = new System.Collections.Generic.SortedDictionary<string, string>();
foreach(DictionaryEntry de in project.Properties)
{
sortedByKey.Add(de.Key.ToString(), de.Value.ToString());
}
NAnt.Core.Tasks.EchoTask echo = new NAnt.Core.Tasks.EchoTask();
echo.Project = project;
foreach(System.Collections.Generic.KeyValuePair<string, string> kvp in sortedByKey)
{
// Omit the many boring nant.tasks properties
if(kvp.Key.StartsWith("nant.tasks"))
continue;
echo.Message = String.Format("{0}: {1}", kvp.Key, kvp.Value);
echo.Execute();
}
}
]]>
</code>
</script>
这是我从某处复制的脚本,用于回显所有已定义属性的值作为调试辅助。Nant 抱怨在 .Net 2.0(Nant 0.86-beta1 使用)和 .Net 4.0(对于 Nant 0.92)中SortedDictionary
都不能在 namespace 中找到System.Collections.Generic
它,但它应该在哪里。它在程序集 System.DLL 中,所以看起来 Nant 应该能够找到它。
为了进行 Nant 升级,我只是将新版本安装在之前版本旁边的文件夹中,并更改了 PATH 变量。出于某种原因,仅重新启动 CC.Net 服务并不足以让它开始使用新版本,但重新启动计算机就可以了。但后来我开始遇到这个问题。将 PATH 切换回来(并再次重新启动)并没有解决它。