Domanda

Ho un molto semplice configurazione, una soluzione tutta che costruisce utilizzando .NET 3.5. Funziona bene sulla mia macchina, e il server di build. Da allora ho aggiunto uno script per il mio file di build, che creerà un file XML, che elenca tutti gli aggiornamenti per la nostra patcher. Questo funziona bene sulla mia macchina, ma non a tutti sul server di build.

Ho allegato l'uscita in basso, stranamente, sembra essere la compilazione dello script in .NET 2.0? Il che non funzionerà mai, perché LINQ è presente nello script.

Qualcuno ha qualche idea? Grazie in anticipo ...

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.
È stato utile?

Soluzione

Anche io stavo avendo questo problema e ha dovuto smettere di usare 3,5 caratteristiche nel mio script Nant.

Sembra come se NAnt di compilare il codice dal blocco utilizzando il compilatore v2.0 come NAnt è stata costruita con il compilatore v2.0.

C'è un trucco per il codice sorgente di NAnt suggerito qui:

http: //www.mail-archive. com/nant-users@lists.sourceforge.net/msg11867.html

Altri suggerimenti

Si dice in alto che framework di destinazione è 3.5 e la build è riuscito, in modo da penso che stai bene. Sembra 2.0 è solo la versione del framework che ha generato lo script NAnt.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top