我有一个非常简单的设置,一个使用.NET 3.5构建的完整解决方案。在我的机器和构建服务器上运行良好。我已经在我的构建文件中添加了一个脚本,该脚本将创建一个XML文件,列出我们的修补程序的所有更新。这在我的机器上运行良好, 但在构建服务器上根本没有。
我已经附加了下面的输出,奇怪的是,它似乎是在编译.NET 2.0中的脚本?这将永远不会起作用,因为LINQ存在于脚本中。
有人有什么想法吗?提前谢谢......
NAnt 0.90 (Build 0.90.3780.0; release; 08/05/2010)
Copyright (C) 2001-2010 Gerry Shaw
http://nant.sourceforge.net
Buildfile: file:///E:/Build/Importers/nant.importers.build
Target framework: Microsoft .NET Framework 3.5
Base Directory: E:\Build\Importers.
generateUpdateXml:
[script] Adding assembly NAnt.Core
[script] Adding assembly System.Xml
[script] Adding assembly System.Data.Linq
[script] Adding assembly System.Core
[echo] Compilation failed:
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(32,22) : error CS1026: ) expected
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(32,27) : error CS1002: ; expected
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(32,27) : error CS1525: Invalid expression term 'in'
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(32,30) : error CS1002: ; expected
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(32,96) : error CS1002: ; expected
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(33,16) : error CS1002: ; expected
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(34,9) : error CS1031: Type expected
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(35,28) : error CS1002: ; expected
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(35,28) : error CS1525: Invalid expression term ','
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(35,29) : error CS1002: ; expected
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(36,58) : error CS1002: ; expected
[echo] c:\Documents and Settings\dean.thomas\Local Settings\Temp\1\fjgfnsgk.0.cs(37,17) : error CS1525: Invalid expression term ')'
[echo] //------------------------------------------------------------------------------
[echo] // <auto-generated>
[echo] // This code was generated by a tool.
[echo] // Runtime Version:2.0.50727.3615
[echo] //
[echo] // Changes to this file may cause incorrect behavior and will be lost if
[echo] // the code is regenerated.
[echo] // </auto-generated>
[echo] //------------------------------------------------------------------------------
[echo]
[echo] using NAnt.Core;
[echo] using NAnt.Core.Attributes;
[echo] using System;
[echo] using System.Collections;
[echo] using System.IO;
[echo] using System.Linq;
[echo] using System.Reflection;
[echo] using System.Text;
[echo] using System.Xml;
[echo]
[echo]
[echo]
[echo] [FunctionSet("script", "script")]
[echo] public class nant4430d2e24afc4e1eb4d68138bbb0e3a0 : NAnt.Core.FunctionSetBase {
[echo]
[echo]
[echo] public static void ScriptMain(Project project)
[echo] {
[echo] string outputFolder = string.Format(@"{0}\{1}\", project.Properties["publish.dir.NetworkPath"], project.Properties["Project"]);
[echo] project.Log(Level.Info, outputFolder);
[echo]
[echo] var allItems = (from file in Directory.GetFiles(outputFolder, "*", SearchOption.AllDirectories)
[echo] select new
[echo] {
[echo] Filename = file,
[echo] LastModified = System.IO.File.GetLastWriteTime(file)
[echo] });
[echo] /*
[echo] XmlDocument xDoc = new XmlDocument();
[echo] xDoc.AppendChild(xDoc.CreateXmlDeclaration("1.0", "UTF-8", null));
[echo]
[echo] XmlElement feedElement = xDoc.CreateElement("Feed");
[echo] XmlElement tasksElement = xDoc.CreateElement("Tasks");
[echo]
[echo] foreach (var item in allItems)
[echo] {
[echo] XmlElement fileUpdateElement = xDoc.CreateElement("FileUpdateTask");
[echo] string parentFolder = System.IO.Path.GetFileName(System.IO.Path.GetDirectoryName(item.Filename));
[echo]
[echo] fileUpdateElement.SetAttribute("updateTo", item.Filename);
[echo]
[echo] if (parentFolder == "Importers")
[echo] {
[echo] //Do this
[echo] fileUpdateElement.SetAttribute("apply", "hot-swap");
[echo] fileUpdateElement.SetAttribute("localPath", string.Format(@"Importers\{0}", System.IO.Path.GetFileName(item.Filename)));
[echo] }
[echo] else
[echo] {
[echo] //Do that
[echo] fileUpdateElement.SetAttribute("apply", "app-restart");
[echo] fileUpdateElement.SetAttribute("localPath", System.IO.Path.GetFileName(item.Filename));
[echo] }
[echo]
[echo] //Condition, which we can just use the timestamp of the upload
[echo] XmlElement conditions = xDoc.CreateElement("Conditions");
[echo] XmlElement fileDateCondition = xDoc.CreateElement("FileDateCondition");
[echo] fileDateCondition.SetAttribute("type", "and");
[echo] fileDateCondition.SetAttribute("what", "newer");
[echo] fileDateCondition.SetAttribute("timestamp", item.LastModified.ToString("dd/MM/yyyy HH:MM:ss"));
[echo] conditions.AppendChild(fileDateCondition);
[echo] fileUpdateElement.AppendChild(conditions);
[echo] tasksElement.AppendChild(fileUpdateElement);
[echo] }
[echo]
[echo] feedElement.AppendChild(tasksElement);
[echo] xDoc.AppendChild(feedElement);
[echo] xDoc.Save("c:\\testing.xml"); */
[echo] }
[echo]
[echo] public nant4430d2e24afc4e1eb4d68138bbb0e3a0(NAnt.Core.Project project, NAnt.Core.PropertyDictionary propDict) :
[echo] base(project, propDict) {
[echo] }
[echo] }
[echo]
BUILD SUCCEEDED
Total time: 0.7 seconds.
答案 0 :(得分:3)
我也遇到了这个问题,不得不停止在我的NAnt脚本中使用3.5功能。
似乎NAnt正在使用v2.0编译器编译块中的代码,因为NAnt本身是使用v2.0编译器构建的。
这里建议使用NAnt源代码进行攻击:
http://www.mail-archive.com/nant-users@lists.sourceforge.net/msg11867.html
答案 1 :(得分:2)
它在顶部说目标框架是3.5并且构建成功,所以我认为你没事。看起来2.0只是生成NAnt脚本的框架版本。