From bd3db9eeeb4682712b03d1453e5142b7277675f5 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 26 Feb 2022 13:22:42 +0000 Subject: [PATCH] normalize tab as 4spaces --- .../src/Core/Attributes/DataNodeAttribute.cs | 66 +- .../Core/Attributes/OptionNodeAttribute.cs | 66 +- .../src/Core/Attributes/TargetAttribute.cs | 66 +- Prebuild/src/Core/FatalException.cs | 96 +- Prebuild/src/Core/Interfaces/IDataNode.cs | 34 +- Prebuild/src/Core/Interfaces/ITarget.cs | 44 +- Prebuild/src/Core/Kernel.cs | 1267 ++++++------- Prebuild/src/Core/Nodes/AuthorNode.cs | 84 +- Prebuild/src/Core/Nodes/CleanupNode.cs | 56 +- Prebuild/src/Core/Nodes/ConfigurationNode.cs | 314 +-- .../Core/Nodes/ConfigurationNodeCollection.cs | 72 +- Prebuild/src/Core/Nodes/DataNode.cs | 154 +- .../src/Core/Nodes/DatabaseReferenceNode.cs | 6 +- Prebuild/src/Core/Nodes/ExcludeNode.cs | 64 +- Prebuild/src/Core/Nodes/FileNode.cs | 402 ++-- Prebuild/src/Core/Nodes/FilesNode.cs | 272 +-- Prebuild/src/Core/Nodes/MatchNode.cs | 416 ++-- Prebuild/src/Core/Nodes/OptionsNode.cs | 1299 ++++++------- .../src/Core/Nodes/PackageReferenceNode.cs | 92 +- Prebuild/src/Core/Nodes/ProcessNode.cs | 124 +- Prebuild/src/Core/Nodes/ProjectNode.cs | 994 +++++----- .../src/Core/Nodes/ProjectReferenceNode.cs | 92 +- Prebuild/src/Core/Nodes/ReferenceNode.cs | 174 +- Prebuild/src/Core/Nodes/ReferencePathNode.cs | 84 +- Prebuild/src/Core/Nodes/SolutionNode.cs | 472 ++--- Prebuild/src/Core/Parse/IfContext.cs | 224 +-- Prebuild/src/Core/Parse/Preprocessor.cs | 1033 +++++----- Prebuild/src/Core/Targets/AutotoolsTarget.cs | 127 +- .../src/Core/Targets/MonoDevelopTarget.cs | 812 ++++---- Prebuild/src/Core/Targets/NAntTarget.cs | 733 +++---- .../src/Core/Targets/SharpDevelop2Target.cs | 70 +- .../src/Core/Targets/SharpDevelopTarget.cs | 674 +++---- Prebuild/src/Core/Targets/ToolInfo.cs | 356 ++-- Prebuild/src/Core/Targets/VS2002Target.cs | 96 +- Prebuild/src/Core/Targets/VS2003Target.cs | 1112 +++++------ Prebuild/src/Core/Targets/VS2005Target.cs | 4 +- Prebuild/src/Core/Targets/VS2008Target.cs | 180 +- Prebuild/src/Core/Targets/VS2010Target.cs | 202 +- Prebuild/src/Core/Targets/VS2012Target.cs | 202 +- Prebuild/src/Core/Targets/VS2013Target.cs | 204 +- Prebuild/src/Core/Targets/VS2019Target.cs | 6 +- Prebuild/src/Core/Targets/VSGenericTarget.cs | 1685 +++++++++-------- Prebuild/src/Core/Targets/VSVersion.cs | 80 +- Prebuild/src/Core/UnknownLanguageException.cs | 72 +- .../Core/Utilities/CommandLineCollection.cs | 200 +- .../src/Core/Utilities/CurrentDirectory.cs | 62 +- Prebuild/src/Core/Utilities/Helper.cs | 934 ++++----- Prebuild/src/Core/Utilities/Log.cs | 416 ++-- Prebuild/src/Core/WarningException.cs | 94 +- Prebuild/src/Prebuild.cs | 198 +- 50 files changed, 8309 insertions(+), 8277 deletions(-) diff --git a/Prebuild/src/Core/Attributes/DataNodeAttribute.cs b/Prebuild/src/Core/Attributes/DataNodeAttribute.cs index f1938a2e20..5bff3683b0 100644 --- a/Prebuild/src/Core/Attributes/DataNodeAttribute.cs +++ b/Prebuild/src/Core/Attributes/DataNodeAttribute.cs @@ -28,45 +28,45 @@ using System.Collections.Specialized; namespace Prebuild.Core.Attributes { - /// - /// - /// - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple=true)] - public sealed class DataNodeAttribute : Attribute - { - #region Fields + /// + /// + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = true)] + public sealed class DataNodeAttribute : Attribute + { + #region Fields - private string m_Name = "unknown"; + private string m_Name = "unknown"; - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - /// The name. - public DataNodeAttribute(string name) - { - m_Name = name; - } + /// + /// Initializes a new instance of the class. + /// + /// The name. + public DataNodeAttribute(string name) + { + m_Name = name; + } - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return m_Name; - } - } + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return m_Name; + } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs b/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs index 2d6a6a7bfc..73e2698844 100644 --- a/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs +++ b/Prebuild/src/Core/Attributes/OptionNodeAttribute.cs @@ -27,45 +27,45 @@ using System; namespace Prebuild.Core.Attributes { - /// - /// - /// - [AttributeUsage(AttributeTargets.Field)] - public sealed class OptionNodeAttribute : Attribute - { - #region Fields + /// + /// + /// + [AttributeUsage(AttributeTargets.Field)] + public sealed class OptionNodeAttribute : Attribute + { + #region Fields - private string m_NodeName; + private string m_NodeName; - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - /// Name of the node. - public OptionNodeAttribute(string nodeName) - { - m_NodeName = nodeName; - } + /// + /// Initializes a new instance of the class. + /// + /// Name of the node. + public OptionNodeAttribute(string nodeName) + { + m_NodeName = nodeName; + } - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the name of the node. - /// - /// The name of the node. - public string NodeName - { - get - { - return m_NodeName; - } - } + /// + /// Gets the name of the node. + /// + /// The name of the node. + public string NodeName + { + get + { + return m_NodeName; + } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Attributes/TargetAttribute.cs b/Prebuild/src/Core/Attributes/TargetAttribute.cs index 5ad62ee033..a5d3101a43 100644 --- a/Prebuild/src/Core/Attributes/TargetAttribute.cs +++ b/Prebuild/src/Core/Attributes/TargetAttribute.cs @@ -27,45 +27,45 @@ using System; namespace Prebuild.Core.Attributes { - /// - /// - /// - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)] - public sealed class TargetAttribute : Attribute - { - #region Fields + /// + /// + /// + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)] + public sealed class TargetAttribute : Attribute + { + #region Fields - private string m_Name; + private string m_Name; - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - /// The name. - public TargetAttribute(string name) - { - m_Name = name; - } + /// + /// Initializes a new instance of the class. + /// + /// The name. + public TargetAttribute(string name) + { + m_Name = name; + } - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return m_Name; - } - } + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return m_Name; + } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/FatalException.cs b/Prebuild/src/Core/FatalException.cs index 348790568f..a302146721 100644 --- a/Prebuild/src/Core/FatalException.cs +++ b/Prebuild/src/Core/FatalException.cs @@ -28,58 +28,58 @@ using System.Runtime.Serialization; namespace Prebuild.Core { - /// - /// - /// - [Serializable()] - public class FatalException : Exception - { - #region Constructors + /// + /// + /// + [Serializable()] + public class FatalException : Exception + { + #region Constructors - - /// - /// Initializes a new instance of the class. - /// - public FatalException() - { - } - /// - /// Initializes a new instance of the class. - /// - /// The format. - /// The args. - public FatalException(string format, params object[] args) - : base(String.Format(format, args)) - { - } + /// + /// Initializes a new instance of the class. + /// + public FatalException() + { + } - /// - /// Exception with specified string - /// - /// Exception message - public FatalException(string message): base(message) - { - } + /// + /// Initializes a new instance of the class. + /// + /// The format. + /// The args. + public FatalException(string format, params object[] args) + : base(String.Format(format, args)) + { + } - /// - /// - /// - /// - /// - public FatalException(string message, Exception exception) : base(message, exception) - { - } + /// + /// Exception with specified string + /// + /// Exception message + public FatalException(string message) : base(message) + { + } - /// - /// - /// - /// - /// - protected FatalException(SerializationInfo info, StreamingContext context) : base( info, context ) - { - } + /// + /// + /// + /// + /// + public FatalException(string message, Exception exception) : base(message, exception) + { + } - #endregion - } + /// + /// + /// + /// + /// + protected FatalException(SerializationInfo info, StreamingContext context) : base(info, context) + { + } + + #endregion + } } diff --git a/Prebuild/src/Core/Interfaces/IDataNode.cs b/Prebuild/src/Core/Interfaces/IDataNode.cs index 986dd2de8c..d63f07848d 100644 --- a/Prebuild/src/Core/Interfaces/IDataNode.cs +++ b/Prebuild/src/Core/Interfaces/IDataNode.cs @@ -26,22 +26,22 @@ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O using System; using System.Xml; -namespace Prebuild.Core.Interfaces +namespace Prebuild.Core.Interfaces { - /// - /// - /// - public interface IDataNode - { - /// - /// Gets or sets the parent. - /// - /// The parent. - IDataNode Parent { get; set; } - /// - /// Parses the specified node. - /// - /// The node. - void Parse(XmlNode node); - } + /// + /// + /// + public interface IDataNode + { + /// + /// Gets or sets the parent. + /// + /// The parent. + IDataNode Parent { get; set; } + /// + /// Parses the specified node. + /// + /// The node. + void Parse(XmlNode node); + } } diff --git a/Prebuild/src/Core/Interfaces/ITarget.cs b/Prebuild/src/Core/Interfaces/ITarget.cs index 47115c658b..36c2f412a3 100644 --- a/Prebuild/src/Core/Interfaces/ITarget.cs +++ b/Prebuild/src/Core/Interfaces/ITarget.cs @@ -25,27 +25,27 @@ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O using System; -namespace Prebuild.Core.Interfaces +namespace Prebuild.Core.Interfaces { - /// - /// - /// - public interface ITarget - { - /// - /// Writes the specified kern. - /// - /// The kern. - void Write(Kernel kern); - /// - /// Cleans the specified kern. - /// - /// The kern. - void Clean(Kernel kern); - /// - /// Gets the name. - /// - /// The name. - string Name { get; } - } + /// + /// + /// + public interface ITarget + { + /// + /// Writes the specified kern. + /// + /// The kern. + void Write(Kernel kern); + /// + /// Cleans the specified kern. + /// + /// The kern. + void Clean(Kernel kern); + /// + /// Gets the name. + /// + /// The name. + string Name { get; } + } } \ No newline at end of file diff --git a/Prebuild/src/Core/Kernel.cs b/Prebuild/src/Core/Kernel.cs index 225fdb8dab..638f9509f1 100755 --- a/Prebuild/src/Core/Kernel.cs +++ b/Prebuild/src/Core/Kernel.cs @@ -49,265 +49,265 @@ using Prebuild.Core.Interfaces; using Prebuild.Core.Nodes; using Prebuild.Core.Utilities; -namespace Prebuild.Core +namespace Prebuild.Core { - /// - /// - /// - public class Kernel : IDisposable - { - #region Inner Classes + /// + /// + /// + public class Kernel : IDisposable + { + #region Inner Classes - private struct NodeEntry - { - public Type Type; - public DataNodeAttribute Attribute; - } + private struct NodeEntry + { + public Type Type; + public DataNodeAttribute Attribute; + } - #endregion + #endregion - #region Fields + #region Fields - private static readonly Kernel m_Instance = new Kernel(); + private static readonly Kernel m_Instance = new Kernel(); - /// - /// This must match the version of the schema that is embeeded - /// - private const string m_SchemaVersion = "1.10"; - private const string m_Schema = "prebuild-" + m_SchemaVersion + ".xsd"; - private const string m_SchemaURI = "http://dnpb.sourceforge.net/schemas/" + m_Schema; - bool disposed; - private Version m_Version; - private const string m_Revision = "w"; - private CommandLineCollection m_CommandLine; - private Log m_Log; - private CurrentDirectory m_CurrentWorkingDirectory; + /// + /// This must match the version of the schema that is embeeded + /// + private const string m_SchemaVersion = "1.10"; + private const string m_Schema = "prebuild-" + m_SchemaVersion + ".xsd"; + private const string m_SchemaURI = "http://dnpb.sourceforge.net/schemas/" + m_Schema; + bool disposed; + private Version m_Version; + private const string m_Revision = "w"; + private CommandLineCollection m_CommandLine; + private Log m_Log; + private CurrentDirectory m_CurrentWorkingDirectory; [Obsolete] private XmlSchemaCollection m_Schemas; private readonly Dictionary m_Targets = new Dictionary(); private readonly Dictionary m_Nodes = new Dictionary(); - readonly List m_Solutions = new List(); + readonly List m_Solutions = new List(); string m_Target; bool cmdlineTargetFramework; FrameworkVersion m_TargetFramework; //Overrides all project settings string m_Conditionals; //Adds to all project settings public string ForcedConditionals { get { return m_Conditionals; } } - string m_Clean; - string[] m_RemoveDirectories; - XmlDocument m_CurrentDoc; - bool m_PauseAfterFinish; - string[] m_ProjectGroups; + string m_Clean; + string[] m_RemoveDirectories; + XmlDocument m_CurrentDoc; + bool m_PauseAfterFinish; + string[] m_ProjectGroups; - #endregion + #endregion - #region Constructors + #region Constructors - private Kernel() - { - } + private Kernel() + { + } - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets a value indicating whether [pause after finish]. - /// - /// true if [pause after finish]; otherwise, false. - public bool PauseAfterFinish - { - get - { - return m_PauseAfterFinish; - } - } + /// + /// Gets a value indicating whether [pause after finish]. + /// + /// true if [pause after finish]; otherwise, false. + public bool PauseAfterFinish + { + get + { + return m_PauseAfterFinish; + } + } - /// - /// Gets the instance. - /// - /// The instance. - public static Kernel Instance - { - get - { - return m_Instance; - } - } + /// + /// Gets the instance. + /// + /// The instance. + public static Kernel Instance + { + get + { + return m_Instance; + } + } - /// - /// Gets the version. - /// - /// The version. - public string Version - { - get - { - return String.Format("{0}.{1}.{2}{3}", m_Version.Major, m_Version.Minor, m_Version.Build, m_Revision); - } - } + /// + /// Gets the version. + /// + /// The version. + public string Version + { + get + { + return String.Format("{0}.{1}.{2}{3}", m_Version.Major, m_Version.Minor, m_Version.Build, m_Revision); + } + } - /// - /// Gets the command line. - /// - /// The command line. - public CommandLineCollection CommandLine - { - get - { - return m_CommandLine; - } - } + /// + /// Gets the command line. + /// + /// The command line. + public CommandLineCollection CommandLine + { + get + { + return m_CommandLine; + } + } - /// - /// Gets the targets. - /// - /// The targets. - public Dictionary Targets - { - get - { - return m_Targets; - } - } + /// + /// Gets the targets. + /// + /// The targets. + public Dictionary Targets + { + get + { + return m_Targets; + } + } - /// - /// Gets the log. - /// - /// The log. - public Log Log - { - get - { - return m_Log; - } - } + /// + /// Gets the log. + /// + /// The log. + public Log Log + { + get + { + return m_Log; + } + } - /// - /// Gets the current working directory. - /// - /// The current working directory. - public CurrentDirectory CurrentWorkingDirectory - { - get - { - return m_CurrentWorkingDirectory; - } - } + /// + /// Gets the current working directory. + /// + /// The current working directory. + public CurrentDirectory CurrentWorkingDirectory + { + get + { + return m_CurrentWorkingDirectory; + } + } - /// - /// Gets the solutions. - /// - /// The solutions. - public List Solutions - { - get - { - return m_Solutions; - } - } - - /// - /// Gets the XmlDocument object representing the prebuild.xml - /// being processed - /// - /// The XmlDocument object - public XmlDocument CurrentDoc - { - get - { - return m_CurrentDoc; - } - } + /// + /// Gets the solutions. + /// + /// The solutions. + public List Solutions + { + get + { + return m_Solutions; + } + } - #endregion + /// + /// Gets the XmlDocument object representing the prebuild.xml + /// being processed + /// + /// The XmlDocument object + public XmlDocument CurrentDoc + { + get + { + return m_CurrentDoc; + } + } - #region Private Methods + #endregion - private static void RemoveDirectories(string rootDir, string[] dirNames) - { - foreach(string dir in Directory.GetDirectories(rootDir)) - { - string simpleName = Path.GetFileName(dir); + #region Private Methods - if(Array.IndexOf(dirNames, simpleName) != -1) - { - //delete if the name matches one of the directory names to delete - string fullDirPath = Path.GetFullPath(dir); - Directory.Delete(fullDirPath,true); - } - else//not a match, so check children - { - RemoveDirectories(dir,dirNames); - //recurse, checking children for them - } - } - } + private static void RemoveDirectories(string rootDir, string[] dirNames) + { + foreach (string dir in Directory.GetDirectories(rootDir)) + { + string simpleName = Path.GetFileName(dir); -// private void RemoveDirectoryMatches(string rootDir, string dirPattern) -// { -// foreach(string dir in Directory.GetDirectories(rootDir)) -// { -// foreach(string match in Directory.GetDirectories(dir)) -// {//delete all child directories that match -// Directory.Delete(Path.GetFullPath(match),true); -// } -// //recure through the rest checking for nested matches to delete -// RemoveDirectoryMatches(dir,dirPattern); -// } -// } + if (Array.IndexOf(dirNames, simpleName) != -1) + { + //delete if the name matches one of the directory names to delete + string fullDirPath = Path.GetFullPath(dir); + Directory.Delete(fullDirPath, true); + } + else//not a match, so check children + { + RemoveDirectories(dir, dirNames); + //recurse, checking children for them + } + } + } - private void LoadSchema() - { - Assembly assembly = GetType().Assembly; - Stream stream = assembly.GetManifestResourceStream("Prebuild.data." + m_Schema); - if(stream == null) - { - //try without the default namespace prepending to it in case was compiled with SharpDevelop or MonoDevelop instead of Visual Studio .NET - stream = assembly.GetManifestResourceStream(m_Schema); - if(stream == null) - { - throw new System.Reflection.TargetException(string.Format("Could not find the scheme embedded resource file '{0}'.", m_Schema)); - } - } - XmlReader schema = new XmlTextReader(stream); - - m_Schemas = new XmlSchemaCollection(); - m_Schemas.Add(m_SchemaURI, schema); - } + // private void RemoveDirectoryMatches(string rootDir, string dirPattern) + // { + // foreach(string dir in Directory.GetDirectories(rootDir)) + // { + // foreach(string match in Directory.GetDirectories(dir)) + // {//delete all child directories that match + // Directory.Delete(Path.GetFullPath(match),true); + // } + // //recure through the rest checking for nested matches to delete + // RemoveDirectoryMatches(dir,dirPattern); + // } + // } - private void CacheVersion() - { - m_Version = Assembly.GetEntryAssembly().GetName().Version; - } + private void LoadSchema() + { + Assembly assembly = GetType().Assembly; + Stream stream = assembly.GetManifestResourceStream("Prebuild.data." + m_Schema); + if (stream == null) + { + //try without the default namespace prepending to it in case was compiled with SharpDevelop or MonoDevelop instead of Visual Studio .NET + stream = assembly.GetManifestResourceStream(m_Schema); + if (stream == null) + { + throw new System.Reflection.TargetException(string.Format("Could not find the scheme embedded resource file '{0}'.", m_Schema)); + } + } + XmlReader schema = new XmlTextReader(stream); - private void CacheTargets(Assembly assm) - { - foreach(Type t in assm.GetTypes()) - { - TargetAttribute ta = (TargetAttribute)Helper.CheckType(t, typeof(TargetAttribute), typeof(ITarget)); + m_Schemas = new XmlSchemaCollection(); + m_Schemas.Add(m_SchemaURI, schema); + } - if(ta == null) - continue; - - if (t.IsAbstract) - continue; - - ITarget target = (ITarget)assm.CreateInstance(t.FullName); - if (target == null) - { - throw new MissingMethodException("Could not create ITarget instance"); - } + private void CacheVersion() + { + m_Version = Assembly.GetEntryAssembly().GetName().Version; + } - m_Targets[ta.Name] = target; - } - } + private void CacheTargets(Assembly assm) + { + foreach (Type t in assm.GetTypes()) + { + TargetAttribute ta = (TargetAttribute)Helper.CheckType(t, typeof(TargetAttribute), typeof(ITarget)); - private void CacheNodeTypes(Assembly assm) - { - foreach(Type t in assm.GetTypes()) - { + if (ta == null) + continue; + + if (t.IsAbstract) + continue; + + ITarget target = (ITarget)assm.CreateInstance(t.FullName); + if (target == null) + { + throw new MissingMethodException("Could not create ITarget instance"); + } + + m_Targets[ta.Name] = target; + } + } + + private void CacheNodeTypes(Assembly assm) + { + foreach (Type t in assm.GetTypes()) + { foreach (DataNodeAttribute dna in t.GetCustomAttributes(typeof(DataNodeAttribute), true)) { NodeEntry ne = new NodeEntry(); @@ -315,11 +315,11 @@ namespace Prebuild.Core ne.Attribute = dna; m_Nodes[dna.Name] = ne; } - } - } + } + } - private void LogBanner() - { + private void LogBanner() + { m_Log.Write("Prebuild v" + Version); m_Log.Write("Copyright (c) 2004-2010"); m_Log.Write("Matthew Holmes (matthew@wildfiregames.com),"); @@ -330,10 +330,10 @@ namespace Prebuild.Core m_Log.Write("John Hurliman (john.hurliman@intel.com),"); m_Log.Write("WhiteCore build 2015 (greythane@gmail.com),"); m_Log.Write("OpenSimulator build 2017 Ubit Umarov,"); - m_Log.Write (""); + m_Log.Write(""); m_Log.Write("See 'prebuild /usage' for help"); m_Log.Write(); - } + } @@ -361,31 +361,31 @@ namespace Prebuild.Core /// /// public void ProcessFile(string file, IList solutions) - { - m_CurrentWorkingDirectory.Push(); - - string path = file; - try - { - try - { - path = Helper.ResolvePath(path); - } - catch(ArgumentException) - { - m_Log.Write("Could not open Prebuild file: " + path); - m_CurrentWorkingDirectory.Pop(); - return; - } + { + m_CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(path)); - - XmlTextReader reader = new XmlTextReader(path); + string path = file; + try + { + try + { + path = Helper.ResolvePath(path); + } + catch (ArgumentException) + { + m_Log.Write("Could not open Prebuild file: " + path); + m_CurrentWorkingDirectory.Pop(); + return; + } + + Helper.SetCurrentDir(Path.GetDirectoryName(path)); + + XmlTextReader reader = new XmlTextReader(path); Core.Parse.Preprocessor pre = new Core.Parse.Preprocessor(); //register command line arguments as XML variables - IEnumerator> dict = m_CommandLine.GetEnumerator(); + IEnumerator> dict = m_CommandLine.GetEnumerator(); while (dict.MoveNext()) { string name = dict.Current.Key.Trim(); @@ -393,42 +393,42 @@ namespace Prebuild.Core pre.RegisterVariable(name, dict.Current.Value); } - string xml = pre.Process(reader);//remove script and evaulate pre-proccessing to get schema-conforming XML + string xml = pre.Process(reader);//remove script and evaulate pre-proccessing to get schema-conforming XML - // See if the user put into a pseudo target of "prebuild:preprocessed-input" to indicate they want to see the - // output before the system processes it. - if (m_CommandLine.WasPassed("ppi")) - { - // Get the filename if there is one, otherwise use a default. - string ppiFile = m_CommandLine["ppi"]; - if (ppiFile == null || ppiFile.Trim().Length == 0) - { - ppiFile = "preprocessed-input.xml"; - } + // See if the user put into a pseudo target of "prebuild:preprocessed-input" to indicate they want to see the + // output before the system processes it. + if (m_CommandLine.WasPassed("ppi")) + { + // Get the filename if there is one, otherwise use a default. + string ppiFile = m_CommandLine["ppi"]; + if (ppiFile == null || ppiFile.Trim().Length == 0) + { + ppiFile = "preprocessed-input.xml"; + } - // Write out the string to the given stream. - try - { - using (StreamWriter ppiWriter = new StreamWriter(ppiFile)) - { - ppiWriter.WriteLine(xml); - } - } - catch(IOException ex) - { - Console.WriteLine("Could not write PPI file '{0}': {1}", ppiFile, ex.Message); - } + // Write out the string to the given stream. + try + { + using (StreamWriter ppiWriter = new StreamWriter(ppiFile)) + { + ppiWriter.WriteLine(xml); + } + } + catch (IOException ex) + { + Console.WriteLine("Could not write PPI file '{0}': {1}", ppiFile, ex.Message); + } - // Finish processing this special tag. - return; - } - - m_CurrentDoc = new XmlDocument(); - try - { + // Finish processing this special tag. + return; + } + + m_CurrentDoc = new XmlDocument(); + try + { #if NO_VALIDATE - XmlReader validator = XmlReader.Create(new StringReader(xml)); - m_CurrentDoc.Load(validator); + XmlReader validator = XmlReader.Create(new StringReader(xml)); + m_CurrentDoc.Load(validator); #else XmlValidatingReader validator = new XmlValidatingReader(new XmlTextReader(new StringReader(xml))); @@ -439,411 +439,412 @@ namespace Prebuild.Core } m_CurrentDoc.Load(validator); #endif - } - catch(XmlException e) - { - throw new XmlException(e.ToString()); - } + } + catch (XmlException e) + { + throw new XmlException(e.ToString()); + } - //is there a purpose to writing it? An syntax/schema problem would have been found during pre.Process() and reported with details - if(m_CommandLine.WasPassed("ppo")) - { - string ppoFile = m_CommandLine["ppo"]; - if(ppoFile == null || ppoFile.Trim().Length < 1) - { - ppoFile = "preprocessed.xml"; - } + //is there a purpose to writing it? An syntax/schema problem would have been found during pre.Process() and reported with details + if (m_CommandLine.WasPassed("ppo")) + { + string ppoFile = m_CommandLine["ppo"]; + if (ppoFile == null || ppoFile.Trim().Length < 1) + { + ppoFile = "preprocessed.xml"; + } - StreamWriter writer = null; - try - { - writer = new StreamWriter(ppoFile); - writer.Write(xml); - } - catch(IOException ex) - { - Console.WriteLine("Could not write PPO file '{0}': {1}", ppoFile, ex.Message); - } - finally - { - if(writer != null) - { - writer.Close(); - } - } - return; - } - //start reading the xml config file - XmlElement rootNode = m_CurrentDoc.DocumentElement; - //string suggestedVersion = Helper.AttributeValue(rootNode,"version","1.0"); - Helper.CheckForOSVariables = Helper.ParseBoolean(rootNode,"checkOsVars",false); + StreamWriter writer = null; + try + { + writer = new StreamWriter(ppoFile); + writer.Write(xml); + } + catch (IOException ex) + { + Console.WriteLine("Could not write PPO file '{0}': {1}", ppoFile, ex.Message); + } + finally + { + if (writer != null) + { + writer.Close(); + } + } + return; + } + //start reading the xml config file + XmlElement rootNode = m_CurrentDoc.DocumentElement; + //string suggestedVersion = Helper.AttributeValue(rootNode,"version","1.0"); + Helper.CheckForOSVariables = Helper.ParseBoolean(rootNode, "checkOsVars", false); - foreach(XmlNode node in rootNode.ChildNodes)//solutions or if pre-proc instructions - { - IDataNode dataNode = ParseNode(node, null); - if(dataNode is ProcessNode) - { - ProcessNode proc = (ProcessNode)dataNode; - if(proc.IsValid) - { - ProcessFile(proc.Path); - } - } - else if(dataNode is SolutionNode) - { - solutions.Add((SolutionNode)dataNode); - } - } - } - catch(XmlSchemaException xse) - { - m_Log.Write("XML validation error at line {0} in {1}:\n\n{2}", - xse.LineNumber, path, xse.Message); - } - finally - { - m_CurrentWorkingDirectory.Pop(); - } - } + foreach (XmlNode node in rootNode.ChildNodes)//solutions or if pre-proc instructions + { + IDataNode dataNode = ParseNode(node, null); + if (dataNode is ProcessNode) + { + ProcessNode proc = (ProcessNode)dataNode; + if (proc.IsValid) + { + ProcessFile(proc.Path); + } + } + else if (dataNode is SolutionNode) + { + solutions.Add((SolutionNode)dataNode); + } + } + } + catch (XmlSchemaException xse) + { + m_Log.Write("XML validation error at line {0} in {1}:\n\n{2}", + xse.LineNumber, path, xse.Message); + } + finally + { + m_CurrentWorkingDirectory.Pop(); + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Allows the project. - /// - /// The project groups flags. - /// - public bool AllowProject(string projectGroupsFlags) - { - if(m_ProjectGroups != null && m_ProjectGroups.Length > 0) - { - if(projectGroupsFlags != null && projectGroupsFlags.Length == 0) - { - foreach(string group in projectGroupsFlags.Split('|')) - { - if(Array.IndexOf(m_ProjectGroups, group) != -1) //if included in the filter list - { - return true; - } - } - } - return false;//not included in the list or no groups specified for the project - } - return true;//no filter specified in the command line args - } + /// + /// Allows the project. + /// + /// The project groups flags. + /// + public bool AllowProject(string projectGroupsFlags) + { + if (m_ProjectGroups != null && m_ProjectGroups.Length > 0) + { + if (projectGroupsFlags != null && projectGroupsFlags.Length == 0) + { + foreach (string group in projectGroupsFlags.Split('|')) + { + if (Array.IndexOf(m_ProjectGroups, group) != -1) //if included in the filter list + { + return true; + } + } + } + return false;//not included in the list or no groups specified for the project + } + return true;//no filter specified in the command line args + } - /// - /// Gets the type of the node. - /// - /// The node. - /// - public Type GetNodeType(XmlNode node) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } - if(!m_Nodes.ContainsKey(node.Name)) - { - return null; - } + /// + /// Gets the type of the node. + /// + /// The node. + /// + public Type GetNodeType(XmlNode node) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } + if (!m_Nodes.ContainsKey(node.Name)) + { + return null; + } - NodeEntry ne = m_Nodes[node.Name]; - return ne.Type; - } + NodeEntry ne = m_Nodes[node.Name]; + return ne.Type; + } - /// - /// - /// - /// - /// - /// - public IDataNode ParseNode(XmlNode node, IDataNode parent) - { - return ParseNode(node, parent, null); - } + /// + /// + /// + /// + /// + /// + public IDataNode ParseNode(XmlNode node, IDataNode parent) + { + return ParseNode(node, parent, null); + } - //Create an instance of the data node type that is mapped to the name of the xml DOM node - /// - /// Parses the node. - /// - /// The node. - /// The parent. - /// The pre node. - /// - public IDataNode ParseNode(XmlNode node, IDataNode parent, IDataNode preNode) - { - IDataNode dataNode; + //Create an instance of the data node type that is mapped to the name of the xml DOM node + /// + /// Parses the node. + /// + /// The node. + /// The parent. + /// The pre node. + /// + public IDataNode ParseNode(XmlNode node, IDataNode parent, IDataNode preNode) + { + IDataNode dataNode; - try - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } - if(preNode == null) - { - if(!m_Nodes.ContainsKey(node.Name)) - { - Console.WriteLine("WARNING: Unknown XML node: " + node.Name); - return null; - } + try + { + if (node == null) + { + throw new ArgumentNullException("node"); + } + if (preNode == null) + { + if (!m_Nodes.ContainsKey(node.Name)) + { + Console.WriteLine("WARNING: Unknown XML node: " + node.Name); + return null; + } - NodeEntry ne = m_Nodes[node.Name]; - Type type = ne.Type; - //DataNodeAttribute dna = ne.Attribute; + NodeEntry ne = m_Nodes[node.Name]; + Type type = ne.Type; + //DataNodeAttribute dna = ne.Attribute; - dataNode = (IDataNode)type.Assembly.CreateInstance(type.FullName); - if(dataNode == null) - { - throw new System.Reflection.TargetException("Could not create new parser instance: " + type.FullName); - } - } - else - dataNode = preNode; + dataNode = (IDataNode)type.Assembly.CreateInstance(type.FullName); + if (dataNode == null) + { + throw new System.Reflection.TargetException("Could not create new parser instance: " + type.FullName); + } + } + else + dataNode = preNode; - dataNode.Parent = parent; + dataNode.Parent = parent; if (cmdlineTargetFramework && dataNode is ProjectNode) { ((ProjectNode)dataNode).FrameworkVersion = m_TargetFramework; } - dataNode.Parse(node); - } - catch(WarningException wex) - { - m_Log.Write(LogType.Warning, wex.Message); - return null; - } - catch(FatalException fex) - { - m_Log.WriteException(LogType.Error, fex); - throw; - } - catch(Exception ex) - { - m_Log.WriteException(LogType.Error, ex); - throw; - } + dataNode.Parse(node); + } + catch (WarningException wex) + { + m_Log.Write(LogType.Warning, wex.Message); + return null; + } + catch (FatalException fex) + { + m_Log.WriteException(LogType.Error, fex); + throw; + } + catch (Exception ex) + { + m_Log.WriteException(LogType.Error, ex); + throw; + } - return dataNode; - } + return dataNode; + } - /// - /// Initializes the specified target. - /// - /// The target. - /// The args. - public void Initialize(LogTargets target, string[] args) - { - CacheTargets(GetType().Assembly); - CacheNodeTypes(GetType().Assembly); - CacheVersion(); + /// + /// Initializes the specified target. + /// + /// The target. + /// The args. + public void Initialize(LogTargets target, string[] args) + { + CacheTargets(GetType().Assembly); + CacheNodeTypes(GetType().Assembly); + CacheVersion(); - m_CommandLine = new CommandLineCollection(args); - - string logFile = null; - if(m_CommandLine.WasPassed("log")) - { - logFile = m_CommandLine["log"]; + m_CommandLine = new CommandLineCollection(args); - if(logFile != null && logFile.Length == 0) - { - logFile = "Prebuild.log"; - } - } - else - { - target = target & ~LogTargets.File; //dont output to a file - } - - m_Log = new Log(target, logFile); - LogBanner(); + string logFile = null; + if (m_CommandLine.WasPassed("log")) + { + logFile = m_CommandLine["log"]; - m_CurrentWorkingDirectory = new CurrentDirectory(); + if (logFile != null && logFile.Length == 0) + { + logFile = "Prebuild.log"; + } + } + else + { + target = target & ~LogTargets.File; //dont output to a file + } + + m_Log = new Log(target, logFile); + LogBanner(); + + m_CurrentWorkingDirectory = new CurrentDirectory(); m_Target = m_CommandLine["target"]; m_Conditionals = m_CommandLine["conditionals"]; - if(m_CommandLine["targetframework"] != null) + if (m_CommandLine["targetframework"] != null) { - m_TargetFramework = (FrameworkVersion)Enum.Parse (typeof (FrameworkVersion), m_CommandLine["targetframework"]); + m_TargetFramework = (FrameworkVersion)Enum.Parse(typeof(FrameworkVersion), m_CommandLine["targetframework"]); cmdlineTargetFramework = true; } - m_Clean = m_CommandLine["clean"]; - string removeDirs = m_CommandLine["removedir"]; - if(removeDirs != null && removeDirs.Length == 0) - { - m_RemoveDirectories = removeDirs.Split('|'); - } + m_Clean = m_CommandLine["clean"]; + string removeDirs = m_CommandLine["removedir"]; + if (removeDirs != null && removeDirs.Length == 0) + { + m_RemoveDirectories = removeDirs.Split('|'); + } - string flags = m_CommandLine["allowedgroups"];//allows filtering by specifying a pipe-delimited list of groups to include - if(flags != null && flags.Length == 0) - { - m_ProjectGroups = flags.Split('|'); - } - m_PauseAfterFinish = m_CommandLine.WasPassed("pause"); + string flags = m_CommandLine["allowedgroups"];//allows filtering by specifying a pipe-delimited list of groups to include + if (flags != null && flags.Length == 0) + { + m_ProjectGroups = flags.Split('|'); + } + m_PauseAfterFinish = m_CommandLine.WasPassed("pause"); - LoadSchema(); - } + LoadSchema(); + } - /// - /// Processes this instance. - /// - public void Process() - { - bool perfomedOtherTask = false; - if(m_RemoveDirectories != null && m_RemoveDirectories.Length > 0) - { - try - { - RemoveDirectories(".",m_RemoveDirectories); - } - catch(IOException e) - { - m_Log.Write("Failed to remove directories named {0}",m_RemoveDirectories); - m_Log.WriteException(LogType.Error,e); - } - catch(UnauthorizedAccessException e) - { - m_Log.Write("Failed to remove directories named {0}",m_RemoveDirectories); - m_Log.WriteException(LogType.Error,e); - } - perfomedOtherTask = true; - } + /// + /// Processes this instance. + /// + public void Process() + { + bool perfomedOtherTask = false; + if (m_RemoveDirectories != null && m_RemoveDirectories.Length > 0) + { + try + { + RemoveDirectories(".", m_RemoveDirectories); + } + catch (IOException e) + { + m_Log.Write("Failed to remove directories named {0}", m_RemoveDirectories); + m_Log.WriteException(LogType.Error, e); + } + catch (UnauthorizedAccessException e) + { + m_Log.Write("Failed to remove directories named {0}", m_RemoveDirectories); + m_Log.WriteException(LogType.Error, e); + } + perfomedOtherTask = true; + } - if(m_Target != null && m_Clean != null) - { - m_Log.Write(LogType.Error, "The options /target and /clean cannot be passed together"); - return; - } - - if(m_Target == null && m_Clean == null) - { - if(perfomedOtherTask) //finished - { - return; - } - m_Log.Write(LogType.Error, "Must pass either /target or /clean to process a Prebuild file"); - return; - } + if (m_Target != null && m_Clean != null) + { + m_Log.Write(LogType.Error, "The options /target and /clean cannot be passed together"); + return; + } - string file = "./prebuild.xml"; - if(m_CommandLine.WasPassed("file")) - { - file = m_CommandLine["file"]; - } + if (m_Target == null && m_Clean == null) + { + if (perfomedOtherTask) //finished + { + return; + } + m_Log.Write(LogType.Error, "Must pass either /target or /clean to process a Prebuild file"); + return; + } - ProcessFile(file); + string file = "./prebuild.xml"; + if (m_CommandLine.WasPassed("file")) + { + file = m_CommandLine["file"]; + } - string target = (m_Target != null ? m_Target.ToLower() : m_Clean.ToLower()); - bool clean = (m_Target == null); - if(clean && target != null && target.Length == 0) - { - target = "all"; - } - if(clean && target == "all")//default to all if no target was specified for clean - { + ProcessFile(file); + + string target = (m_Target != null ? m_Target.ToLower() : m_Clean.ToLower()); + bool clean = (m_Target == null); + if (clean && target != null && target.Length == 0) + { + target = "all"; + } + if (clean && target == "all")//default to all if no target was specified for clean + { //check if they passed yes if (!m_CommandLine.WasPassed("yes")) { - Console.WriteLine("WARNING: This operation will clean ALL project files for all targets, are you sure? (y/n):"); - string ret = Console.ReadLine(); - if(ret == null) - { - return; - } - ret = ret.Trim().ToLower(); - if((ret.ToLower() != "y" && ret.ToLower() != "yes")) - { - return; + Console.WriteLine("WARNING: This operation will clean ALL project files for all targets, are you sure? (y/n):"); + string ret = Console.ReadLine(); + if (ret == null) + { + return; + } + ret = ret.Trim().ToLower(); + if ((ret.ToLower() != "y" && ret.ToLower() != "yes")) + { + return; } } - //clean all targets (just cleaning vs2002 target didn't clean nant) - foreach(ITarget targ in m_Targets.Values) - { - targ.Clean(this); - } - } - else - { - if (!m_Targets.ContainsKey(target)) { - m_Log.Write(LogType.Error, "Unknown Target \"{0}\"", target); - return; - } - ITarget targ = m_Targets[target]; + //clean all targets (just cleaning vs2002 target didn't clean nant) + foreach (ITarget targ in m_Targets.Values) + { + targ.Clean(this); + } + } + else + { + if (!m_Targets.ContainsKey(target)) + { + m_Log.Write(LogType.Error, "Unknown Target \"{0}\"", target); + return; + } + ITarget targ = m_Targets[target]; - if(clean) - { - targ.Clean(this); - } - else - { - targ.Write(this); - } - } + if (clean) + { + targ.Clean(this); + } + else + { + targ.Write(this); + } + } - m_Log.Flush(); - } + m_Log.Flush(); + } - #endregion + #endregion - #region IDisposable Members + #region IDisposable Members - /// - /// - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } + /// + /// + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } - /// - /// Dispose objects - /// - /// - /// If true, it will dispose close the handle - /// - /// - /// Will dispose managed and unmanaged resources. - /// - protected virtual void Dispose(bool disposing) - { - if (!disposed) - { - if (disposing) - { + /// + /// Dispose objects + /// + /// + /// If true, it will dispose close the handle + /// + /// + /// Will dispose managed and unmanaged resources. + /// + protected virtual void Dispose(bool disposing) + { + if (!disposed) + { + if (disposing) + { GC.SuppressFinalize(this); - if (m_Log != null) - { - m_Log.Close(); - m_Log = null; - } - } - } - disposed = true; - } + if (m_Log != null) + { + m_Log.Close(); + m_Log = null; + } + } + } + disposed = true; + } - /// - /// - /// - ~Kernel() - { - Dispose(false); - } - - /// - /// Closes and destroys this object - /// - /// - /// Same as Dispose(true) - /// - public void Close() - { - Dispose(); - } + /// + /// + /// + ~Kernel() + { + Dispose(false); + } - #endregion - } + /// + /// Closes and destroys this object + /// + /// + /// Same as Dispose(true) + /// + public void Close() + { + Dispose(); + } + + #endregion + } } diff --git a/Prebuild/src/Core/Nodes/AuthorNode.cs b/Prebuild/src/Core/Nodes/AuthorNode.cs index 4c415bb6b1..1592a7d035 100644 --- a/Prebuild/src/Core/Nodes/AuthorNode.cs +++ b/Prebuild/src/Core/Nodes/AuthorNode.cs @@ -32,56 +32,56 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("Author")] - public class AuthorNode : DataNode - { - #region Fields + /// + /// + /// + [DataNode("Author")] + public class AuthorNode : DataNode + { + #region Fields - private string m_Signature; + private string m_Signature; - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the signature. - /// - /// The signature. - public string Signature - { - get - { - return m_Signature; - } - } + /// + /// Gets the signature. + /// + /// The signature. + public string Signature + { + get + { + return m_Signature; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } - m_Signature = Helper.InterpolateForEnvironmentVariables(node.InnerText); - if(m_Signature == null) - { - m_Signature = ""; - } + m_Signature = Helper.InterpolateForEnvironmentVariables(node.InnerText); + if (m_Signature == null) + { + m_Signature = ""; + } - m_Signature = m_Signature.Trim(); - } + m_Signature = m_Signature.Trim(); + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Nodes/CleanupNode.cs b/Prebuild/src/Core/Nodes/CleanupNode.cs index b8131b0ebb..ea9c881472 100644 --- a/Prebuild/src/Core/Nodes/CleanupNode.cs +++ b/Prebuild/src/Core/Nodes/CleanupNode.cs @@ -35,40 +35,40 @@ namespace Prebuild.Core.Nodes [DataNode("Cleanup")] public class CleanupNode : DataNode { - #region Fields + #region Fields - private List m_CleanFiles = new List(); + private List m_CleanFiles = new List(); - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the signature. - /// - /// The signature. + /// + /// Gets the signature. + /// + /// The signature. public List CleanFiles - { - get - { - return m_CleanFiles; - } - } + { + get + { + return m_CleanFiles; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } foreach (XmlNode child in node.ChildNodes) { @@ -78,8 +78,8 @@ namespace Prebuild.Core.Nodes m_CleanFiles.Add((CleanFilesNode)dataNode); } } - } + } - #endregion + #endregion } } \ No newline at end of file diff --git a/Prebuild/src/Core/Nodes/ConfigurationNode.cs b/Prebuild/src/Core/Nodes/ConfigurationNode.cs index cd2f740ae7..11abdd88bb 100644 --- a/Prebuild/src/Core/Nodes/ConfigurationNode.cs +++ b/Prebuild/src/Core/Nodes/ConfigurationNode.cs @@ -32,194 +32,194 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("Configuration")] - public class ConfigurationNode : DataNode, ICloneable, IComparable - { - #region Fields + /// + /// + /// + [DataNode("Configuration")] + public class ConfigurationNode : DataNode, ICloneable, IComparable + { + #region Fields - private string m_Name = "unknown"; - private string m_Platform = "AnyCPU"; - private OptionsNode m_Options; + private string m_Name = "unknown"; + private string m_Platform = "AnyCPU"; + private OptionsNode m_Options; - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - public ConfigurationNode() - { - m_Options = new OptionsNode(); - } + /// + /// Initializes a new instance of the class. + /// + public ConfigurationNode() + { + m_Options = new OptionsNode(); + } - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets or sets the parent. - /// - /// The parent. - public override IDataNode Parent - { - get - { - return base.Parent; - } - set - { - base.Parent = value; - if(base.Parent is SolutionNode) - { - SolutionNode node = (SolutionNode)base.Parent; - if(node != null && node.Options != null) - { - node.Options.CopyTo(m_Options); - } - } - } - } + /// + /// Gets or sets the parent. + /// + /// The parent. + public override IDataNode Parent + { + get + { + return base.Parent; + } + set + { + base.Parent = value; + if (base.Parent is SolutionNode) + { + SolutionNode node = (SolutionNode)base.Parent; + if (node != null && node.Options != null) + { + node.Options.CopyTo(m_Options); + } + } + } + } - /// - /// Identifies the platform for this specific configuration. - /// - public string Platform - { - get - { - return m_Platform; - } - set - { - switch ((value + "").ToLower()) - { - case "x86": - case "x64": - m_Platform = value; - break; - case "itanium": - m_Platform = "Itanium"; - break; - default: - m_Platform = "AnyCPU"; - break; - } - } - } + /// + /// Identifies the platform for this specific configuration. + /// + public string Platform + { + get + { + return m_Platform; + } + set + { + switch ((value + "").ToLower()) + { + case "x86": + case "x64": + m_Platform = value; + break; + case "itanium": + m_Platform = "Itanium"; + break; + default: + m_Platform = "AnyCPU"; + break; + } + } + } - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return m_Name; - } - } + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return m_Name; + } + } - /// - /// Gets the name and platform for the configuration. - /// - /// The name and platform. - public string NameAndPlatform - { - get - { + /// + /// Gets the name and platform for the configuration. + /// + /// The name and platform. + public string NameAndPlatform + { + get + { string platform = m_Platform; if (platform == "AnyCPU") platform = "Any CPU"; - return String.Format("{0}|{1}", m_Name, platform); - } - } + return String.Format("{0}|{1}", m_Name, platform); + } + } - /// - /// Gets or sets the options. - /// - /// The options. - public OptionsNode Options - { - get - { - return m_Options; - } - set - { - m_Options = value; - } - } + /// + /// Gets or sets the options. + /// + /// The options. + public OptionsNode Options + { + get + { + return m_Options; + } + set + { + m_Options = value; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - m_Name = Helper.AttributeValue(node, "name", m_Name); - Platform = Helper.AttributeValue(node, "platform", m_Platform); + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + m_Name = Helper.AttributeValue(node, "name", m_Name); + Platform = Helper.AttributeValue(node, "platform", m_Platform); - if (node == null) - { - throw new ArgumentNullException("node"); - } - foreach(XmlNode child in node.ChildNodes) - { - IDataNode dataNode = Kernel.Instance.ParseNode(child, this); - if(dataNode is OptionsNode) - { - ((OptionsNode)dataNode).CopyTo(m_Options); - } - } - } + if (node == null) + { + throw new ArgumentNullException("node"); + } + foreach (XmlNode child in node.ChildNodes) + { + IDataNode dataNode = Kernel.Instance.ParseNode(child, this); + if (dataNode is OptionsNode) + { + ((OptionsNode)dataNode).CopyTo(m_Options); + } + } + } - /// - /// Copies to. - /// - /// The conf. - public void CopyTo(ConfigurationNode conf) - { - m_Options.CopyTo(conf.m_Options); - } + /// + /// Copies to. + /// + /// The conf. + public void CopyTo(ConfigurationNode conf) + { + m_Options.CopyTo(conf.m_Options); + } - #endregion + #endregion - #region ICloneable Members + #region ICloneable Members - /// - /// Creates a new object that is a copy of the current instance. - /// - /// - /// A new object that is a copy of this instance. - /// - public object Clone() - { - ConfigurationNode ret = new ConfigurationNode(); - ret.m_Name = m_Name; - ret.m_Platform = m_Platform; - m_Options.CopyTo(ret.m_Options); - return ret; - } + /// + /// Creates a new object that is a copy of the current instance. + /// + /// + /// A new object that is a copy of this instance. + /// + public object Clone() + { + ConfigurationNode ret = new ConfigurationNode(); + ret.m_Name = m_Name; + ret.m_Platform = m_Platform; + m_Options.CopyTo(ret.m_Options); + return ret; + } - #endregion + #endregion #region IComparable Members public int CompareTo(object obj) { - ConfigurationNode that = (ConfigurationNode) obj; + ConfigurationNode that = (ConfigurationNode)obj; return this.m_Name.CompareTo(that.m_Name); } #endregion - } + } } diff --git a/Prebuild/src/Core/Nodes/ConfigurationNodeCollection.cs b/Prebuild/src/Core/Nodes/ConfigurationNodeCollection.cs index 1c38d9e443..e93b7e3a49 100644 --- a/Prebuild/src/Core/Nodes/ConfigurationNodeCollection.cs +++ b/Prebuild/src/Core/Nodes/ConfigurationNodeCollection.cs @@ -27,45 +27,45 @@ using System.Collections.Generic; namespace Prebuild.Core.Nodes { - /// - /// Implements a specialized list of configuration nodes which allows for lookup via - /// configuration name and platform. - /// - public class ConfigurationNodeCollection : List - { - #region Properties + /// + /// Implements a specialized list of configuration nodes which allows for lookup via + /// configuration name and platform. + /// + public class ConfigurationNodeCollection : List + { + #region Properties - public ConfigurationNode this[string nameAndPlatform] - { - get - { - foreach (ConfigurationNode configurationNode in this) - { - if (configurationNode.NameAndPlatform == nameAndPlatform) - { - return configurationNode; - } - } + public ConfigurationNode this[string nameAndPlatform] + { + get + { + foreach (ConfigurationNode configurationNode in this) + { + if (configurationNode.NameAndPlatform == nameAndPlatform) + { + return configurationNode; + } + } - return null; - } + return null; + } - set - { - // See if the node - ConfigurationNode configurationNode = this[nameAndPlatform]; + set + { + // See if the node + ConfigurationNode configurationNode = this[nameAndPlatform]; - if (configurationNode != null) - { - this[IndexOf(configurationNode)] = value; - } - else - { - Add(value); - } - } - } + if (configurationNode != null) + { + this[IndexOf(configurationNode)] = value; + } + else + { + Add(value); + } + } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Nodes/DataNode.cs b/Prebuild/src/Core/Nodes/DataNode.cs index 318b13ccb9..3fbe8daf49 100644 --- a/Prebuild/src/Core/Nodes/DataNode.cs +++ b/Prebuild/src/Core/Nodes/DataNode.cs @@ -32,86 +32,86 @@ using System.IO; namespace Prebuild.Core.Nodes { - /// - /// - /// - public abstract class DataNode : IDataNode - { - #region Fields + /// + /// + /// + public abstract class DataNode : IDataNode + { + #region Fields - private IDataNode parent; - string[] m_WebTypes = new string[] { "aspx", "ascx", "master", "ashx", "asmx" }; + private IDataNode parent; + string[] m_WebTypes = new string[] { "aspx", "ascx", "master", "ashx", "asmx" }; - #endregion + #endregion - #region IDataNode Members + #region IDataNode Members - /// - /// Gets or sets the parent. - /// - /// The parent. - public virtual IDataNode Parent - { - get - { - return parent; - } - set - { - parent = value; - } - } - public string[] WebTypes - { - get { return m_WebTypes; } - } - /// - /// Parses the specified node. - /// - /// The node. - public virtual void Parse(XmlNode node) - { - } - public BuildAction GetBuildActionByFileName(string fileName) - { - string extension = Path.GetExtension(fileName).ToLower(); - foreach (string type in WebTypes) - { - if (extension == type) - return BuildAction.Content; - } - return BuildAction.Compile; - } - /// - /// Parses the file type to figure out what type it is - /// - /// - public SubType GetSubTypeByFileName(string fileName) - { - string extension = System.IO.Path.GetExtension(fileName).ToLower(); - string designer = String.Format(".designer{0}", extension); - string path = fileName.ToLower(); - if (extension == ".resx") - { - return SubType.Designer; - } - else if (path.EndsWith(".settings")) - { - return SubType.Settings; - } - else - { - - foreach (string type in WebTypes) - { + /// + /// Gets or sets the parent. + /// + /// The parent. + public virtual IDataNode Parent + { + get + { + return parent; + } + set + { + parent = value; + } + } + public string[] WebTypes + { + get { return m_WebTypes; } + } + /// + /// Parses the specified node. + /// + /// The node. + public virtual void Parse(XmlNode node) + { + } + public BuildAction GetBuildActionByFileName(string fileName) + { + string extension = Path.GetExtension(fileName).ToLower(); + foreach (string type in WebTypes) + { + if (extension == type) + return BuildAction.Content; + } + return BuildAction.Compile; + } + /// + /// Parses the file type to figure out what type it is + /// + /// + public SubType GetSubTypeByFileName(string fileName) + { + string extension = System.IO.Path.GetExtension(fileName).ToLower(); + string designer = String.Format(".designer{0}", extension); + string path = fileName.ToLower(); + if (extension == ".resx") + { + return SubType.Designer; + } + else if (path.EndsWith(".settings")) + { + return SubType.Settings; + } + else + { + + foreach (string type in WebTypes) + { if (path.EndsWith(type)) - { - return SubType.CodeBehind; - } - } - } - return SubType.Code; - } - #endregion - } + { + return SubType.CodeBehind; + } + } + } + return SubType.Code; + } + #endregion + } } diff --git a/Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs b/Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs index 845db24b12..974b74e67b 100644 --- a/Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs +++ b/Prebuild/src/Core/Nodes/DatabaseReferenceNode.cs @@ -43,18 +43,18 @@ namespace Prebuild.Core.Nodes providerId = new Guid("7F041D59-D76A-44ed-9AA2-FBF6B0548B80"); break; case "System.Data.OracleClient": providerId = new Guid("8F5C5018-AE09-42cf-B2CC-2CCCC7CFC2BB"); break; - case "System.Data.SqlClient": + case "System.Data.SqlClient": providerId = new Guid("91510608-8809-4020-8897-FBA057E22D54"); break; case "System.Data.Odbc": providerId = new Guid("C3D4F4CE-2C48-4381-B4D6-34FA50C51C86"); break; - + default: throw new ArgumentOutOfRangeException("providerName", providerName, "Could not provider name to an id."); } } else providerId = new Guid(Helper.AttributeValue(node, "providerId", Guid.Empty.ToString("B"))); - + connectionString = Helper.AttributeValue(node, "connectionString", connectionString); base.Parse(node); diff --git a/Prebuild/src/Core/Nodes/ExcludeNode.cs b/Prebuild/src/Core/Nodes/ExcludeNode.cs index 7f04cba72f..0b3693928d 100644 --- a/Prebuild/src/Core/Nodes/ExcludeNode.cs +++ b/Prebuild/src/Core/Nodes/ExcludeNode.cs @@ -32,31 +32,31 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("Exclude")] - public class ExcludeNode : DataNode - { - #region Fields + /// + /// + /// + [DataNode("Exclude")] + public class ExcludeNode : DataNode + { + #region Fields private string m_Pattern = ""; - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return m_Pattern; - } - } + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return m_Pattern; + } + } /// /// Gets the pattern. @@ -72,18 +72,18 @@ namespace Prebuild.Core.Nodes #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - m_Pattern = Helper.AttributeValue( node, "name", m_Pattern ); - m_Pattern = Helper.AttributeValue(node, "pattern", m_Pattern ); - } + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + m_Pattern = Helper.AttributeValue(node, "name", m_Pattern); + m_Pattern = Helper.AttributeValue(node, "pattern", m_Pattern); + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Nodes/FileNode.cs b/Prebuild/src/Core/Nodes/FileNode.cs index b313ffac75..e0fbb31f27 100644 --- a/Prebuild/src/Core/Nodes/FileNode.cs +++ b/Prebuild/src/Core/Nodes/FileNode.cs @@ -34,190 +34,190 @@ using Prebuild.Core.Targets; namespace Prebuild.Core.Nodes { - /// - /// - /// - public enum BuildAction - { - /// - /// - /// - None, - /// - /// - /// - Compile, - /// - /// - /// - Content, - /// - /// - /// - EmbeddedResource, - /// - /// - /// - ApplicationDefinition, - /// - /// - /// - Page, + /// + /// + /// + public enum BuildAction + { + /// + /// + /// + None, + /// + /// + /// + Compile, + /// + /// + /// + Content, + /// + /// + /// + EmbeddedResource, + /// + /// + /// + ApplicationDefinition, + /// + /// + /// + Page, /// /// /// Copy - } + } - /// - /// - /// - public enum SubType - { - /// - /// - /// - Code, - /// - /// - /// - Component, + /// + /// + /// + public enum SubType + { + /// + /// + /// + Code, + /// + /// + /// + Component, /// /// /// Designer, - /// - /// - /// - Form, - /// - /// - /// - Settings, - /// - /// - /// - UserControl, - /// - /// - /// - CodeBehind, - } + /// + /// + /// + Form, + /// + /// + /// + Settings, + /// + /// + /// + UserControl, + /// + /// + /// + CodeBehind, + } - public enum CopyToOutput - { - Never, - Always, - PreserveNewest - } + public enum CopyToOutput + { + Never, + Always, + PreserveNewest + } - /// - /// - /// - [DataNode("File")] - public class FileNode : DataNode - { - #region Fields + /// + /// + /// + [DataNode("File")] + public class FileNode : DataNode + { + #region Fields - private string m_Path; - private string m_ResourceName = ""; - private BuildAction? m_BuildAction; - private bool m_Valid; - private SubType? m_SubType; - private CopyToOutput m_CopyToOutput = CopyToOutput.Never; - private bool m_Link = false; - private string m_LinkPath = string.Empty; + private string m_Path; + private string m_ResourceName = ""; + private BuildAction? m_BuildAction; + private bool m_Valid; + private SubType? m_SubType; + private CopyToOutput m_CopyToOutput = CopyToOutput.Never; + private bool m_Link = false; + private string m_LinkPath = string.Empty; private bool m_PreservePath = false; - #endregion + #endregion - #region Properties + #region Properties - /// - /// - /// - public string Path - { - get - { - return m_Path; - } - } + /// + /// + /// + public string Path + { + get + { + return m_Path; + } + } - /// - /// - /// - public string ResourceName - { - get - { - return m_ResourceName; - } - } + /// + /// + /// + public string ResourceName + { + get + { + return m_ResourceName; + } + } - /// - /// - /// - public BuildAction BuildAction - { - get - { - if (m_BuildAction != null) - return m_BuildAction.Value; - else - return GetBuildActionByFileName(this.Path); + /// + /// + /// + public BuildAction BuildAction + { + get + { + if (m_BuildAction != null) + return m_BuildAction.Value; + else + return GetBuildActionByFileName(this.Path); - } - } + } + } - public CopyToOutput CopyToOutput - { - get - { - return this.m_CopyToOutput; - } - } + public CopyToOutput CopyToOutput + { + get + { + return this.m_CopyToOutput; + } + } - public bool IsLink - { - get - { - return this.m_Link; - } - } + public bool IsLink + { + get + { + return this.m_Link; + } + } - public string LinkPath - { - get - { - return this.m_LinkPath; - } - } - /// - /// - /// - public SubType SubType - { - get - { - if (m_SubType != null) - return m_SubType.Value; - else - return GetSubTypeByFileName(this.Path); - } - } + public string LinkPath + { + get + { + return this.m_LinkPath; + } + } + /// + /// + /// + public SubType SubType + { + get + { + if (m_SubType != null) + return m_SubType.Value; + else + return GetSubTypeByFileName(this.Path); + } + } - /// - /// - /// - public bool IsValid - { - get - { - return m_Valid; - } - } + /// + /// + /// + public bool IsValid + { + get + { + return m_Valid; + } + } /// /// @@ -232,61 +232,61 @@ namespace Prebuild.Core.Nodes } } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// - /// - /// - public override void Parse(XmlNode node) - { - string buildAction = Helper.AttributeValue(node, "buildAction", String.Empty); - if (buildAction != string.Empty) - m_BuildAction = (BuildAction)Enum.Parse(typeof(BuildAction), buildAction); - string subType = Helper.AttributeValue(node, "subType", string.Empty); - if (subType != String.Empty) - m_SubType = (SubType)Enum.Parse(typeof(SubType), subType); + /// + /// + /// + /// + public override void Parse(XmlNode node) + { + string buildAction = Helper.AttributeValue(node, "buildAction", String.Empty); + if (buildAction != string.Empty) + m_BuildAction = (BuildAction)Enum.Parse(typeof(BuildAction), buildAction); + string subType = Helper.AttributeValue(node, "subType", string.Empty); + if (subType != String.Empty) + m_SubType = (SubType)Enum.Parse(typeof(SubType), subType); Console.WriteLine("[FileNode]:BuildAction is {0}", buildAction); - m_ResourceName = Helper.AttributeValue(node, "resourceName", m_ResourceName.ToString()); - this.m_Link = bool.Parse(Helper.AttributeValue(node, "link", bool.FalseString)); - if ( this.m_Link == true ) - { - this.m_LinkPath = Helper.AttributeValue( node, "linkPath", string.Empty ); - } - this.m_CopyToOutput = (CopyToOutput) Enum.Parse(typeof(CopyToOutput), Helper.AttributeValue(node, "copyToOutput", this.m_CopyToOutput.ToString())); - this.m_PreservePath = bool.Parse( Helper.AttributeValue( node, "preservePath", bool.FalseString ) ); + m_ResourceName = Helper.AttributeValue(node, "resourceName", m_ResourceName.ToString()); + this.m_Link = bool.Parse(Helper.AttributeValue(node, "link", bool.FalseString)); + if (this.m_Link == true) + { + this.m_LinkPath = Helper.AttributeValue(node, "linkPath", string.Empty); + } + this.m_CopyToOutput = (CopyToOutput)Enum.Parse(typeof(CopyToOutput), Helper.AttributeValue(node, "copyToOutput", this.m_CopyToOutput.ToString())); + this.m_PreservePath = bool.Parse(Helper.AttributeValue(node, "preservePath", bool.FalseString)); - if( node == null ) - { - throw new ArgumentNullException("node"); - } + if (node == null) + { + throw new ArgumentNullException("node"); + } - m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText); - if(m_Path == null) - { - m_Path = ""; - } + m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText); + if (m_Path == null) + { + m_Path = ""; + } - m_Path = m_Path.Trim(); - m_Valid = true; - if(!File.Exists(m_Path)) - { - m_Valid = false; - Kernel.Instance.Log.Write(LogType.Warning, "File does not exist: {0}", m_Path); - } + m_Path = m_Path.Trim(); + m_Valid = true; + if (!File.Exists(m_Path)) + { + m_Valid = false; + Kernel.Instance.Log.Write(LogType.Warning, "File does not exist: {0}", m_Path); + } if (System.IO.Path.GetExtension(m_Path) == ".settings") { m_SubType = SubType.Settings; m_BuildAction = BuildAction.None; } - } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Nodes/FilesNode.cs b/Prebuild/src/Core/Nodes/FilesNode.cs index 16658f38f2..48643347f6 100644 --- a/Prebuild/src/Core/Nodes/FilesNode.cs +++ b/Prebuild/src/Core/Nodes/FilesNode.cs @@ -34,36 +34,36 @@ using System.IO; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("Files")] - public class FilesNode : DataNode - { - #region Fields + /// + /// + /// + [DataNode("Files")] + public class FilesNode : DataNode + { + #region Fields - private readonly List m_Files = new List(); - private readonly Dictionary m_BuildActions = new Dictionary(); - private readonly Dictionary m_SubTypes = new Dictionary(); - private readonly Dictionary m_ResourceNames = new Dictionary(); - private readonly Dictionary m_CopyToOutputs = new Dictionary(); - private readonly Dictionary m_Links = new Dictionary(); - private readonly Dictionary m_LinkPaths = new Dictionary(); + private readonly List m_Files = new List(); + private readonly Dictionary m_BuildActions = new Dictionary(); + private readonly Dictionary m_SubTypes = new Dictionary(); + private readonly Dictionary m_ResourceNames = new Dictionary(); + private readonly Dictionary m_CopyToOutputs = new Dictionary(); + private readonly Dictionary m_Links = new Dictionary(); + private readonly Dictionary m_LinkPaths = new Dictionary(); private readonly Dictionary m_PreservePaths = new Dictionary(); private readonly Dictionary m_DestinationPath = new Dictionary(); private readonly NameValueCollection m_CopyFiles = new NameValueCollection(); - #endregion + #endregion - #region Properties + #region Properties - public int Count - { - get - { - return m_Files.Count; - } - } + public int Count + { + get + { + return m_Files.Count; + } + } public string[] Destinations { @@ -75,23 +75,23 @@ namespace Prebuild.Core.Nodes get { return m_CopyFiles.Count; } } - #endregion + #endregion - #region Public Methods + #region Public Methods - public BuildAction GetBuildAction(string file) - { - if(!m_BuildActions.ContainsKey(file)) - { - return BuildAction.Compile; - } + public BuildAction GetBuildAction(string file) + { + if (!m_BuildActions.ContainsKey(file)) + { + return BuildAction.Compile; + } - return m_BuildActions[file]; - } + return m_BuildActions[file]; + } public string GetDestinationPath(string file) { - if( !m_DestinationPath.ContainsKey(file)) + if (!m_DestinationPath.ContainsKey(file)) { return null; } @@ -103,107 +103,107 @@ namespace Prebuild.Core.Nodes return m_CopyFiles.GetValues(dest); } - public CopyToOutput GetCopyToOutput(string file) - { - if (!m_CopyToOutputs.ContainsKey(file)) - { - return CopyToOutput.Never; - } - return m_CopyToOutputs[file]; - } + public CopyToOutput GetCopyToOutput(string file) + { + if (!m_CopyToOutputs.ContainsKey(file)) + { + return CopyToOutput.Never; + } + return m_CopyToOutputs[file]; + } - public bool GetIsLink(string file) - { - if (!m_Links.ContainsKey(file)) - { - return false; - } - return m_Links[file]; - } + public bool GetIsLink(string file) + { + if (!m_Links.ContainsKey(file)) + { + return false; + } + return m_Links[file]; + } public bool Contains(string file) { return m_Files.Contains(file); } - public string GetLinkPath( string file ) - { - if ( !m_LinkPaths.ContainsKey( file ) ) - { - return string.Empty; - } - return m_LinkPaths[ file ]; - } - - public SubType GetSubType(string file) - { - if(!m_SubTypes.ContainsKey(file)) - { - return SubType.Code; - } - - return m_SubTypes[file]; - } - - public string GetResourceName(string file) - { - if(!m_ResourceNames.ContainsKey(file)) - { - return string.Empty; - } - - return m_ResourceNames[file]; - } - - public bool GetPreservePath( string file ) + public string GetLinkPath(string file) { - if ( !m_PreservePaths.ContainsKey( file ) ) + if (!m_LinkPaths.ContainsKey(file)) + { + return string.Empty; + } + return m_LinkPaths[file]; + } + + public SubType GetSubType(string file) + { + if (!m_SubTypes.ContainsKey(file)) + { + return SubType.Code; + } + + return m_SubTypes[file]; + } + + public string GetResourceName(string file) + { + if (!m_ResourceNames.ContainsKey(file)) + { + return string.Empty; + } + + return m_ResourceNames[file]; + } + + public bool GetPreservePath(string file) + { + if (!m_PreservePaths.ContainsKey(file)) { return false; } - return m_PreservePaths[ file ]; + return m_PreservePaths[file]; } - public override void Parse(XmlNode node) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } - foreach(XmlNode child in node.ChildNodes) - { - IDataNode dataNode = Kernel.Instance.ParseNode(child, this); - if(dataNode is FileNode) - { - FileNode fileNode = (FileNode)dataNode; - if(fileNode.IsValid) - { - if (!m_Files.Contains(fileNode.Path)) - { - m_Files.Add(fileNode.Path); - m_BuildActions[fileNode.Path] = fileNode.BuildAction; - m_SubTypes[fileNode.Path] = fileNode.SubType; - m_ResourceNames[fileNode.Path] = fileNode.ResourceName; - m_PreservePaths[ fileNode.Path ] = fileNode.PreservePath; - m_Links[ fileNode.Path ] = fileNode.IsLink; - m_LinkPaths[ fileNode.Path ] = fileNode.LinkPath; - m_CopyToOutputs[ fileNode.Path ] = fileNode.CopyToOutput; + public override void Parse(XmlNode node) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } + foreach (XmlNode child in node.ChildNodes) + { + IDataNode dataNode = Kernel.Instance.ParseNode(child, this); + if (dataNode is FileNode) + { + FileNode fileNode = (FileNode)dataNode; + if (fileNode.IsValid) + { + if (!m_Files.Contains(fileNode.Path)) + { + m_Files.Add(fileNode.Path); + m_BuildActions[fileNode.Path] = fileNode.BuildAction; + m_SubTypes[fileNode.Path] = fileNode.SubType; + m_ResourceNames[fileNode.Path] = fileNode.ResourceName; + m_PreservePaths[fileNode.Path] = fileNode.PreservePath; + m_Links[fileNode.Path] = fileNode.IsLink; + m_LinkPaths[fileNode.Path] = fileNode.LinkPath; + m_CopyToOutputs[fileNode.Path] = fileNode.CopyToOutput; - } - } - } - else if(dataNode is MatchNode) - { - foreach(string file in ((MatchNode)dataNode).Files) - { + } + } + } + else if (dataNode is MatchNode) + { + foreach (string file in ((MatchNode)dataNode).Files) + { MatchNode matchNode = (MatchNode)dataNode; - if (!m_Files.Contains(file)) - { - m_Files.Add(file); - if (matchNode.BuildAction == null) + if (!m_Files.Contains(file)) + { + m_Files.Add(file); + if (matchNode.BuildAction == null) m_BuildActions[file] = GetBuildActionByFileName(file); - else + else m_BuildActions[file] = matchNode.BuildAction.Value; if (matchNode.BuildAction == BuildAction.Copy) @@ -212,27 +212,27 @@ namespace Prebuild.Core.Nodes m_DestinationPath[file] = matchNode.DestinationPath; } - m_SubTypes[file] = matchNode.SubType == null ? GetSubTypeByFileName(file) : matchNode.SubType.Value; - m_ResourceNames[ file ] = matchNode.ResourceName; - m_PreservePaths[ file ] = matchNode.PreservePath; - m_Links[ file ] = matchNode.IsLink; - m_LinkPaths[ file ] = matchNode.LinkPath; - m_CopyToOutputs[ file ] = matchNode.CopyToOutput; + m_SubTypes[file] = matchNode.SubType == null ? GetSubTypeByFileName(file) : matchNode.SubType.Value; + m_ResourceNames[file] = matchNode.ResourceName; + m_PreservePaths[file] = matchNode.PreservePath; + m_Links[file] = matchNode.IsLink; + m_LinkPaths[file] = matchNode.LinkPath; + m_CopyToOutputs[file] = matchNode.CopyToOutput; - } - } - } - } - } + } + } + } + } + } - // TODO: Check in to why StringCollection's enumerator doesn't implement - // IEnumerator? - public IEnumerator GetEnumerator() - { - return m_Files.GetEnumerator(); - } + // TODO: Check in to why StringCollection's enumerator doesn't implement + // IEnumerator? + public IEnumerator GetEnumerator() + { + return m_Files.GetEnumerator(); + } - #endregion + #endregion } } diff --git a/Prebuild/src/Core/Nodes/MatchNode.cs b/Prebuild/src/Core/Nodes/MatchNode.cs index 000bde93c4..cc66767260 100644 --- a/Prebuild/src/Core/Nodes/MatchNode.cs +++ b/Prebuild/src/Core/Nodes/MatchNode.cs @@ -35,51 +35,51 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("Match")] - public class MatchNode : DataNode - { - #region Fields + /// + /// + /// + [DataNode("Match")] + public class MatchNode : DataNode + { + #region Fields private readonly List m_Files = new List(); - private Regex m_Regex; - private BuildAction? m_BuildAction; - private SubType? m_SubType; - string m_ResourceName = ""; - private CopyToOutput m_CopyToOutput; - private bool m_Link; - private string m_LinkPath; + private Regex m_Regex; + private BuildAction? m_BuildAction; + private SubType? m_SubType; + string m_ResourceName = ""; + private CopyToOutput m_CopyToOutput; + private bool m_Link; + private string m_LinkPath; private bool m_PreservePath; private string m_Destination = ""; private readonly List m_Exclusions = new List(); - #endregion + #endregion - #region Properties + #region Properties - /// - /// - /// - public IEnumerable Files - { - get - { - return m_Files; - } - } + /// + /// + /// + public IEnumerable Files + { + get + { + return m_Files; + } + } - /// - /// - /// - public BuildAction? BuildAction - { - get - { - return m_BuildAction; - } - } + /// + /// + /// + public BuildAction? BuildAction + { + get + { + return m_BuildAction; + } + } public string DestinationPath { @@ -88,50 +88,50 @@ namespace Prebuild.Core.Nodes return m_Destination; } } - /// - /// - /// - public SubType? SubType - { - get - { - return m_SubType; - } - } + /// + /// + /// + public SubType? SubType + { + get + { + return m_SubType; + } + } - public CopyToOutput CopyToOutput - { - get - { - return m_CopyToOutput; - } - } + public CopyToOutput CopyToOutput + { + get + { + return m_CopyToOutput; + } + } - public bool IsLink - { - get - { - return m_Link; - } - } + public bool IsLink + { + get + { + return m_Link; + } + } - public string LinkPath - { - get - { - return m_LinkPath; - } - } - /// - /// - /// - public string ResourceName - { - get - { - return m_ResourceName; - } - } + public string LinkPath + { + get + { + return m_LinkPath; + } + } + /// + /// + /// + public string ResourceName + { + get + { + return m_ResourceName; + } + } public bool PreservePath { @@ -141,27 +141,27 @@ namespace Prebuild.Core.Nodes } } - #endregion + #endregion - #region Private Methods + #region Private Methods - /// - /// Recurses the directories. - /// - /// The path. - /// The pattern. - /// if set to true [recurse]. - /// if set to true [use regex]. - private void RecurseDirectories(string path, string pattern, bool recurse, bool useRegex, List exclusions) - { - Match match; - try - { - string[] files; + /// + /// Recurses the directories. + /// + /// The path. + /// The pattern. + /// if set to true [recurse]. + /// if set to true [use regex]. + private void RecurseDirectories(string path, string pattern, bool recurse, bool useRegex, List exclusions) + { + Match match; + try + { + string[] files; - Boolean excludeFile; - if(!useRegex) - { + Boolean excludeFile; + if (!useRegex) + { try { files = Directory.GetFiles(path, pattern); @@ -177,46 +177,46 @@ namespace Prebuild.Core.Nodes files = null; } - if(files != null) - { - foreach (string file in files) - { + if (files != null) + { + foreach (string file in files) + { excludeFile = false; - string fileTemp; - if (file.Substring(0,2) == "./" || file.Substring(0,2) == ".\\") - { - fileTemp = file.Substring(2); - } - else - { - fileTemp = file; - } + string fileTemp; + if (file.Substring(0, 2) == "./" || file.Substring(0, 2) == ".\\") + { + fileTemp = file.Substring(2); + } + else + { + fileTemp = file; + } // Check all excludions and set flag if there are any hits. - foreach ( ExcludeNode exclude in exclusions ) + foreach (ExcludeNode exclude in exclusions) { - Regex exRegEx = new Regex( exclude.Pattern ); - match = exRegEx.Match( file ); + Regex exRegEx = new Regex(exclude.Pattern); + match = exRegEx.Match(file); excludeFile |= match.Success; } - if ( !excludeFile ) + if (!excludeFile) { - m_Files.Add( fileTemp ); + m_Files.Add(fileTemp); } - } - } + } + } // don't call return here, because we may need to recursively search directories below // this one, even if no matches were found in this directory. - } - else - { - try - { - files = Directory.GetFiles(path); - } + } + else + { + try + { + files = Directory.GetFiles(path); + } catch (IOException) { // swallow weird IOException error when running in a virtual box @@ -248,12 +248,12 @@ namespace Prebuild.Core.Nodes } } } - } - - if(recurse) - { - string[] dirs = Directory.GetDirectories(path); - if(dirs != null && dirs.Length > 0) + } + + if (recurse) + { + string[] dirs = Directory.GetDirectories(path); + if (dirs != null && dirs.Length > 0) { foreach (string str in dirs) { @@ -265,98 +265,98 @@ namespace Prebuild.Core.Nodes RecurseDirectories(Helper.NormalizePath(str), pattern, recurse, useRegex, exclusions); } } - } - } - catch(DirectoryNotFoundException) - { - return; - } - catch(ArgumentException) - { - return; - } - } + } + } + catch (DirectoryNotFoundException) + { + return; + } + catch (ArgumentException) + { + return; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// - /// - /// - public override void Parse(XmlNode node) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } - string path = Helper.AttributeValue(node, "path", "."); - string pattern = Helper.AttributeValue(node, "pattern", "*"); + /// + /// + /// + /// + public override void Parse(XmlNode node) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } + string path = Helper.AttributeValue(node, "path", "."); + string pattern = Helper.AttributeValue(node, "pattern", "*"); string destination = Helper.AttributeValue(node, "destination", string.Empty); - bool recurse = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "recurse", "false")); - bool useRegex = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "useRegex", "false")); - string buildAction = Helper.AttributeValue(node, "buildAction", String.Empty); - if (buildAction != string.Empty) - m_BuildAction = (BuildAction)Enum.Parse(typeof(BuildAction), buildAction); + bool recurse = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "recurse", "false")); + bool useRegex = (bool)Helper.TranslateValue(typeof(bool), Helper.AttributeValue(node, "useRegex", "false")); + string buildAction = Helper.AttributeValue(node, "buildAction", String.Empty); + if (buildAction != string.Empty) + m_BuildAction = (BuildAction)Enum.Parse(typeof(BuildAction), buildAction); - //TODO: Figure out where the subtype node is being assigned - //string subType = Helper.AttributeValue(node, "subType", string.Empty); - //if (subType != String.Empty) - // m_SubType = (SubType)Enum.Parse(typeof(SubType), subType); - m_ResourceName = Helper.AttributeValue(node, "resourceName", m_ResourceName); - m_CopyToOutput = (CopyToOutput) Enum.Parse(typeof(CopyToOutput), Helper.AttributeValue(node, "copyToOutput", m_CopyToOutput.ToString())); - m_Link = bool.Parse(Helper.AttributeValue(node, "link", bool.FalseString)); - if ( m_Link ) - { - m_LinkPath = Helper.AttributeValue( node, "linkPath", string.Empty ); - } - m_PreservePath = bool.Parse( Helper.AttributeValue( node, "preservePath", bool.FalseString ) ); + //TODO: Figure out where the subtype node is being assigned + //string subType = Helper.AttributeValue(node, "subType", string.Empty); + //if (subType != String.Empty) + // m_SubType = (SubType)Enum.Parse(typeof(SubType), subType); + m_ResourceName = Helper.AttributeValue(node, "resourceName", m_ResourceName); + m_CopyToOutput = (CopyToOutput)Enum.Parse(typeof(CopyToOutput), Helper.AttributeValue(node, "copyToOutput", m_CopyToOutput.ToString())); + m_Link = bool.Parse(Helper.AttributeValue(node, "link", bool.FalseString)); + if (m_Link) + { + m_LinkPath = Helper.AttributeValue(node, "linkPath", string.Empty); + } + m_PreservePath = bool.Parse(Helper.AttributeValue(node, "preservePath", bool.FalseString)); - if ( buildAction == "Copy") + if (buildAction == "Copy") m_Destination = destination; - if(path != null && path.Length == 0) - path = ".";//use current directory - - //throw new WarningException("Match must have a 'path' attribute"); + if (path != null && path.Length == 0) + path = ".";//use current directory - if(pattern == null) - { - throw new WarningException("Match must have a 'pattern' attribute"); - } + //throw new WarningException("Match must have a 'path' attribute"); - path = Helper.NormalizePath(path); - if(!Directory.Exists(path)) - { - throw new WarningException("Match path does not exist: {0}", path); - } + if (pattern == null) + { + throw new WarningException("Match must have a 'pattern' attribute"); + } - try - { - if(useRegex) - { - m_Regex = new Regex(pattern); - } - } - catch(ArgumentException ex) - { - throw new WarningException("Could not compile regex pattern: {0}", ex.Message); - } + path = Helper.NormalizePath(path); + if (!Directory.Exists(path)) + { + throw new WarningException("Match path does not exist: {0}", path); + } + + try + { + if (useRegex) + { + m_Regex = new Regex(pattern); + } + } + catch (ArgumentException ex) + { + throw new WarningException("Could not compile regex pattern: {0}", ex.Message); + } - foreach(XmlNode child in node.ChildNodes) - { - IDataNode dataNode = Kernel.Instance.ParseNode(child, this); - if(dataNode is ExcludeNode) - { - ExcludeNode excludeNode = (ExcludeNode)dataNode; - m_Exclusions.Add( excludeNode ); - } - } + foreach (XmlNode child in node.ChildNodes) + { + IDataNode dataNode = Kernel.Instance.ParseNode(child, this); + if (dataNode is ExcludeNode) + { + ExcludeNode excludeNode = (ExcludeNode)dataNode; + m_Exclusions.Add(excludeNode); + } + } - RecurseDirectories( path, pattern, recurse, useRegex, m_Exclusions ); + RecurseDirectories(path, pattern, recurse, useRegex, m_Exclusions); if (m_Files.Count < 1) { @@ -371,8 +371,8 @@ namespace Prebuild.Core.Nodes throw new WarningException("Match" + projectName + " returned no files: {0}{1}", Helper.EndPath(path), pattern); } m_Regex = null; - } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Nodes/OptionsNode.cs b/Prebuild/src/Core/Nodes/OptionsNode.cs index a562acf5b6..3ec3732dd9 100755 --- a/Prebuild/src/Core/Nodes/OptionsNode.cs +++ b/Prebuild/src/Core/Nodes/OptionsNode.cs @@ -35,339 +35,339 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("Options")] - public class OptionsNode : DataNode - { - #region Fields + /// + /// + /// + [DataNode("Options")] + public class OptionsNode : DataNode + { + #region Fields - private static readonly Dictionary m_OptionFields = new Dictionary(); + private static readonly Dictionary m_OptionFields = new Dictionary(); - [OptionNode("CompilerDefines")] - private string m_CompilerDefines = ""; + [OptionNode("CompilerDefines")] + private string m_CompilerDefines = ""; - /// - /// - /// - public string CompilerDefines - { - get - { - return m_CompilerDefines; - } - set - { - m_CompilerDefines = value; - } - } - - [OptionNode("OptimizeCode")] - private bool m_OptimizeCode; + /// + /// + /// + public string CompilerDefines + { + get + { + return m_CompilerDefines; + } + set + { + m_CompilerDefines = value; + } + } - /// - /// - /// - public bool OptimizeCode - { - get - { - return m_OptimizeCode; - } - set - { - m_OptimizeCode = value; - } - } - - [OptionNode("CheckUnderflowOverflow")] - private bool m_CheckUnderflowOverflow; + [OptionNode("OptimizeCode")] + private bool m_OptimizeCode; - /// - /// - /// - public bool CheckUnderflowOverflow - { - get - { - return m_CheckUnderflowOverflow; - } - set - { - m_CheckUnderflowOverflow = value; - } - } - - [OptionNode("AllowUnsafe")] - private bool m_AllowUnsafe; + /// + /// + /// + public bool OptimizeCode + { + get + { + return m_OptimizeCode; + } + set + { + m_OptimizeCode = value; + } + } - /// - /// - /// - public bool AllowUnsafe - { - get - { - return m_AllowUnsafe; - } - set - { - m_AllowUnsafe = value; - } - } - - [OptionNode("PreBuildEvent")] - private string m_PreBuildEvent; - - /// - /// - /// - public string PreBuildEvent - { - get - { - return m_PreBuildEvent; - } - set - { - m_PreBuildEvent = value; - } - } - - [OptionNode("PostBuildEvent")] - private string m_PostBuildEvent; - - /// - /// - /// - public string PostBuildEvent - { - get - { - return m_PostBuildEvent; - } - set - { - m_PostBuildEvent = value; - } - } - - [OptionNode("PreBuildEventArgs")] - private string m_PreBuildEventArgs; - - /// - /// - /// - public string PreBuildEventArgs - { - get - { - return m_PreBuildEventArgs; - } - set - { - m_PreBuildEventArgs = value; - } - } - - [OptionNode("PostBuildEventArgs")] - private string m_PostBuildEventArgs; - - /// - /// - /// - public string PostBuildEventArgs - { - get - { - return m_PostBuildEventArgs; - } - set - { - m_PostBuildEventArgs = value; - } - } - - [OptionNode("RunPostBuildEvent")] - private string m_RunPostBuildEvent; - - /// - /// - /// - public string RunPostBuildEvent - { - get - { - return m_RunPostBuildEvent; - } - set - { - m_RunPostBuildEvent = value; - } - } - - [OptionNode("RunScript")] - private string m_RunScript; - - /// - /// - /// - public string RunScript - { - get - { - return m_RunScript; - } - set - { - m_RunScript = value; - } - } - - [OptionNode("WarningLevel")] - private int m_WarningLevel = 4; + [OptionNode("CheckUnderflowOverflow")] + private bool m_CheckUnderflowOverflow; - /// - /// - /// - public int WarningLevel - { - get - { - return m_WarningLevel; - } - set - { - m_WarningLevel = value; - } - } - - [OptionNode("WarningsAsErrors")] - private bool m_WarningsAsErrors; + /// + /// + /// + public bool CheckUnderflowOverflow + { + get + { + return m_CheckUnderflowOverflow; + } + set + { + m_CheckUnderflowOverflow = value; + } + } - /// - /// - /// - public bool WarningsAsErrors - { - get - { - return m_WarningsAsErrors; - } - set - { - m_WarningsAsErrors = value; - } - } + [OptionNode("AllowUnsafe")] + private bool m_AllowUnsafe; - [OptionNode("SuppressWarnings")] - private string m_SuppressWarnings = ""; + /// + /// + /// + public bool AllowUnsafe + { + get + { + return m_AllowUnsafe; + } + set + { + m_AllowUnsafe = value; + } + } - /// - /// - /// - public string SuppressWarnings - { - get - { - return m_SuppressWarnings; - } - set - { - m_SuppressWarnings = value; - } - } + [OptionNode("PreBuildEvent")] + private string m_PreBuildEvent; - [OptionNode("Prefer32Bit")] - private bool m_Prefer32Bit; + /// + /// + /// + public string PreBuildEvent + { + get + { + return m_PreBuildEvent; + } + set + { + m_PreBuildEvent = value; + } + } - /// - /// - /// - public bool Prefer32Bit - { - get - { - return m_Prefer32Bit; - } - set - { - m_Prefer32Bit = value; - } - } - - [OptionNode("OutDir")] - private string m_OutDir = "bin/"; + [OptionNode("PostBuildEvent")] + private string m_PostBuildEvent; - /// - /// - /// - public string OutDir - { - get - { - return m_OutDir; - } - set - { - m_OutDir = value; - } - } + /// + /// + /// + public string PostBuildEvent + { + get + { + return m_PostBuildEvent; + } + set + { + m_PostBuildEvent = value; + } + } - [OptionNode("OutputPath")] - private string m_OutputPath = "bin/"; + [OptionNode("PreBuildEventArgs")] + private string m_PreBuildEventArgs; - /// - /// - /// - public string OutputPath - { - get - { - return m_OutputPath; - } - set - { - m_OutputPath = value; - } - } + /// + /// + /// + public string PreBuildEventArgs + { + get + { + return m_PreBuildEventArgs; + } + set + { + m_PreBuildEventArgs = value; + } + } - [OptionNode("OutputType")] - private string m_OutputType = "Exe"; + [OptionNode("PostBuildEventArgs")] + private string m_PostBuildEventArgs; - /// - /// - /// - public string OutputType - { - get - { - return m_OutputType; - } - set - { - m_OutputType = value; - } - } + /// + /// + /// + public string PostBuildEventArgs + { + get + { + return m_PostBuildEventArgs; + } + set + { + m_PostBuildEventArgs = value; + } + } - [OptionNode("RootNamespace")] - private string m_RootNamespace = ""; + [OptionNode("RunPostBuildEvent")] + private string m_RunPostBuildEvent; - /// - /// - /// - public string RootNamespace - { - get - { - return m_RootNamespace; - } - set - { - m_RootNamespace = value; - } - } + /// + /// + /// + public string RunPostBuildEvent + { + get + { + return m_RunPostBuildEvent; + } + set + { + m_RunPostBuildEvent = value; + } + } + + [OptionNode("RunScript")] + private string m_RunScript; + + /// + /// + /// + public string RunScript + { + get + { + return m_RunScript; + } + set + { + m_RunScript = value; + } + } + + [OptionNode("WarningLevel")] + private int m_WarningLevel = 4; + + /// + /// + /// + public int WarningLevel + { + get + { + return m_WarningLevel; + } + set + { + m_WarningLevel = value; + } + } + + [OptionNode("WarningsAsErrors")] + private bool m_WarningsAsErrors; + + /// + /// + /// + public bool WarningsAsErrors + { + get + { + return m_WarningsAsErrors; + } + set + { + m_WarningsAsErrors = value; + } + } + + [OptionNode("SuppressWarnings")] + private string m_SuppressWarnings = ""; + + /// + /// + /// + public string SuppressWarnings + { + get + { + return m_SuppressWarnings; + } + set + { + m_SuppressWarnings = value; + } + } + + [OptionNode("Prefer32Bit")] + private bool m_Prefer32Bit; + + /// + /// + /// + public bool Prefer32Bit + { + get + { + return m_Prefer32Bit; + } + set + { + m_Prefer32Bit = value; + } + } + + [OptionNode("OutDir")] + private string m_OutDir = "bin/"; + + /// + /// + /// + public string OutDir + { + get + { + return m_OutDir; + } + set + { + m_OutDir = value; + } + } + + [OptionNode("OutputPath")] + private string m_OutputPath = "bin/"; + + /// + /// + /// + public string OutputPath + { + get + { + return m_OutputPath; + } + set + { + m_OutputPath = value; + } + } + + [OptionNode("OutputType")] + private string m_OutputType = "Exe"; + + /// + /// + /// + public string OutputType + { + get + { + return m_OutputType; + } + set + { + m_OutputType = value; + } + } + + [OptionNode("RootNamespace")] + private string m_RootNamespace = ""; + + /// + /// + /// + public string RootNamespace + { + get + { + return m_RootNamespace; + } + set + { + m_RootNamespace = value; + } + } [OptionNode("GenerateDocumentation")] private bool m_GenerateDocumentation; @@ -387,352 +387,353 @@ namespace Prebuild.Core.Nodes } } - [OptionNode("GenerateXmlDocFile")] - private bool m_GenerateXmlDocFile; + [OptionNode("GenerateXmlDocFile")] + private bool m_GenerateXmlDocFile; - /// - /// - /// - public bool GenerateXmlDocFile - { - get - { - return m_GenerateXmlDocFile; - } - set - { - m_GenerateXmlDocFile = value; - } - } - - [OptionNode("XmlDocFile")] - private string m_XmlDocFile = ""; - - /// - /// - /// - public string XmlDocFile - { - get - { - return m_XmlDocFile; - } - set - { - m_XmlDocFile = value; - } - } - - [OptionNode("KeyFile")] - private string m_KeyFile = ""; - - /// - /// - /// - public string KeyFile - { - get - { - return m_KeyFile; - } - set - { - m_KeyFile = value; - } - } - - [OptionNode("DebugInformation")] - private bool m_DebugInformation; - - /// - /// - /// - public bool DebugInformation - { - get - { - return m_DebugInformation; - } - set - { - m_DebugInformation = value; - } - } - - [OptionNode("RegisterComInterop")] - private bool m_RegisterComInterop; - - /// - /// - /// - public bool RegisterComInterop - { - get - { - return m_RegisterComInterop; - } - set - { - m_RegisterComInterop = value; - } - } - - [OptionNode("RemoveIntegerChecks")] - private bool m_RemoveIntegerChecks; - - /// - /// - /// - public bool RemoveIntegerChecks - { - get - { - return m_RemoveIntegerChecks; - } - set - { - m_RemoveIntegerChecks = value; - } - } - - [OptionNode("IncrementalBuild")] - private bool m_IncrementalBuild; - - /// - /// - /// - public bool IncrementalBuild - { - get - { - return m_IncrementalBuild; - } - set - { - m_IncrementalBuild = value; - } - } - - [OptionNode("BaseAddress")] - private string m_BaseAddress = "285212672"; - - /// - /// - /// - public string BaseAddress - { - get - { - return m_BaseAddress; - } - set - { - m_BaseAddress = value; - } - } - - [OptionNode("FileAlignment")] - private int m_FileAlignment = 4096; - - /// - /// - /// - public int FileAlignment - { - get - { - return m_FileAlignment; - } - set - { - m_FileAlignment = value; - } - } - - [OptionNode("NoStdLib")] - private bool m_NoStdLib; - - /// - /// - /// - public bool NoStdLib - { - get - { - return m_NoStdLib; - } - set - { - m_NoStdLib = value; - } - } - - private readonly List m_FieldsDefined = new List(); - - #endregion - - #region Constructors - - /// - /// Initializes the class. - /// - static OptionsNode() - { - Type t = typeof(OptionsNode); - - foreach(FieldInfo f in t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance)) - { - object[] attrs = f.GetCustomAttributes(typeof(OptionNodeAttribute), false); - if(attrs == null || attrs.Length < 1) - { - continue; - } - - OptionNodeAttribute ona = (OptionNodeAttribute)attrs[0]; - m_OptionFields[ona.NodeName] = f; - } - } - - #endregion - - #region Properties - - /// - /// Gets the at the specified index. - /// - /// - public object this[string index] - { - get - { - if(!m_OptionFields.ContainsKey(index)) - { - return null; - } - - FieldInfo f = m_OptionFields[index]; - return f.GetValue(this); - } - } - - /// - /// Gets the at the specified index. - /// - /// - public object this[string index, object defaultValue] - { - get - { - object valueObject = this[index]; - if(valueObject != null && valueObject is string && ((string)valueObject).Length == 0) - { - return defaultValue; - } - return valueObject; - } - } - - - #endregion - - #region Private Methods - - private void FlagDefined(string name) - { - if(!m_FieldsDefined.Contains(name)) - { - m_FieldsDefined.Add(name); - } - } - - private void SetOption(string nodeName, string val) - { - lock(m_OptionFields) - { - if(!m_OptionFields.ContainsKey(nodeName)) - { - return; - } - - FieldInfo f = m_OptionFields[nodeName]; - f.SetValue(this, Helper.TranslateValue(f.FieldType, val)); - FlagDefined(f.Name); - } - } - - #endregion - - #region Public Methods - - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } - - foreach(XmlNode child in node.ChildNodes) - { - SetOption(child.Name, Helper.InterpolateForEnvironmentVariables(child.InnerText)); - } - } - - /// - /// Return 'true' if the option symbol has had a value set - /// - /// - /// 'true' if the option value has been set - public bool IsDefined(string name) + /// + /// + /// + public bool GenerateXmlDocFile { - return m_FieldsDefined.Contains("m_" + name); + get + { + return m_GenerateXmlDocFile; + } + set + { + m_GenerateXmlDocFile = value; + } } - // Return the names of all the fields that have had a value set - public IEnumerable AllDefined() + [OptionNode("XmlDocFile")] + private string m_XmlDocFile = ""; + + /// + /// + /// + public string XmlDocFile { - foreach (string name in m_FieldsDefined) { - yield return name.Substring(2); + get + { + return m_XmlDocFile; } - } + set + { + m_XmlDocFile = value; + } + } - /// - /// Copies to. - /// - /// The opt. - public void CopyTo(OptionsNode opt) - { - if(opt == null) - { - return; - } + [OptionNode("KeyFile")] + private string m_KeyFile = ""; - foreach(FieldInfo f in m_OptionFields.Values) - { - if(m_FieldsDefined.Contains(f.Name)) - { - f.SetValue(opt, f.GetValue(this)); - opt.m_FieldsDefined.Add(f.Name); - } - } - } + /// + /// + /// + public string KeyFile + { + get + { + return m_KeyFile; + } + set + { + m_KeyFile = value; + } + } + + [OptionNode("DebugInformation")] + private bool m_DebugInformation; + + /// + /// + /// + public bool DebugInformation + { + get + { + return m_DebugInformation; + } + set + { + m_DebugInformation = value; + } + } + + [OptionNode("RegisterComInterop")] + private bool m_RegisterComInterop; + + /// + /// + /// + public bool RegisterComInterop + { + get + { + return m_RegisterComInterop; + } + set + { + m_RegisterComInterop = value; + } + } + + [OptionNode("RemoveIntegerChecks")] + private bool m_RemoveIntegerChecks; + + /// + /// + /// + public bool RemoveIntegerChecks + { + get + { + return m_RemoveIntegerChecks; + } + set + { + m_RemoveIntegerChecks = value; + } + } + + [OptionNode("IncrementalBuild")] + private bool m_IncrementalBuild; + + /// + /// + /// + public bool IncrementalBuild + { + get + { + return m_IncrementalBuild; + } + set + { + m_IncrementalBuild = value; + } + } + + [OptionNode("BaseAddress")] + private string m_BaseAddress = "285212672"; + + /// + /// + /// + public string BaseAddress + { + get + { + return m_BaseAddress; + } + set + { + m_BaseAddress = value; + } + } + + [OptionNode("FileAlignment")] + private int m_FileAlignment = 4096; + + /// + /// + /// + public int FileAlignment + { + get + { + return m_FileAlignment; + } + set + { + m_FileAlignment = value; + } + } + + [OptionNode("NoStdLib")] + private bool m_NoStdLib; + + /// + /// + /// + public bool NoStdLib + { + get + { + return m_NoStdLib; + } + set + { + m_NoStdLib = value; + } + } + + private readonly List m_FieldsDefined = new List(); + + #endregion + + #region Constructors + + /// + /// Initializes the class. + /// + static OptionsNode() + { + Type t = typeof(OptionsNode); + + foreach (FieldInfo f in t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance)) + { + object[] attrs = f.GetCustomAttributes(typeof(OptionNodeAttribute), false); + if (attrs == null || attrs.Length < 1) + { + continue; + } + + OptionNodeAttribute ona = (OptionNodeAttribute)attrs[0]; + m_OptionFields[ona.NodeName] = f; + } + } + + #endregion + + #region Properties + + /// + /// Gets the at the specified index. + /// + /// + public object this[string index] + { + get + { + if (!m_OptionFields.ContainsKey(index)) + { + return null; + } + + FieldInfo f = m_OptionFields[index]; + return f.GetValue(this); + } + } + + /// + /// Gets the at the specified index. + /// + /// + public object this[string index, object defaultValue] + { + get + { + object valueObject = this[index]; + if (valueObject != null && valueObject is string && ((string)valueObject).Length == 0) + { + return defaultValue; + } + return valueObject; + } + } + + + #endregion + + #region Private Methods + + private void FlagDefined(string name) + { + if (!m_FieldsDefined.Contains(name)) + { + m_FieldsDefined.Add(name); + } + } + + private void SetOption(string nodeName, string val) + { + lock (m_OptionFields) + { + if (!m_OptionFields.ContainsKey(nodeName)) + { + return; + } + + FieldInfo f = m_OptionFields[nodeName]; + f.SetValue(this, Helper.TranslateValue(f.FieldType, val)); + FlagDefined(f.Name); + } + } + + #endregion + + #region Public Methods + + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } + + foreach (XmlNode child in node.ChildNodes) + { + SetOption(child.Name, Helper.InterpolateForEnvironmentVariables(child.InnerText)); + } + } + + /// + /// Return 'true' if the option symbol has had a value set + /// + /// + /// 'true' if the option value has been set + public bool IsDefined(string name) + { + return m_FieldsDefined.Contains("m_" + name); + } + + // Return the names of all the fields that have had a value set + public IEnumerable AllDefined() + { + foreach (string name in m_FieldsDefined) + { + yield return name.Substring(2); + } + } + + /// + /// Copies to. + /// + /// The opt. + public void CopyTo(OptionsNode opt) + { + if (opt == null) + { + return; + } + + foreach (FieldInfo f in m_OptionFields.Values) + { + if (m_FieldsDefined.Contains(f.Name)) + { + f.SetValue(opt, f.GetValue(this)); + opt.m_FieldsDefined.Add(f.Name); + } + } + } public override string ToString() { - StringBuilder buff = new StringBuilder(); - foreach(FieldInfo f in m_OptionFields.Values) - { - if(m_FieldsDefined.Contains(f.Name)) - { - buff.Append(f.Name); - buff.Append("="); - buff.Append(f.GetValue(this).ToString()); - buff.Append(","); - } - } + StringBuilder buff = new StringBuilder(); + foreach (FieldInfo f in m_OptionFields.Values) + { + if (m_FieldsDefined.Contains(f.Name)) + { + buff.Append(f.Name); + buff.Append("="); + buff.Append(f.GetValue(this).ToString()); + buff.Append(","); + } + } return buff.ToString(); } diff --git a/Prebuild/src/Core/Nodes/PackageReferenceNode.cs b/Prebuild/src/Core/Nodes/PackageReferenceNode.cs index 56775a09bd..9614acc7bc 100755 --- a/Prebuild/src/Core/Nodes/PackageReferenceNode.cs +++ b/Prebuild/src/Core/Nodes/PackageReferenceNode.cs @@ -32,60 +32,60 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("PackageReference")] - public class PackageReferenceNode : DataNode, IComparable - { - #region Fields + /// + /// + /// + [DataNode("PackageReference")] + public class PackageReferenceNode : DataNode, IComparable + { + #region Fields - private string m_Name = "unknown"; - private string m_Version; + private string m_Name = "unknown"; + private string m_Version; - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return m_Name; - } - } + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return m_Name; + } + } - /// - /// Gets the version. - /// - /// The version. - public string Version - { - get - { - return m_Version; - } - } + /// + /// Gets the version. + /// + /// The version. + public string Version + { + get + { + return m_Version; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - m_Name = Helper.AttributeValue(node, "name", m_Name); - m_Version = Helper.AttributeValue(node, "version", m_Version); - } + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + m_Name = Helper.AttributeValue(node, "name", m_Name); + m_Version = Helper.AttributeValue(node, "version", m_Version); + } - #endregion + #endregion #region IComparable Members @@ -96,5 +96,5 @@ namespace Prebuild.Core.Nodes } #endregion - } + } } diff --git a/Prebuild/src/Core/Nodes/ProcessNode.cs b/Prebuild/src/Core/Nodes/ProcessNode.cs index 8ca8e493d2..92d8aaa4b8 100644 --- a/Prebuild/src/Core/Nodes/ProcessNode.cs +++ b/Prebuild/src/Core/Nodes/ProcessNode.cs @@ -32,77 +32,77 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("Process")] - public class ProcessNode : DataNode - { - #region Fields + /// + /// + /// + [DataNode("Process")] + public class ProcessNode : DataNode + { + #region Fields - private string m_Path; - private bool m_IsValid = true; + private string m_Path; + private bool m_IsValid = true; - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the path. - /// - /// The path. - public string Path - { - get - { - return m_Path; - } - } + /// + /// Gets the path. + /// + /// The path. + public string Path + { + get + { + return m_Path; + } + } - /// - /// Gets a value indicating whether this instance is valid. - /// - /// true if this instance is valid; otherwise, false. - public bool IsValid - { - get - { - return m_IsValid; - } - } + /// + /// Gets a value indicating whether this instance is valid. + /// + /// true if this instance is valid; otherwise, false. + public bool IsValid + { + get + { + return m_IsValid; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } - m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText); - if(m_Path == null) - { - m_Path = ""; - } + m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText); + if (m_Path == null) + { + m_Path = ""; + } - try - { - m_Path = Helper.ResolvePath(m_Path); - } - catch(ArgumentException) - { - Kernel.Instance.Log.Write(LogType.Warning, "Could not find prebuild file for processing: {0}", m_Path); - m_IsValid = false; - } - } + try + { + m_Path = Helper.ResolvePath(m_Path); + } + catch (ArgumentException) + { + Kernel.Instance.Log.Write(LogType.Warning, "Could not find prebuild file for processing: {0}", m_Path); + m_IsValid = false; + } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Nodes/ProjectNode.cs b/Prebuild/src/Core/Nodes/ProjectNode.cs index 9b62cbff37..7ec87bfc92 100755 --- a/Prebuild/src/Core/Nodes/ProjectNode.cs +++ b/Prebuild/src/Core/Nodes/ProjectNode.cs @@ -34,216 +34,216 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// A set of values that the Project's type can be - /// - public enum ProjectType - { - /// - /// The project is a console executable - /// - Exe, - /// - /// The project is a windows executable - /// - WinExe, - /// - /// The project is a library - /// - Library, + /// + /// A set of values that the Project's type can be + /// + public enum ProjectType + { + /// + /// The project is a console executable + /// + Exe, + /// + /// The project is a windows executable + /// + WinExe, + /// + /// The project is a library + /// + Library, /// /// The project is a website /// Web, - } + } - /// - /// - /// - public enum ClrRuntime - { - /// - /// - /// - Microsoft, - /// - /// - /// - Mono - } - /// - /// The version of the .NET framework to use (Required for VS2008) - /// We don't need .NET 1.1 in here, it'll default when using vs2003. - /// - public enum FrameworkVersion - { - /// - /// .NET 2.0 - /// - v2_0, - /// - /// .NET 3.0 - /// - v3_0, - /// - /// .NET 3.5 - /// - v3_5, - /// - /// .NET 4.0 - /// - v4_0, + /// + /// + /// + public enum ClrRuntime + { + /// + /// + /// + Microsoft, + /// + /// + /// + Mono + } + /// + /// The version of the .NET framework to use (Required for VS2008) + /// We don't need .NET 1.1 in here, it'll default when using vs2003. + /// + public enum FrameworkVersion + { + /// + /// .NET 2.0 + /// + v2_0, + /// + /// .NET 3.0 + /// + v3_0, + /// + /// .NET 3.5 + /// + v3_5, + /// + /// .NET 4.0 + /// + v4_0, /// /// .NET 4.5 /// v4_5, - /// - /// .NET 4.5.1 - /// - v4_5_1, - v4_5_2, - /// - /// .NET 4.6 - /// - v4_6, - /// - /// .NET 4.6.1 - /// - v4_6_1, - v4_6_2, - v4_7, - v4_7_1, - v4_7_2, - v4_8, - netstandard2_0, - net5_0, - net6_0 - } - /// - /// The Node object representing /Prebuild/Solution/Project elements - /// - [DataNode("Project")] - public class ProjectNode : DataNode, IComparable - { - #region Fields + /// + /// .NET 4.5.1 + /// + v4_5_1, + v4_5_2, + /// + /// .NET 4.6 + /// + v4_6, + /// + /// .NET 4.6.1 + /// + v4_6_1, + v4_6_2, + v4_7, + v4_7_1, + v4_7_2, + v4_8, + netstandard2_0, + net5_0, + net6_0 + } + /// + /// The Node object representing /Prebuild/Solution/Project elements + /// + [DataNode("Project")] + public class ProjectNode : DataNode, IComparable + { + #region Fields - private string m_Name = "unknown"; - private string m_Path = ""; - private string m_FullPath = ""; - private string m_AssemblyName; - private string m_AppIcon = ""; + private string m_Name = "unknown"; + private string m_Path = ""; + private string m_FullPath = ""; + private string m_AssemblyName; + private string m_AppIcon = ""; private string m_ApplicationManifest = ""; private string m_ConfigFile = ""; - private string m_DesignerFolder = ""; - private string m_Language = "C#"; - private ProjectType m_Type = ProjectType.Exe; - private ClrRuntime m_Runtime = ClrRuntime.Microsoft; + private string m_DesignerFolder = ""; + private string m_Language = "C#"; + private ProjectType m_Type = ProjectType.Exe; + private ClrRuntime m_Runtime = ClrRuntime.Microsoft; private FrameworkVersion m_Framework = FrameworkVersion.v2_0; private bool m_useFramework = true; - private string m_StartupObject = ""; - private string m_RootNamespace; - private string m_FilterGroups = ""; - private string m_Version = ""; - private Guid m_Guid; + private string m_StartupObject = ""; + private string m_RootNamespace; + private string m_FilterGroups = ""; + private string m_Version = ""; + private Guid m_Guid; private string m_DebugStartParameters; private readonly Dictionary m_Configurations = new Dictionary(); private readonly List m_ReferencePaths = new List(); - private readonly List m_ProjectReferences = new List(); - private readonly List m_PackageReferences = new List(); - private readonly List m_References = new List(); + private readonly List m_ProjectReferences = new List(); + private readonly List m_PackageReferences = new List(); + private readonly List m_References = new List(); private readonly List m_Authors = new List(); - private FilesNode m_Files; + private FilesNode m_Files; - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return m_Name; - } - } - /// - /// The version of the .NET Framework to compile under - /// - public FrameworkVersion FrameworkVersion - { - get - { - return m_Framework; - } + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return m_Name; + } + } + /// + /// The version of the .NET Framework to compile under + /// + public FrameworkVersion FrameworkVersion + { + get + { + return m_Framework; + } set { m_Framework = value; m_useFramework = false; } - } - /// - /// Gets the path. - /// - /// The path. - public string Path - { - get - { - return m_Path; - } - } + } + /// + /// Gets the path. + /// + /// The path. + public string Path + { + get + { + return m_Path; + } + } - /// - /// Gets the filter groups. - /// - /// The filter groups. - public string FilterGroups - { - get - { - return m_FilterGroups; - } - } + /// + /// Gets the filter groups. + /// + /// The filter groups. + public string FilterGroups + { + get + { + return m_FilterGroups; + } + } - /// - /// Gets the project's version - /// - /// The project's version. - public string Version - { - get - { - return m_Version; - } - } + /// + /// Gets the project's version + /// + /// The project's version. + public string Version + { + get + { + return m_Version; + } + } - /// - /// Gets the full path. - /// - /// The full path. - public string FullPath - { - get - { - return m_FullPath; - } - } + /// + /// Gets the full path. + /// + /// The full path. + public string FullPath + { + get + { + return m_FullPath; + } + } - /// - /// Gets the name of the assembly. - /// - /// The name of the assembly. - public string AssemblyName - { - get - { - return m_AssemblyName; - } - } + /// + /// Gets the name of the assembly. + /// + /// The name of the assembly. + public string AssemblyName + { + get + { + return m_AssemblyName; + } + } /// /// Gets the app icon. @@ -269,387 +269,387 @@ namespace Prebuild.Core.Nodes } } - /// - /// Gets the app icon. - /// - /// The app icon. - public string ConfigFile - { - get - { - return m_ConfigFile; - } - } + /// + /// Gets the app icon. + /// + /// The app icon. + public string ConfigFile + { + get + { + return m_ConfigFile; + } + } - /// - /// - /// - public string DesignerFolder - { - get - { - return m_DesignerFolder; - } - } + /// + /// + /// + public string DesignerFolder + { + get + { + return m_DesignerFolder; + } + } - /// - /// Gets the language. - /// - /// The language. - public string Language - { - get - { - return m_Language; - } - } + /// + /// Gets the language. + /// + /// The language. + public string Language + { + get + { + return m_Language; + } + } - /// - /// Gets the type. - /// - /// The type. - public ProjectType Type - { - get - { - return m_Type; - } - } + /// + /// Gets the type. + /// + /// The type. + public ProjectType Type + { + get + { + return m_Type; + } + } - /// - /// Gets the runtime. - /// - /// The runtime. - public ClrRuntime Runtime - { - get - { - return m_Runtime; - } - } + /// + /// Gets the runtime. + /// + /// The runtime. + public ClrRuntime Runtime + { + get + { + return m_Runtime; + } + } - private bool m_GenerateAssemblyInfoFile; - - /// - /// - /// - public bool GenerateAssemblyInfoFile - { - get - { - return m_GenerateAssemblyInfoFile; - } - set - { - m_GenerateAssemblyInfoFile = value; - } - } + private bool m_GenerateAssemblyInfoFile; - /// - /// Gets the startup object. - /// - /// The startup object. - public string StartupObject - { - get - { - return m_StartupObject; - } - } + /// + /// + /// + public bool GenerateAssemblyInfoFile + { + get + { + return m_GenerateAssemblyInfoFile; + } + set + { + m_GenerateAssemblyInfoFile = value; + } + } - /// - /// Gets the root namespace. - /// - /// The root namespace. - public string RootNamespace - { - get - { - return m_RootNamespace; - } - } + /// + /// Gets the startup object. + /// + /// The startup object. + public string StartupObject + { + get + { + return m_StartupObject; + } + } - /// - /// Gets the configurations. - /// - /// The configurations. + /// + /// Gets the root namespace. + /// + /// The root namespace. + public string RootNamespace + { + get + { + return m_RootNamespace; + } + } + + /// + /// Gets the configurations. + /// + /// The configurations. public List Configurations - { - get - { - List tmp = new List(ConfigurationsTable.Values); + { + get + { + List tmp = new List(ConfigurationsTable.Values); tmp.Sort(); return tmp; - } - } + } + } - /// - /// Gets the configurations table. - /// - /// The configurations table. - public Dictionary ConfigurationsTable - { - get - { - return m_Configurations; - } - } + /// + /// Gets the configurations table. + /// + /// The configurations table. + public Dictionary ConfigurationsTable + { + get + { + return m_Configurations; + } + } - /// - /// Gets the reference paths. - /// - /// The reference paths. - public List ReferencePaths - { - get - { + /// + /// Gets the reference paths. + /// + /// The reference paths. + public List ReferencePaths + { + get + { List tmp = new List(m_ReferencePaths); tmp.Sort(); return tmp; - } - } + } + } - /// - /// Gets the references. - /// - /// The references. + /// + /// Gets the references. + /// + /// The references. public List References - { - get - { + { + get + { List tmp = new List(m_References); tmp.Sort(); return tmp; - } - } + } + } - /// - /// Gets the references. - /// - /// The references. + /// + /// Gets the references. + /// + /// The references. public List ProjectReferences - { - get - { + { + get + { List tmp = new List(m_ProjectReferences); tmp.Sort(); return tmp; - } - } + } + } - /// - /// Gets the package references. - /// - /// The references. + /// + /// Gets the package references. + /// + /// The references. public List PackageReferences - { - get - { + { + get + { List tmp = new List(m_PackageReferences); tmp.Sort(); return tmp; - } - } - - /// - /// Gets the Authors list. - /// - /// The list of the project's authors. - public List Authors - { - get - { - return m_Authors; - } - } + } + } - /// - /// Gets the files. - /// - /// The files. - public FilesNode Files - { - get - { - return m_Files; - } - } + /// + /// Gets the Authors list. + /// + /// The list of the project's authors. + public List Authors + { + get + { + return m_Authors; + } + } - /// - /// Gets or sets the parent. - /// - /// The parent. - public override IDataNode Parent - { - get - { - return base.Parent; - } - set - { - base.Parent = value; - if(base.Parent is SolutionNode && m_Configurations.Count < 1) - { - SolutionNode parent = (SolutionNode)base.Parent; - foreach(ConfigurationNode conf in parent.Configurations) - { - m_Configurations[conf.NameAndPlatform] = (ConfigurationNode) conf.Clone(); - } - } - } - } + /// + /// Gets the files. + /// + /// The files. + public FilesNode Files + { + get + { + return m_Files; + } + } - /// - /// Gets the GUID. - /// - /// The GUID. - public Guid Guid - { - get - { - return m_Guid; - } - } + /// + /// Gets or sets the parent. + /// + /// The parent. + public override IDataNode Parent + { + get + { + return base.Parent; + } + set + { + base.Parent = value; + if (base.Parent is SolutionNode && m_Configurations.Count < 1) + { + SolutionNode parent = (SolutionNode)base.Parent; + foreach (ConfigurationNode conf in parent.Configurations) + { + m_Configurations[conf.NameAndPlatform] = (ConfigurationNode)conf.Clone(); + } + } + } + } - public string DebugStartParameters - { + /// + /// Gets the GUID. + /// + /// The GUID. + public Guid Guid + { + get + { + return m_Guid; + } + } + + public string DebugStartParameters + { get { return m_DebugStartParameters; } - } + } - #endregion + #endregion - #region Private Methods + #region Private Methods - private void HandleConfiguration(ConfigurationNode conf) - { - if(String.Compare(conf.Name, "all", true) == 0) //apply changes to all, this may not always be applied first, - //so it *may* override changes to the same properties for configurations defines at the project level - { - foreach(ConfigurationNode confNode in m_Configurations.Values) - { - conf.CopyTo(confNode);//update the config templates defines at the project level with the overrides - } - } - if(m_Configurations.ContainsKey(conf.NameAndPlatform)) - { - ConfigurationNode parentConf = m_Configurations[conf.NameAndPlatform]; - conf.CopyTo(parentConf);//update the config templates defines at the project level with the overrides - } - else - { - m_Configurations[conf.NameAndPlatform] = conf; - } - } + private void HandleConfiguration(ConfigurationNode conf) + { + if (String.Compare(conf.Name, "all", true) == 0) //apply changes to all, this may not always be applied first, + //so it *may* override changes to the same properties for configurations defines at the project level + { + foreach (ConfigurationNode confNode in m_Configurations.Values) + { + conf.CopyTo(confNode);//update the config templates defines at the project level with the overrides + } + } + if (m_Configurations.ContainsKey(conf.NameAndPlatform)) + { + ConfigurationNode parentConf = m_Configurations[conf.NameAndPlatform]; + conf.CopyTo(parentConf);//update the config templates defines at the project level with the overrides + } + else + { + m_Configurations[conf.NameAndPlatform] = conf; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - m_Name = Helper.AttributeValue(node, "name", m_Name); - m_Path = Helper.AttributeValue(node, "path", m_Path); - m_FilterGroups = Helper.AttributeValue(node, "filterGroups", m_FilterGroups); + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + m_Name = Helper.AttributeValue(node, "name", m_Name); + m_Path = Helper.AttributeValue(node, "path", m_Path); + m_FilterGroups = Helper.AttributeValue(node, "filterGroups", m_FilterGroups); m_Version = Helper.AttributeValue(node, "version", m_Version); m_AppIcon = Helper.AttributeValue(node, "icon", m_AppIcon); m_ApplicationManifest = Helper.AttributeValue(node, "appmanifest", m_ApplicationManifest); m_ConfigFile = Helper.AttributeValue(node, "configFile", m_ConfigFile); - m_DesignerFolder = Helper.AttributeValue(node, "designerFolder", m_DesignerFolder); - m_AssemblyName = Helper.AttributeValue(node, "assemblyName", m_AssemblyName); - m_Language = Helper.AttributeValue(node, "language", m_Language); - m_Type = (ProjectType)Helper.EnumAttributeValue(node, "type", typeof(ProjectType), m_Type); - m_Runtime = (ClrRuntime)Helper.EnumAttributeValue(node, "runtime", typeof(ClrRuntime), m_Runtime); - if(m_useFramework) + m_DesignerFolder = Helper.AttributeValue(node, "designerFolder", m_DesignerFolder); + m_AssemblyName = Helper.AttributeValue(node, "assemblyName", m_AssemblyName); + m_Language = Helper.AttributeValue(node, "language", m_Language); + m_Type = (ProjectType)Helper.EnumAttributeValue(node, "type", typeof(ProjectType), m_Type); + m_Runtime = (ClrRuntime)Helper.EnumAttributeValue(node, "runtime", typeof(ClrRuntime), m_Runtime); + if (m_useFramework) m_Framework = (FrameworkVersion)Helper.EnumAttributeValue(node, "frameworkVersion", typeof(FrameworkVersion), m_Framework); - + m_StartupObject = Helper.AttributeValue(node, "startupObject", m_StartupObject); - m_RootNamespace = Helper.AttributeValue(node, "rootNamespace", m_RootNamespace); - + m_RootNamespace = Helper.AttributeValue(node, "rootNamespace", m_RootNamespace); + int hash = m_Name.GetHashCode(); - Guid guidByHash = new Guid(hash, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - string guid = Helper.AttributeValue(node, "guid", guidByHash.ToString()); - m_Guid = new Guid(guid); + Guid guidByHash = new Guid(hash, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + string guid = Helper.AttributeValue(node, "guid", guidByHash.ToString()); + m_Guid = new Guid(guid); m_GenerateAssemblyInfoFile = Helper.ParseBoolean(node, "generateAssemblyInfoFile", false); - m_DebugStartParameters = Helper.AttributeValue(node, "debugStartParameters", string.Empty); - - if(string.IsNullOrEmpty(m_AssemblyName)) - { - m_AssemblyName = m_Name; - } + m_DebugStartParameters = Helper.AttributeValue(node, "debugStartParameters", string.Empty); - if(string.IsNullOrEmpty(m_RootNamespace)) - { - m_RootNamespace = m_Name; - } + if (string.IsNullOrEmpty(m_AssemblyName)) + { + m_AssemblyName = m_Name; + } - m_FullPath = m_Path; - try - { - m_FullPath = Helper.ResolvePath(m_FullPath); - } - catch - { - throw new WarningException("Could not resolve Solution path: {0}", m_Path); - } + if (string.IsNullOrEmpty(m_RootNamespace)) + { + m_RootNamespace = m_Name; + } - Kernel.Instance.CurrentWorkingDirectory.Push(); - try - { - Helper.SetCurrentDir(m_FullPath); + m_FullPath = m_Path; + try + { + m_FullPath = Helper.ResolvePath(m_FullPath); + } + catch + { + throw new WarningException("Could not resolve Solution path: {0}", m_Path); + } - if( node == null ) - { - throw new ArgumentNullException("node"); - } + Kernel.Instance.CurrentWorkingDirectory.Push(); + try + { + Helper.SetCurrentDir(m_FullPath); - foreach(XmlNode child in node.ChildNodes) - { - IDataNode dataNode = Kernel.Instance.ParseNode(child, this); - if(dataNode is ConfigurationNode) - { - HandleConfiguration((ConfigurationNode)dataNode); - } - else if(dataNode is ReferencePathNode) - { + if (node == null) + { + throw new ArgumentNullException("node"); + } + + foreach (XmlNode child in node.ChildNodes) + { + IDataNode dataNode = Kernel.Instance.ParseNode(child, this); + if (dataNode is ConfigurationNode) + { + HandleConfiguration((ConfigurationNode)dataNode); + } + else if (dataNode is ReferencePathNode) + { m_ReferencePaths.Add((ReferencePathNode)dataNode); - } - else if(dataNode is ReferenceNode) - { + } + else if (dataNode is ReferenceNode) + { m_References.Add((ReferenceNode)dataNode); - } - else if(dataNode is PackageReferenceNode) - { + } + else if (dataNode is PackageReferenceNode) + { m_PackageReferences.Add((PackageReferenceNode)dataNode); - } - else if(dataNode is ProjectReferenceNode) - { + } + else if (dataNode is ProjectReferenceNode) + { m_ProjectReferences.Add((ProjectReferenceNode)dataNode); - } - else if(dataNode is AuthorNode) - { + } + else if (dataNode is AuthorNode) + { m_Authors.Add((AuthorNode)dataNode); - } - else if(dataNode is FilesNode) - { - m_Files = (FilesNode)dataNode; - } - } - } - finally - { - Kernel.Instance.CurrentWorkingDirectory.Pop(); - } - } + } + else if (dataNode is FilesNode) + { + m_Files = (FilesNode)dataNode; + } + } + } + finally + { + Kernel.Instance.CurrentWorkingDirectory.Pop(); + } + } - #endregion + #endregion #region IComparable Members @@ -659,6 +659,6 @@ namespace Prebuild.Core.Nodes return m_Name.CompareTo(that.m_Name); } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Nodes/ProjectReferenceNode.cs b/Prebuild/src/Core/Nodes/ProjectReferenceNode.cs index 76f6c27599..40a3d549a0 100755 --- a/Prebuild/src/Core/Nodes/ProjectReferenceNode.cs +++ b/Prebuild/src/Core/Nodes/ProjectReferenceNode.cs @@ -32,60 +32,60 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("ProjectReference")] - public class ProjectReferenceNode : DataNode, IComparable - { - #region Fields + /// + /// + /// + [DataNode("ProjectReference")] + public class ProjectReferenceNode : DataNode, IComparable + { + #region Fields - private string m_Name = "unknown"; - private string m_Include; + private string m_Name = "unknown"; + private string m_Include; - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return m_Name; - } - } + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return m_Name; + } + } - /// - /// Gets the path. - /// - /// The path. - public string Include - { - get - { - return m_Include; - } - } + /// + /// Gets the path. + /// + /// The path. + public string Include + { + get + { + return m_Include; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - m_Name = Helper.AttributeValue(node, "name", m_Name); - m_Include = Helper.AttributeValue(node, "include", m_Include); - } + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + m_Name = Helper.AttributeValue(node, "name", m_Name); + m_Include = Helper.AttributeValue(node, "include", m_Include); + } - #endregion + #endregion #region IComparable Members @@ -96,5 +96,5 @@ namespace Prebuild.Core.Nodes } #endregion - } + } } diff --git a/Prebuild/src/Core/Nodes/ReferenceNode.cs b/Prebuild/src/Core/Nodes/ReferenceNode.cs index 9c5d1a3491..30f44b91aa 100644 --- a/Prebuild/src/Core/Nodes/ReferenceNode.cs +++ b/Prebuild/src/Core/Nodes/ReferenceNode.cs @@ -32,104 +32,104 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("Reference")] - public class ReferenceNode : DataNode, IComparable - { - #region Fields + /// + /// + /// + [DataNode("Reference")] + public class ReferenceNode : DataNode, IComparable + { + #region Fields - private string m_Name = "unknown"; - private string m_Path; - private string m_LocalCopy; - private string m_Version; + private string m_Name = "unknown"; + private string m_Path; + private string m_LocalCopy; + private string m_Version; - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return m_Name; - } - } + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return m_Name; + } + } - /// - /// Gets the path. - /// - /// The path. - public string Path - { - get - { - return m_Path; - } - } + /// + /// Gets the path. + /// + /// The path. + public string Path + { + get + { + return m_Path; + } + } - /// - /// Gets a value indicating whether [local copy specified]. - /// - /// true if [local copy specified]; otherwise, false. - public bool LocalCopySpecified - { - get - { - return ( m_LocalCopy != null && m_LocalCopy.Length == 0); - } - } + /// + /// Gets a value indicating whether [local copy specified]. + /// + /// true if [local copy specified]; otherwise, false. + public bool LocalCopySpecified + { + get + { + return (m_LocalCopy != null && m_LocalCopy.Length == 0); + } + } - /// - /// Gets a value indicating whether [local copy]. - /// - /// true if [local copy]; otherwise, false. - public bool LocalCopy - { - get - { - if( m_LocalCopy == null) - { - return false; - } - return bool.Parse(m_LocalCopy); - } - } + /// + /// Gets a value indicating whether [local copy]. + /// + /// true if [local copy]; otherwise, false. + public bool LocalCopy + { + get + { + if (m_LocalCopy == null) + { + return false; + } + return bool.Parse(m_LocalCopy); + } + } - /// - /// Gets the version. - /// - /// The version. - public string Version - { - get - { - return m_Version; - } - } + /// + /// Gets the version. + /// + /// The version. + public string Version + { + get + { + return m_Version; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - m_Name = Helper.AttributeValue(node, "name", m_Name); - m_Path = Helper.AttributeValue(node, "path", m_Path); - m_LocalCopy = Helper.AttributeValue(node, "localCopy", m_LocalCopy); - m_Version = Helper.AttributeValue(node, "version", m_Version); - } + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + m_Name = Helper.AttributeValue(node, "name", m_Name); + m_Path = Helper.AttributeValue(node, "path", m_Path); + m_LocalCopy = Helper.AttributeValue(node, "localCopy", m_LocalCopy); + m_Version = Helper.AttributeValue(node, "version", m_Version); + } - #endregion + #endregion #region IComparable Members @@ -140,5 +140,5 @@ namespace Prebuild.Core.Nodes } #endregion - } + } } diff --git a/Prebuild/src/Core/Nodes/ReferencePathNode.cs b/Prebuild/src/Core/Nodes/ReferencePathNode.cs index 7331cd7b58..fb511ce0ed 100644 --- a/Prebuild/src/Core/Nodes/ReferencePathNode.cs +++ b/Prebuild/src/Core/Nodes/ReferencePathNode.cs @@ -32,57 +32,57 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("ReferencePath")] - public class ReferencePathNode : DataNode, IComparable - { - #region Fields + /// + /// + /// + [DataNode("ReferencePath")] + public class ReferencePathNode : DataNode, IComparable + { + #region Fields - private string m_Path; + private string m_Path; - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the path. - /// - /// The path. - public string Path - { - get - { - return m_Path; - } - } + /// + /// Gets the path. + /// + /// The path. + public string Path + { + get + { + return m_Path; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } - m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText); - if(m_Path == null) - { - m_Path = ""; - } + m_Path = Helper.InterpolateForEnvironmentVariables(node.InnerText); + if (m_Path == null) + { + m_Path = ""; + } - m_Path = m_Path.Trim(); - } + m_Path = m_Path.Trim(); + } - #endregion + #endregion #region IComparable Members @@ -93,5 +93,5 @@ namespace Prebuild.Core.Nodes } #endregion - } + } } diff --git a/Prebuild/src/Core/Nodes/SolutionNode.cs b/Prebuild/src/Core/Nodes/SolutionNode.cs index 10c02234da..6375386a14 100644 --- a/Prebuild/src/Core/Nodes/SolutionNode.cs +++ b/Prebuild/src/Core/Nodes/SolutionNode.cs @@ -34,35 +34,35 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Nodes { - /// - /// - /// - [DataNode("Solution")] + /// + /// + /// + [DataNode("Solution")] [DataNode("EmbeddedSolution")] [DebuggerDisplay("{Name}")] - public class SolutionNode : DataNode - { - #region Fields + public class SolutionNode : DataNode + { + #region Fields private Guid m_Guid = Guid.NewGuid(); - private string m_Name = "unknown"; - private string m_Path = ""; - private string m_FullPath = ""; - private string m_ActiveConfig; + private string m_Name = "unknown"; + private string m_Path = ""; + private string m_FullPath = ""; + private string m_ActiveConfig; private string m_Version = "1.0.0"; - - private OptionsNode m_Options; - private FilesNode m_Files; + + private OptionsNode m_Options; + private FilesNode m_Files; private readonly ConfigurationNodeCollection m_Configurations = new ConfigurationNodeCollection(); private readonly Dictionary m_Projects = new Dictionary(); private readonly Dictionary m_DatabaseProjects = new Dictionary(); private readonly List m_ProjectsOrder = new List(); private readonly Dictionary m_Solutions = new Dictionary(); - private CleanupNode m_Cleanup; + private CleanupNode m_Cleanup; - #endregion + #endregion - #region Properties + #region Properties public override IDataNode Parent { get @@ -76,7 +76,7 @@ namespace Prebuild.Core.Nodes SolutionNode solution = (SolutionNode)value; foreach (ConfigurationNode conf in solution.Configurations) { - m_Configurations[conf.Name] = (ConfigurationNode) conf.Clone(); + m_Configurations[conf.Name] = (ConfigurationNode)conf.Clone(); } } @@ -84,142 +84,142 @@ namespace Prebuild.Core.Nodes } } - public CleanupNode Cleanup - { - get - { - return m_Cleanup; - } + public CleanupNode Cleanup + { + get + { + return m_Cleanup; + } set { m_Cleanup = value; } - } + } public Guid Guid { - get - { - return m_Guid; + get + { + return m_Guid; } set { - m_Guid = value; + m_Guid = value; + } + } + /// + /// Gets or sets the active config. + /// + /// The active config. + public string ActiveConfig + { + get + { + return m_ActiveConfig; + } + set + { + m_ActiveConfig = value; } } - /// - /// Gets or sets the active config. - /// - /// The active config. - public string ActiveConfig - { - get - { - return m_ActiveConfig; - } - set - { - m_ActiveConfig = value; - } - } - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return m_Name; - } - } + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return m_Name; + } + } - /// - /// Gets the path. - /// - /// The path. - public string Path - { - get - { - return m_Path; - } - } + /// + /// Gets the path. + /// + /// The path. + public string Path + { + get + { + return m_Path; + } + } - /// - /// Gets the full path. - /// - /// The full path. - public string FullPath - { - get - { - return m_FullPath; - } - } + /// + /// Gets the full path. + /// + /// The full path. + public string FullPath + { + get + { + return m_FullPath; + } + } - /// - /// Gets the version. - /// - /// The version. - public string Version - { - get - { - return m_Version; - } - } + /// + /// Gets the version. + /// + /// The version. + public string Version + { + get + { + return m_Version; + } + } - /// - /// Gets the options. - /// - /// The options. - public OptionsNode Options - { - get - { - return m_Options; - } - } + /// + /// Gets the options. + /// + /// The options. + public OptionsNode Options + { + get + { + return m_Options; + } + } - /// - /// Gets the files. - /// - /// The files. - public FilesNode Files - { - get - { - return m_Files; - } - } + /// + /// Gets the files. + /// + /// The files. + public FilesNode Files + { + get + { + return m_Files; + } + } - /// - /// Gets the configurations. - /// - /// The configurations. - public ConfigurationNodeCollection Configurations - { - get - { - ConfigurationNodeCollection tmp = new ConfigurationNodeCollection(); - tmp.AddRange(ConfigurationsTable); - return tmp; - } - } + /// + /// Gets the configurations. + /// + /// The configurations. + public ConfigurationNodeCollection Configurations + { + get + { + ConfigurationNodeCollection tmp = new ConfigurationNodeCollection(); + tmp.AddRange(ConfigurationsTable); + return tmp; + } + } - /// - /// Gets the configurations table. - /// - /// The configurations table. - public ConfigurationNodeCollection ConfigurationsTable - { - get - { - return m_Configurations; - } - } + /// + /// Gets the configurations table. + /// + /// The configurations table. + public ConfigurationNodeCollection ConfigurationsTable + { + get + { + return m_Configurations; + } + } /// /// Gets the database projects. /// @@ -250,109 +250,109 @@ namespace Prebuild.Core.Nodes return m_Solutions; } } - /// - /// Gets the projects. - /// - /// The projects. - public ICollection Projects - { - get - { + /// + /// Gets the projects. + /// + /// The projects. + public ICollection Projects + { + get + { List tmp = new List(m_Projects.Values); tmp.Sort(); return tmp; - } - } + } + } - /// - /// Gets the projects table. - /// - /// The projects table. - public Dictionary ProjectsTable - { - get - { - return m_Projects; - } - } + /// + /// Gets the projects table. + /// + /// The projects table. + public Dictionary ProjectsTable + { + get + { + return m_Projects; + } + } - /// - /// Gets the projects table. - /// - /// The projects table. - public List ProjectsTableOrder - { - get - { - return m_ProjectsOrder; - } - } + /// + /// Gets the projects table. + /// + /// The projects table. + public List ProjectsTableOrder + { + get + { + return m_ProjectsOrder; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Parses the specified node. - /// - /// The node. - public override void Parse(XmlNode node) - { - m_Name = Helper.AttributeValue(node, "name", m_Name); - m_ActiveConfig = Helper.AttributeValue(node, "activeConfig", m_ActiveConfig); - m_Path = Helper.AttributeValue(node, "path", m_Path); - m_Version = Helper.AttributeValue(node, "version", m_Version); + /// + /// Parses the specified node. + /// + /// The node. + public override void Parse(XmlNode node) + { + m_Name = Helper.AttributeValue(node, "name", m_Name); + m_ActiveConfig = Helper.AttributeValue(node, "activeConfig", m_ActiveConfig); + m_Path = Helper.AttributeValue(node, "path", m_Path); + m_Version = Helper.AttributeValue(node, "version", m_Version); - m_FullPath = m_Path; - try - { - m_FullPath = Helper.ResolvePath(m_FullPath); - } - catch - { - throw new WarningException("Could not resolve solution path: {0}", m_Path); - } + m_FullPath = m_Path; + try + { + m_FullPath = Helper.ResolvePath(m_FullPath); + } + catch + { + throw new WarningException("Could not resolve solution path: {0}", m_Path); + } - Kernel.Instance.CurrentWorkingDirectory.Push(); - try - { - Helper.SetCurrentDir(m_FullPath); + Kernel.Instance.CurrentWorkingDirectory.Push(); + try + { + Helper.SetCurrentDir(m_FullPath); - if( node == null ) - { - throw new ArgumentNullException("node"); - } + if (node == null) + { + throw new ArgumentNullException("node"); + } - foreach(XmlNode child in node.ChildNodes) - { - IDataNode dataNode = Kernel.Instance.ParseNode(child, this); - if(dataNode is OptionsNode) - { - m_Options = (OptionsNode)dataNode; - } - else if(dataNode is FilesNode) - { - m_Files = (FilesNode)dataNode; - } - else if(dataNode is ConfigurationNode) - { - ConfigurationNode configurationNode = (ConfigurationNode) dataNode; - m_Configurations[configurationNode.NameAndPlatform] = configurationNode; - - // If the active configuration is null, then we populate it. - if (ActiveConfig == null) - { - ActiveConfig = configurationNode.Name; - } - } - else if(dataNode is ProjectNode) - { - m_Projects[((ProjectNode)dataNode).Name] = (ProjectNode) dataNode; - m_ProjectsOrder.Add((ProjectNode)dataNode); - } - else if(dataNode is SolutionNode) + foreach (XmlNode child in node.ChildNodes) + { + IDataNode dataNode = Kernel.Instance.ParseNode(child, this); + if (dataNode is OptionsNode) { - m_Solutions[((SolutionNode)dataNode).Name] = (SolutionNode) dataNode; + m_Options = (OptionsNode)dataNode; + } + else if (dataNode is FilesNode) + { + m_Files = (FilesNode)dataNode; + } + else if (dataNode is ConfigurationNode) + { + ConfigurationNode configurationNode = (ConfigurationNode)dataNode; + m_Configurations[configurationNode.NameAndPlatform] = configurationNode; + + // If the active configuration is null, then we populate it. + if (ActiveConfig == null) + { + ActiveConfig = configurationNode.Name; + } + } + else if (dataNode is ProjectNode) + { + m_Projects[((ProjectNode)dataNode).Name] = (ProjectNode)dataNode; + m_ProjectsOrder.Add((ProjectNode)dataNode); + } + else if (dataNode is SolutionNode) + { + m_Solutions[((SolutionNode)dataNode).Name] = (SolutionNode)dataNode; } else if (dataNode is ProcessNode) { @@ -361,22 +361,22 @@ namespace Prebuild.Core.Nodes } else if (dataNode is DatabaseProjectNode) { - m_DatabaseProjects[((DatabaseProjectNode)dataNode).Name] = (DatabaseProjectNode) dataNode; + m_DatabaseProjects[((DatabaseProjectNode)dataNode).Name] = (DatabaseProjectNode)dataNode; } - else if(dataNode is CleanupNode) + else if (dataNode is CleanupNode) { - if(m_Cleanup != null) + if (m_Cleanup != null) throw new WarningException("There can only be one Cleanup node."); m_Cleanup = (CleanupNode)dataNode; } - } - } - finally - { - Kernel.Instance.CurrentWorkingDirectory.Pop(); - } - } + } + } + finally + { + Kernel.Instance.CurrentWorkingDirectory.Pop(); + } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Parse/IfContext.cs b/Prebuild/src/Core/Parse/IfContext.cs index 3c79d38b06..407c64913c 100644 --- a/Prebuild/src/Core/Parse/IfContext.cs +++ b/Prebuild/src/Core/Parse/IfContext.cs @@ -27,128 +27,128 @@ using System; namespace Prebuild.Core.Parse { - /// - /// - /// - public enum IfState - { - /// - /// - /// - None, - /// - /// - /// - If, - /// - /// - /// - ElseIf, - /// - /// - /// - Else - } + /// + /// + /// + public enum IfState + { + /// + /// + /// + None, + /// + /// + /// + If, + /// + /// + /// + ElseIf, + /// + /// + /// + Else + } - /// - /// Summary description for IfContext. - /// - // Inspired by the equivalent WiX class (see www.sourceforge.net/projects/wix/) - public class IfContext - { - #region Properties + /// + /// Summary description for IfContext. + /// + // Inspired by the equivalent WiX class (see www.sourceforge.net/projects/wix/) + public class IfContext + { + #region Properties - bool m_Active; - bool m_Keep; - bool m_EverKept; - IfState m_State = IfState.None; + bool m_Active; + bool m_Keep; + bool m_EverKept; + IfState m_State = IfState.None; - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - /// if set to true [active]. - /// if set to true [keep]. - /// The state. - public IfContext(bool active, bool keep, IfState state) - { - m_Active = active; - m_Keep = keep; - m_EverKept = keep; - m_State = state; - } + /// + /// Initializes a new instance of the class. + /// + /// if set to true [active]. + /// if set to true [keep]. + /// The state. + public IfContext(bool active, bool keep, IfState state) + { + m_Active = active; + m_Keep = keep; + m_EverKept = keep; + m_State = state; + } - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets or sets a value indicating whether this is active. - /// - /// true if active; otherwise, false. - public bool Active - { - get - { - return m_Active; - } - set - { - m_Active = value; - } - } + /// + /// Gets or sets a value indicating whether this is active. + /// + /// true if active; otherwise, false. + public bool Active + { + get + { + return m_Active; + } + set + { + m_Active = value; + } + } - /// - /// Gets or sets a value indicating whether this is keep. - /// - /// true if keep; otherwise, false. - public bool Keep - { - get - { - return m_Keep; - } - set - { - m_Keep = value; - if(m_Keep) - { - m_EverKept = true; - } - } - } + /// + /// Gets or sets a value indicating whether this is keep. + /// + /// true if keep; otherwise, false. + public bool Keep + { + get + { + return m_Keep; + } + set + { + m_Keep = value; + if (m_Keep) + { + m_EverKept = true; + } + } + } - /// - /// Gets a value indicating whether [ever kept]. - /// - /// true if [ever kept]; otherwise, false. - public bool EverKept - { - get - { - return m_EverKept; - } - } + /// + /// Gets a value indicating whether [ever kept]. + /// + /// true if [ever kept]; otherwise, false. + public bool EverKept + { + get + { + return m_EverKept; + } + } - /// - /// Gets or sets the state. - /// - /// The state. - public IfState State - { - get - { - return m_State; - } - set - { - m_State = value; - } - } + /// + /// Gets or sets the state. + /// + /// The state. + public IfState State + { + get + { + return m_State; + } + set + { + m_State = value; + } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Parse/Preprocessor.cs b/Prebuild/src/Core/Parse/Preprocessor.cs index 0648fad8d8..ddae69da08 100644 --- a/Prebuild/src/Core/Parse/Preprocessor.cs +++ b/Prebuild/src/Core/Parse/Preprocessor.cs @@ -31,336 +31,336 @@ using System.Xml; namespace Prebuild.Core.Parse { - /// - /// - /// - public enum OperatorSymbol - { - /// - /// - /// - None, - /// - /// - /// - Equal, - /// - /// - /// - NotEqual, - /// - /// - /// - LessThan, - /// - /// - /// - GreaterThan, - /// - /// - /// - LessThanEqual, - /// - /// - /// - GreaterThanEqual - } + /// + /// + /// + public enum OperatorSymbol + { + /// + /// + /// + None, + /// + /// + /// + Equal, + /// + /// + /// + NotEqual, + /// + /// + /// + LessThan, + /// + /// + /// + GreaterThan, + /// + /// + /// + LessThanEqual, + /// + /// + /// + GreaterThanEqual + } - /// - /// - /// - public class Preprocessor - { - #region Constants + /// + /// + /// + public class Preprocessor + { + #region Constants - /// - /// Includes the regex to look for file tags in the processing instruction. - /// - private static readonly Regex includeFileRegex = new Regex("file=\"(.+?)\""); + /// + /// Includes the regex to look for file tags in the processing instruction. + /// + private static readonly Regex includeFileRegex = new Regex("file=\"(.+?)\""); - #endregion + #endregion - #region Fields + #region Fields - readonly XmlDocument m_OutDoc = new XmlDocument(); - readonly Stack m_IfStack = new Stack(); - readonly Dictionary m_Variables = new Dictionary(); + readonly XmlDocument m_OutDoc = new XmlDocument(); + readonly Stack m_IfStack = new Stack(); + readonly Dictionary m_Variables = new Dictionary(); - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - public Preprocessor() - { - RegisterVariable("OS", GetOS()); - RegisterVariable("RuntimeVersion", Environment.Version.Major); - RegisterVariable("RuntimeMajor", Environment.Version.Major); - RegisterVariable("RuntimeMinor", Environment.Version.Minor); - RegisterVariable("RuntimeRevision", Environment.Version.Revision); - } + /// + /// Initializes a new instance of the class. + /// + public Preprocessor() + { + RegisterVariable("OS", GetOS()); + RegisterVariable("RuntimeVersion", Environment.Version.Major); + RegisterVariable("RuntimeMajor", Environment.Version.Major); + RegisterVariable("RuntimeMinor", Environment.Version.Minor); + RegisterVariable("RuntimeRevision", Environment.Version.Revision); + } - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the processed doc. - /// - /// The processed doc. - public XmlDocument ProcessedDoc - { - get - { - return m_OutDoc; - } - } + /// + /// Gets the processed doc. + /// + /// The processed doc. + public XmlDocument ProcessedDoc + { + get + { + return m_OutDoc; + } + } - #endregion + #endregion - #region Private Methods - - /// - /// Parts of this code were taken from NAnt and is subject to the GPL - /// as per NAnt's license. Thanks to the NAnt guys for this little gem. - /// - /// - public static string GetOS() - { - PlatformID platId = Environment.OSVersion.Platform; - if(platId == PlatformID.Win32NT || platId == PlatformID.Win32Windows) - { - return "Win32"; - } + #region Private Methods - if (File.Exists("/System/Library/Frameworks/Cocoa.framework/Cocoa")) - { - return "MACOSX"; - } + /// + /// Parts of this code were taken from NAnt and is subject to the GPL + /// as per NAnt's license. Thanks to the NAnt guys for this little gem. + /// + /// + public static string GetOS() + { + PlatformID platId = Environment.OSVersion.Platform; + if (platId == PlatformID.Win32NT || platId == PlatformID.Win32Windows) + { + return "Win32"; + } - /* + if (File.Exists("/System/Library/Frameworks/Cocoa.framework/Cocoa")) + { + return "MACOSX"; + } + + /* * .NET 1.x, under Mono, the UNIX code is 128. Under * .NET 2.x, Mono or MS, the UNIX code is 4 */ - if(Environment.Version.Major == 1) - { - if((int)platId == 128) - { - return "UNIX"; - } - } - else if((int)platId == 4) - { - return "UNIX"; - } + if (Environment.Version.Major == 1) + { + if ((int)platId == 128) + { + return "UNIX"; + } + } + else if ((int)platId == 4) + { + return "UNIX"; + } - return "Unknown"; - } + return "Unknown"; + } - private static bool CompareNum(OperatorSymbol oper, int val1, int val2) - { - switch(oper) - { - case OperatorSymbol.Equal: - return (val1 == val2); - case OperatorSymbol.NotEqual: - return (val1 != val2); - case OperatorSymbol.LessThan: - return (val1 < val2); - case OperatorSymbol.LessThanEqual: - return (val1 <= val2); - case OperatorSymbol.GreaterThan: - return (val1 > val2); - case OperatorSymbol.GreaterThanEqual: - return (val1 >= val2); - } + private static bool CompareNum(OperatorSymbol oper, int val1, int val2) + { + switch (oper) + { + case OperatorSymbol.Equal: + return (val1 == val2); + case OperatorSymbol.NotEqual: + return (val1 != val2); + case OperatorSymbol.LessThan: + return (val1 < val2); + case OperatorSymbol.LessThanEqual: + return (val1 <= val2); + case OperatorSymbol.GreaterThan: + return (val1 > val2); + case OperatorSymbol.GreaterThanEqual: + return (val1 >= val2); + } - throw new WarningException("Unknown operator type"); - } + throw new WarningException("Unknown operator type"); + } - private static bool CompareStr(OperatorSymbol oper, string val1, string val2) - { - switch(oper) - { - case OperatorSymbol.Equal: - return (val1 == val2); - case OperatorSymbol.NotEqual: - return (val1 != val2); - case OperatorSymbol.LessThan: - return (val1.CompareTo(val2) < 0); - case OperatorSymbol.LessThanEqual: - return (val1.CompareTo(val2) <= 0); - case OperatorSymbol.GreaterThan: - return (val1.CompareTo(val2) > 0); - case OperatorSymbol.GreaterThanEqual: - return (val1.CompareTo(val2) >= 0); - } + private static bool CompareStr(OperatorSymbol oper, string val1, string val2) + { + switch (oper) + { + case OperatorSymbol.Equal: + return (val1 == val2); + case OperatorSymbol.NotEqual: + return (val1 != val2); + case OperatorSymbol.LessThan: + return (val1.CompareTo(val2) < 0); + case OperatorSymbol.LessThanEqual: + return (val1.CompareTo(val2) <= 0); + case OperatorSymbol.GreaterThan: + return (val1.CompareTo(val2) > 0); + case OperatorSymbol.GreaterThanEqual: + return (val1.CompareTo(val2) >= 0); + } - throw new WarningException("Unknown operator type"); - } + throw new WarningException("Unknown operator type"); + } - private static char NextChar(int idx, string str) - { - if((idx + 1) >= str.Length) - { - return Char.MaxValue; - } + private static char NextChar(int idx, string str) + { + if ((idx + 1) >= str.Length) + { + return Char.MaxValue; + } - return str[idx + 1]; - } - // Very very simple expression parser. Can only match expressions of the form - // : - // OS = Windows - // OS != Linux - // RuntimeMinor > 0 - private bool ParseExpression(string exp) - { - if(exp == null) - { - throw new ArgumentException("Invalid expression, cannot be null"); - } + return str[idx + 1]; + } + // Very very simple expression parser. Can only match expressions of the form + // : + // OS = Windows + // OS != Linux + // RuntimeMinor > 0 + private bool ParseExpression(string exp) + { + if (exp == null) + { + throw new ArgumentException("Invalid expression, cannot be null"); + } - exp = exp.Trim(); - if(exp.Length < 1) - { - throw new ArgumentException("Invalid expression, cannot be 0 length"); - } + exp = exp.Trim(); + if (exp.Length < 1) + { + throw new ArgumentException("Invalid expression, cannot be 0 length"); + } - string id = ""; - string str = ""; - OperatorSymbol oper = OperatorSymbol.None; - bool inStr = false; + string id = ""; + string str = ""; + OperatorSymbol oper = OperatorSymbol.None; + bool inStr = false; - for(int i = 0; i < exp.Length; i++) - { - char c = exp[i]; - if(Char.IsWhiteSpace(c)) - { - continue; - } + for (int i = 0; i < exp.Length; i++) + { + char c = exp[i]; + if (Char.IsWhiteSpace(c)) + { + continue; + } - if(Char.IsLetterOrDigit(c) || c == '_') - { - if(inStr) - { - str += c; - } - else - { - id += c; - } - } - else if(c == '\"') - { - inStr = !inStr; - if(inStr) - { - str = ""; - } - } - else - { - if(inStr) - { - str += c; - } - else - { - switch(c) - { - case '=': - oper = OperatorSymbol.Equal; - break; + if (Char.IsLetterOrDigit(c) || c == '_') + { + if (inStr) + { + str += c; + } + else + { + id += c; + } + } + else if (c == '\"') + { + inStr = !inStr; + if (inStr) + { + str = ""; + } + } + else + { + if (inStr) + { + str += c; + } + else + { + switch (c) + { + case '=': + oper = OperatorSymbol.Equal; + break; - case '!': - if(NextChar(i, exp) == '=') - { - oper = OperatorSymbol.NotEqual; - } - - break; + case '!': + if (NextChar(i, exp) == '=') + { + oper = OperatorSymbol.NotEqual; + } - case '<': - if(NextChar(i, exp) == '=') - { - oper = OperatorSymbol.LessThanEqual; - } - else - { - oper = OperatorSymbol.LessThan; - } - - break; + break; - case '>': - if(NextChar(i, exp) == '=') - { - oper = OperatorSymbol.GreaterThanEqual; - } - else - { - oper = OperatorSymbol.GreaterThan; - } + case '<': + if (NextChar(i, exp) == '=') + { + oper = OperatorSymbol.LessThanEqual; + } + else + { + oper = OperatorSymbol.LessThan; + } - break; - } - } - } - } + break; - - if(inStr) - { - throw new WarningException("Expected end of string in expression"); - } + case '>': + if (NextChar(i, exp) == '=') + { + oper = OperatorSymbol.GreaterThanEqual; + } + else + { + oper = OperatorSymbol.GreaterThan; + } - if(oper == OperatorSymbol.None) - { - throw new WarningException("Expected operator in expression"); - } - if(id.Length < 1) - { - throw new WarningException("Expected identifier in expression"); - } - if(str.Length < 1) - { - throw new WarningException("Expected value in expression"); - } + break; + } + } + } + } - bool ret; - try - { - object val = m_Variables[id.ToLower()]; - if(val == null) - { - throw new WarningException("Unknown identifier '{0}'", id); - } - Type t = val.GetType(); - if(t.IsAssignableFrom(typeof(int))) - { - int numVal = (int)val; - int numVal2 = Int32.Parse(str); - ret = CompareNum(oper, numVal, numVal2); - } - else - { - string strVal = val.ToString(); - string strVal2 = str; - ret = CompareStr(oper, strVal, strVal2); - } - } - catch(ArgumentException ex) - { - ex.ToString(); - throw new WarningException("Invalid value type for system variable '{0}', expected int", id); - } + if (inStr) + { + throw new WarningException("Expected end of string in expression"); + } - return ret; - } + if (oper == OperatorSymbol.None) + { + throw new WarningException("Expected operator in expression"); + } + if (id.Length < 1) + { + throw new WarningException("Expected identifier in expression"); + } + if (str.Length < 1) + { + throw new WarningException("Expected value in expression"); + } + + bool ret; + try + { + object val = m_Variables[id.ToLower()]; + if (val == null) + { + throw new WarningException("Unknown identifier '{0}'", id); + } + + Type t = val.GetType(); + if (t.IsAssignableFrom(typeof(int))) + { + int numVal = (int)val; + int numVal2 = Int32.Parse(str); + ret = CompareNum(oper, numVal, numVal2); + } + else + { + string strVal = val.ToString(); + string strVal2 = str; + ret = CompareStr(oper, strVal, strVal2); + } + } + catch (ArgumentException ex) + { + ex.ToString(); + throw new WarningException("Invalid value type for system variable '{0}', expected int", id); + } + + return ret; + } /// /// Taken from current Prebuild included in OpenSim 0.7.x @@ -371,282 +371,297 @@ namespace Prebuild.Core.Parse /// /// A /// - private static void WildCardInclude (Stack readerStack, string include) + private static void WildCardInclude(Stack readerStack, string include) { - if (!include.Contains ("*")) { + if (!include.Contains("*")) + { return; } - + // Console.WriteLine("Processing {0}", include); - + // Break up the include into pre and post wildcard sections - string preWildcard = include.Substring (0, include.IndexOf ("*")); - string postWildcard = include.Substring (include.IndexOf ("*") + 2); - + string preWildcard = include.Substring(0, include.IndexOf("*")); + string postWildcard = include.Substring(include.IndexOf("*") + 2); + // If preWildcard is a directory, recurse - if (Directory.Exists (preWildcard)) { - string[] directories = Directory.GetDirectories (preWildcard); - Array.Sort (directories); - Array.Reverse (directories); - foreach (string dirPath in directories) { + if (Directory.Exists(preWildcard)) + { + string[] directories = Directory.GetDirectories(preWildcard); + Array.Sort(directories); + Array.Reverse(directories); + foreach (string dirPath in directories) + { //Console.WriteLine ("Scanning : {0}", dirPath); - - string includeFile = Path.Combine (dirPath, postWildcard); - if (includeFile.Contains ("*")) { + + string includeFile = Path.Combine(dirPath, postWildcard); + if (includeFile.Contains("*")) + { // postWildcard included another wildcard, recurse. - WildCardInclude (readerStack, includeFile); - } else { - FileInfo file = new FileInfo (includeFile); - if (file.Exists) { + WildCardInclude(readerStack, includeFile); + } + else + { + FileInfo file = new FileInfo(includeFile); + if (file.Exists) + { //Console.WriteLine ("Including File: {0}", includeFile); - XmlReader newReader = new XmlTextReader (file.Open (FileMode.Open, FileAccess.Read, FileShare.Read)); - readerStack.Push (newReader); + XmlReader newReader = new XmlTextReader(file.Open(FileMode.Open, FileAccess.Read, FileShare.Read)); + readerStack.Push(newReader); } } } - } else { + } + else + { // preWildcard is not a path to a directory, so the wildcard is in the filename - string searchFilename = Path.GetFileName (preWildcard.Substring (preWildcard.IndexOf ("/") + 1) + "*" + postWildcard); - Console.WriteLine ("searchFilename: {0}", searchFilename); - - string searchDirectory = Path.GetDirectoryName (preWildcard); - Console.WriteLine ("searchDirectory: {0}", searchDirectory); - - string[] files = Directory.GetFiles (searchDirectory, searchFilename); - Array.Sort (files); - Array.Reverse (files); - foreach (string includeFile in files) { - FileInfo file = new FileInfo (includeFile); - if (file.Exists) { + string searchFilename = Path.GetFileName(preWildcard.Substring(preWildcard.IndexOf("/") + 1) + "*" + postWildcard); + Console.WriteLine("searchFilename: {0}", searchFilename); + + string searchDirectory = Path.GetDirectoryName(preWildcard); + Console.WriteLine("searchDirectory: {0}", searchDirectory); + + string[] files = Directory.GetFiles(searchDirectory, searchFilename); + Array.Sort(files); + Array.Reverse(files); + foreach (string includeFile in files) + { + FileInfo file = new FileInfo(includeFile); + if (file.Exists) + { // Console.WriteLine ("Including File: {0}", includeFile); - XmlReader newReader = new XmlTextReader (file.Open (FileMode.Open, FileAccess.Read, FileShare.Read)); - readerStack.Push (newReader); + XmlReader newReader = new XmlTextReader(file.Open(FileMode.Open, FileAccess.Read, FileShare.Read)); + readerStack.Push(newReader); } } } } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// - /// - /// - /// - public void RegisterVariable(string name, object variableValue) - { - if(name == null || variableValue == null) - { - return; - } + /// + /// + /// + /// + /// + public void RegisterVariable(string name, object variableValue) + { + if (name == null || variableValue == null) + { + return; + } - m_Variables[name.ToLower()] = variableValue; - } + m_Variables[name.ToLower()] = variableValue; + } - /// - /// Performs validation on the xml source as well as evaluates conditional and flow expresions - /// - /// For invalid use of conditional expressions or for invalid XML syntax. If a XmlValidatingReader is passed, then will also throw exceptions for non-schema-conforming xml + /// + /// Performs validation on the xml source as well as evaluates conditional and flow expresions + /// + /// For invalid use of conditional expressions or for invalid XML syntax. If a XmlValidatingReader is passed, then will also throw exceptions for non-schema-conforming xml /// - /// the output xml - public string Process(XmlReader initialReader) - { - if(initialReader == null) - { - throw new ArgumentException("Invalid XML reader to pre-process"); - } + /// the output xml + public string Process(XmlReader initialReader) + { + if (initialReader == null) + { + throw new ArgumentException("Invalid XML reader to pre-process"); + } - IfContext context = new IfContext(true, true, IfState.None); - StringWriter xmlText = new StringWriter(); - XmlTextWriter writer = new XmlTextWriter(xmlText); - writer.Formatting = Formatting.Indented; + IfContext context = new IfContext(true, true, IfState.None); + StringWriter xmlText = new StringWriter(); + XmlTextWriter writer = new XmlTextWriter(xmlText); + writer.Formatting = Formatting.Indented; - // Create a queue of XML readers and add the initial - // reader to it. Then we process until we run out of - // readers which lets the operation add more - // readers to generate a multi-file parser and not require - // XML fragments that a recursive version would use. - Stack readerStack = new Stack(); - readerStack.Push(initialReader); - - while(readerStack.Count > 0) - { - // Pop off the next reader. - XmlReader reader = readerStack.Pop(); + // Create a queue of XML readers and add the initial + // reader to it. Then we process until we run out of + // readers which lets the operation add more + // readers to generate a multi-file parser and not require + // XML fragments that a recursive version would use. + Stack readerStack = new Stack(); + readerStack.Push(initialReader); - // Process through this XML reader until it is - // completed (or it is replaced by the include - // operation). - while(reader.Read()) - { - // The prebuild file has a series of processing - // instructions which allow for specific - // inclusions based on operating system or to - // include additional files. - if(reader.NodeType == XmlNodeType.ProcessingInstruction) - { - bool ignore = false; + while (readerStack.Count > 0) + { + // Pop off the next reader. + XmlReader reader = readerStack.Pop(); - switch(reader.LocalName) - { - case "include": - // use regular expressions to parse out the attributes. - MatchCollection matches = includeFileRegex.Matches(reader.Value); + // Process through this XML reader until it is + // completed (or it is replaced by the include + // operation). + while (reader.Read()) + { + // The prebuild file has a series of processing + // instructions which allow for specific + // inclusions based on operating system or to + // include additional files. + if (reader.NodeType == XmlNodeType.ProcessingInstruction) + { + bool ignore = false; - // make sure there is only one file attribute. - if(matches.Count > 1) - { - throw new WarningException("An node was found, but it specified more than one file."); - } + switch (reader.LocalName) + { + case "include": + // use regular expressions to parse out the attributes. + MatchCollection matches = includeFileRegex.Matches(reader.Value); - if(matches.Count == 0) - { - throw new WarningException("An node was found, but it did not specify the file attribute."); - } + // make sure there is only one file attribute. + if (matches.Count > 1) + { + throw new WarningException("An node was found, but it specified more than one file."); + } + + if (matches.Count == 0) + { + throw new WarningException("An node was found, but it did not specify the file attribute."); + } // ***** Adding for wildcard handling // Push current reader back onto the stack. - readerStack.Push (reader); - + readerStack.Push(reader); + // Pull the file out from the regex and make sure it is a valid file before using it. string filename = matches[0].Groups[1].Value; - - filename = String.Join (Path.DirectorySeparatorChar.ToString (), filename.Split (new char[] { '/', '\\' })); - - if (!filename.Contains ("*")) { - - FileInfo includeFile = new FileInfo (filename); - if (!includeFile.Exists) { - throw new WarningException ("Cannot include file: " + includeFile.FullName); + + filename = String.Join(Path.DirectorySeparatorChar.ToString(), filename.Split(new char[] { '/', '\\' })); + + if (!filename.Contains("*")) + { + + FileInfo includeFile = new FileInfo(filename); + if (!includeFile.Exists) + { + throw new WarningException("Cannot include file: " + includeFile.FullName); } - + // Create a new reader object for this file. Then put the old reader back on the stack and start // processing using this new XML reader. - - XmlReader newReader = new XmlTextReader (includeFile.Open (FileMode.Open, FileAccess.Read, FileShare.Read)); + + XmlReader newReader = new XmlTextReader(includeFile.Open(FileMode.Open, FileAccess.Read, FileShare.Read)); reader = newReader; - readerStack.Push (reader); - - } else { - WildCardInclude (readerStack, filename); + readerStack.Push(reader); + } - - reader = (XmlReader)readerStack.Pop (); + else + { + WildCardInclude(readerStack, filename); + } + + reader = (XmlReader)readerStack.Pop(); ignore = true; break; - case "if": - m_IfStack.Push(context); - context = new IfContext(context.Keep & context.Active, ParseExpression(reader.Value), IfState.If); - ignore = true; - break; + case "if": + m_IfStack.Push(context); + context = new IfContext(context.Keep & context.Active, ParseExpression(reader.Value), IfState.If); + ignore = true; + break; - case "elseif": - if(m_IfStack.Count == 0) - { - throw new WarningException("Unexpected 'elseif' outside of 'if'"); - } - if(context.State != IfState.If && context.State != IfState.ElseIf) - { - throw new WarningException("Unexpected 'elseif' outside of 'if'"); - } + case "elseif": + if (m_IfStack.Count == 0) + { + throw new WarningException("Unexpected 'elseif' outside of 'if'"); + } + if (context.State != IfState.If && context.State != IfState.ElseIf) + { + throw new WarningException("Unexpected 'elseif' outside of 'if'"); + } - context.State = IfState.ElseIf; - if(!context.EverKept) - { - context.Keep = ParseExpression(reader.Value); - } - else - { - context.Keep = false; - } + context.State = IfState.ElseIf; + if (!context.EverKept) + { + context.Keep = ParseExpression(reader.Value); + } + else + { + context.Keep = false; + } - ignore = true; - break; + ignore = true; + break; - case "else": - if(m_IfStack.Count == 0) - { - throw new WarningException("Unexpected 'else' outside of 'if'"); - } - if(context.State != IfState.If && context.State != IfState.ElseIf) - { - throw new WarningException("Unexpected 'else' outside of 'if'"); - } + case "else": + if (m_IfStack.Count == 0) + { + throw new WarningException("Unexpected 'else' outside of 'if'"); + } + if (context.State != IfState.If && context.State != IfState.ElseIf) + { + throw new WarningException("Unexpected 'else' outside of 'if'"); + } - context.State = IfState.Else; - context.Keep = !context.EverKept; - ignore = true; - break; + context.State = IfState.Else; + context.Keep = !context.EverKept; + ignore = true; + break; - case "endif": - if(m_IfStack.Count == 0) - { - throw new WarningException("Unexpected 'endif' outside of 'if'"); - } + case "endif": + if (m_IfStack.Count == 0) + { + throw new WarningException("Unexpected 'endif' outside of 'if'"); + } - context = m_IfStack.Pop(); - ignore = true; - break; - } + context = m_IfStack.Pop(); + ignore = true; + break; + } - if(ignore) - { - continue; - } - }//end pre-proc instruction + if (ignore) + { + continue; + } + }//end pre-proc instruction - if(!context.Active || !context.Keep) - { - continue; - } + if (!context.Active || !context.Keep) + { + continue; + } - switch(reader.NodeType) - { - case XmlNodeType.Element: - bool empty = reader.IsEmptyElement; - writer.WriteStartElement(reader.Name); + switch (reader.NodeType) + { + case XmlNodeType.Element: + bool empty = reader.IsEmptyElement; + writer.WriteStartElement(reader.Name); - while (reader.MoveToNextAttribute()) - { - writer.WriteAttributeString(reader.Name, reader.Value); - } + while (reader.MoveToNextAttribute()) + { + writer.WriteAttributeString(reader.Name, reader.Value); + } - if(empty) - { - writer.WriteEndElement(); - } - - break; + if (empty) + { + writer.WriteEndElement(); + } - case XmlNodeType.EndElement: - writer.WriteEndElement(); - break; + break; - case XmlNodeType.Text: - writer.WriteString(reader.Value); - break; + case XmlNodeType.EndElement: + writer.WriteEndElement(); + break; - case XmlNodeType.CDATA: - writer.WriteCData(reader.Value); - break; + case XmlNodeType.Text: + writer.WriteString(reader.Value); + break; - default: - break; - } - } + case XmlNodeType.CDATA: + writer.WriteCData(reader.Value); + break; - if(m_IfStack.Count != 0) - { - throw new WarningException("Mismatched 'if', 'endif' pair"); - } - } - - return xmlText.ToString(); - } + default: + break; + } + } - #endregion - } + if (m_IfStack.Count != 0) + { + throw new WarningException("Mismatched 'if', 'endif' pair"); + } + } + + return xmlText.ToString(); + } + + #endregion + } } diff --git a/Prebuild/src/Core/Targets/AutotoolsTarget.cs b/Prebuild/src/Core/Targets/AutotoolsTarget.cs index 485e4dd724..14f0e03415 100644 --- a/Prebuild/src/Core/Targets/AutotoolsTarget.cs +++ b/Prebuild/src/Core/Targets/AutotoolsTarget.cs @@ -498,9 +498,9 @@ namespace Prebuild.Core.Targets foreach (ProjectNode project in solution.ProjectsTableOrder) { - m_Kernel.Log.Write(String.Format("Writing project: {0}", - project.Name)); - WriteProject(solution, project); + m_Kernel.Log.Write(String.Format("Writing project: {0}", + project.Name)); + WriteProject(solution, project); } } @@ -509,12 +509,13 @@ namespace Prebuild.Core.Targets { foreach (ReferencePathNode refPath in project.ReferencePaths) { - string fullPath = - Helper.MakeFilePath(refPath.Path, refName, "dll"); + string fullPath = + Helper.MakeFilePath(refPath.Path, refName, "dll"); - if (File.Exists(fullPath)) { - return fullPath; - } + if (File.Exists(fullPath)) + { + return fullPath; + } } return null; @@ -650,21 +651,24 @@ namespace Prebuild.Core.Targets string tempAssemblyFile = Path.Combine(Path.GetTempPath(), project.Name + "-temp.dll"); System.CodeDom.Compiler.CompilerParameters cparam = new System.CodeDom.Compiler.CompilerParameters(args, tempAssemblyFile); - + System.CodeDom.Compiler.CompilerResults cr = cscp.CompileAssemblyFromFile(cparam, sources); foreach (System.CodeDom.Compiler.CompilerError error in cr.Errors) Console.WriteLine("Error! '{0}'", error.ErrorText); - try { - string projectFullName = cr.CompiledAssembly.FullName; - Regex verRegex = new Regex("Version=([\\d\\.]+)"); - Match verMatch = verRegex.Match(projectFullName); - if (verMatch.Success) - projectVersion = verMatch.Groups[1].Value; - }catch{ - Console.WriteLine("Couldn't compile AssemblyInfo.cs"); + try + { + string projectFullName = cr.CompiledAssembly.FullName; + Regex verRegex = new Regex("Version=([\\d\\.]+)"); + Match verMatch = verRegex.Match(projectFullName); + if (verMatch.Success) + projectVersion = verMatch.Groups[1].Value; + } + catch + { + Console.WriteLine("Couldn't compile AssemblyInfo.cs"); } // Clean up the temp file @@ -673,11 +677,11 @@ namespace Prebuild.Core.Targets if (File.Exists(tempAssemblyFile)) File.Delete(tempAssemblyFile); } - catch + catch { Console.WriteLine("Error! '{0}'", e); } - + } // Tell the user if there's a problem copying the file @@ -719,7 +723,7 @@ namespace Prebuild.Core.Targets if (packagesHash.ContainsKey(refr.Name)) { - package = packagesHash[refr.Name]; + package = packagesHash[refr.Name]; } else @@ -794,32 +798,33 @@ namespace Prebuild.Core.Targets } catch (System.IO.IOException) { - if (solution.ProjectsTable.ContainsKey(refr.Name)){ + if (solution.ProjectsTable.ContainsKey(refr.Name)) + { - /* If an assembly is referenced, marked for - * local copy, in the list of projects for - * this solution, but does not exist, put a - * target into the Makefile.am to build the - * assembly and copy it to this project's - * directory - */ + /* If an assembly is referenced, marked for + * local copy, in the list of projects for + * this solution, but does not exist, put a + * target into the Makefile.am to build the + * assembly and copy it to this project's + * directory + */ - ProjectNode sourcePrj = - ((solution.ProjectsTable[refr.Name])); + ProjectNode sourcePrj = + ((solution.ProjectsTable[refr.Name])); - string target = - String.Format("{0}:\n" + - "\t$(MAKE) -C ../{1}\n" + - "\tln ../{2}/$@ $@\n", - filename, - sourcePrj.Name, - sourcePrj.Name ); + string target = + String.Format("{0}:\n" + + "\t$(MAKE) -C ../{1}\n" + + "\tln ../{2}/$@ $@\n", + filename, + sourcePrj.Name, + sourcePrj.Name); - localCopyTargets.Add(target); - } + localCopyTargets.Add(target); + } } } - else if( !pkgLibs.Contains(refr.Name) ) + else if (!pkgLibs.Contains(refr.Name)) { // Else, let's assume it's in the GAC or the lib path string assemName = string.Empty; @@ -975,27 +980,29 @@ namespace Prebuild.Core.Targets Stream autotoolsStream = Assembly.GetExecutingAssembly() .GetManifestResourceStream(fqStreamName); - if(autotoolsStream == null) { + if (autotoolsStream == null) + { - /* - * try without the default namespace prepended, in - * case prebuild.exe assembly was compiled with - * something other than Visual Studio .NET - */ + /* + * try without the default namespace prepended, in + * case prebuild.exe assembly was compiled with + * something other than Visual Studio .NET + */ - autotoolsStream = Assembly.GetExecutingAssembly() - .GetManifestResourceStream(streamName); - if(autotoolsStream == null){ - string errStr = - String.Format("Could not find embedded resource file:\n" + - "'{0}' or '{1}'", - streamName, fqStreamName - ); + autotoolsStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(streamName); + if (autotoolsStream == null) + { + string errStr = + String.Format("Could not find embedded resource file:\n" + + "'{0}' or '{1}'", + streamName, fqStreamName + ); - m_Kernel.Log.Write(errStr); + m_Kernel.Log.Write(errStr); - throw new System.Reflection.TargetException(errStr); - } + throw new System.Reflection.TargetException(errStr); + } } // Create an XML URL Resolver with default credentials @@ -1028,9 +1035,9 @@ namespace Prebuild.Core.Targets foreach (SolutionNode solution in kern.Solutions) { - m_Kernel.Log.Write(String.Format("Writing solution: {0}", - solution.Name)); - WriteCombine(solution); + m_Kernel.Log.Write(String.Format("Writing solution: {0}", + solution.Name)); + WriteCombine(solution); } m_Kernel = null; } diff --git a/Prebuild/src/Core/Targets/MonoDevelopTarget.cs b/Prebuild/src/Core/Targets/MonoDevelopTarget.cs index ea6d2c2233..9f574bba77 100644 --- a/Prebuild/src/Core/Targets/MonoDevelopTarget.cs +++ b/Prebuild/src/Core/Targets/MonoDevelopTarget.cs @@ -35,67 +35,67 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Targets { - /// - /// - /// - [Target("monodev")] - public class MonoDevelopTarget : ITarget - { - #region Fields + /// + /// + /// + [Target("monodev")] + public class MonoDevelopTarget : ITarget + { + #region Fields - private Kernel m_Kernel; + private Kernel m_Kernel; - #endregion + #endregion - #region Private Methods + #region Private Methods - private static string PrependPath(string path) - { - string tmpPath = Helper.NormalizePath(path, '/'); - Regex regex = new Regex(@"(\w):/(\w+)"); - Match match = regex.Match(tmpPath); - if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/') - { - tmpPath = Helper.NormalizePath(tmpPath); - } - else - { - tmpPath = Helper.NormalizePath("./" + tmpPath); - } + private static string PrependPath(string path) + { + string tmpPath = Helper.NormalizePath(path, '/'); + Regex regex = new Regex(@"(\w):/(\w+)"); + Match match = regex.Match(tmpPath); + if (match.Success || tmpPath[0] == '.' || tmpPath[0] == '/') + { + tmpPath = Helper.NormalizePath(tmpPath); + } + else + { + tmpPath = Helper.NormalizePath("./" + tmpPath); + } - return tmpPath; - } + return tmpPath; + } - private static string BuildReference(SolutionNode solution, ReferenceNode refr) - { - string ret = ""; - } - else - { - ProjectNode project = (ProjectNode)refr.Parent; - string fileRef = FindFileReference(refr.Name, project); + private static string BuildReference(SolutionNode solution, ReferenceNode refr) + { + string ret = ""; + } + else + { + ProjectNode project = (ProjectNode)refr.Parent; + string fileRef = FindFileReference(refr.Name, project); - if(refr.Path != null || fileRef != null) - { - ret += "Assembly\" refto=\""; + if (refr.Path != null || fileRef != null) + { + ret += "Assembly\" refto=\""; - string finalPath = (refr.Path != null) ? Helper.MakeFilePath(refr.Path, refr.Name, "dll") : fileRef; + string finalPath = (refr.Path != null) ? Helper.MakeFilePath(refr.Path, refr.Name, "dll") : fileRef; - ret += finalPath; - ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />"; - return ret; - } + ret += finalPath; + ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />"; + return ret; + } - ret += "Gac\""; - ret += " localcopy=\"" + refr.LocalCopy.ToString() + "\""; - ret += " refto=\""; - try - { - /* + ret += "Gac\""; + ret += " localcopy=\"" + refr.LocalCopy.ToString() + "\""; + ret += " refto=\""; + try + { + /* Day changed to 28 Mar 2007 ... 08:09 < cj> is there anything that replaces Assembly.LoadFromPartialName() ? @@ -110,406 +110,406 @@ namespace Prebuild.Core.Targets 08:12 < cj> alrighty. 08:12 < jonp> you just get warnings when using it */ - Assembly assem = Assembly.LoadWithPartialName(refr.Name); - ret += assem.FullName; + Assembly assem = Assembly.LoadWithPartialName(refr.Name); + ret += assem.FullName; //ret += refr.Name; - } - catch (System.NullReferenceException e) - { - e.ToString(); - ret += refr.Name; - } - ret += "\" />"; - } + } + catch (System.NullReferenceException e) + { + e.ToString(); + ret += refr.Name; + } + ret += "\" />"; + } - return ret; - } + return ret; + } - private static string FindFileReference(string refName, ProjectNode project) - { - foreach(ReferencePathNode refPath in project.ReferencePaths) - { - string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll"); + private static string FindFileReference(string refName, ProjectNode project) + { + foreach (ReferencePathNode refPath in project.ReferencePaths) + { + string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll"); - if(File.Exists(fullPath)) - { - return fullPath; - } - } + if (File.Exists(fullPath)) + { + return fullPath; + } + } - return null; - } + return null; + } - /// - /// Gets the XML doc file. - /// - /// The project. - /// The conf. - /// - public static string GenerateXmlDocFile(ProjectNode project, ConfigurationNode conf) - { - if( conf == null ) - { - throw new ArgumentNullException("conf"); - } - if( project == null ) - { - throw new ArgumentNullException("project"); - } - string docFile = (string)conf.Options["XmlDocFile"]; - if(docFile != null && docFile.Length == 0)//default to assembly name if not specified - { - return "False"; - } - return "True"; - } + /// + /// Gets the XML doc file. + /// + /// The project. + /// The conf. + /// + public static string GenerateXmlDocFile(ProjectNode project, ConfigurationNode conf) + { + if (conf == null) + { + throw new ArgumentNullException("conf"); + } + if (project == null) + { + throw new ArgumentNullException("project"); + } + string docFile = (string)conf.Options["XmlDocFile"]; + if (docFile != null && docFile.Length == 0)//default to assembly name if not specified + { + return "False"; + } + return "True"; + } - private void WriteProject(SolutionNode solution, ProjectNode project) - { - string csComp = "Mcs"; - string netRuntime = "Mono"; - if(project.Runtime == ClrRuntime.Microsoft) - { - csComp = "Csc"; - netRuntime = "MsNet"; - } + private void WriteProject(SolutionNode solution, ProjectNode project) + { + string csComp = "Mcs"; + string netRuntime = "Mono"; + if (project.Runtime == ClrRuntime.Microsoft) + { + csComp = "Csc"; + netRuntime = "MsNet"; + } - string projFile = Helper.MakeFilePath(project.FullPath, project.Name, "mdp"); - StreamWriter ss = new StreamWriter(projFile); + string projFile = Helper.MakeFilePath(project.FullPath, project.Name, "mdp"); + StreamWriter ss = new StreamWriter(projFile); - m_Kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(projFile)); + m_Kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(projFile)); - using(ss) - { - ss.WriteLine( - "", - project.Name, - project.RootNamespace - ); - - int count = 0; - - ss.WriteLine(" ", solution.ActiveConfig); + using (ss) + { + ss.WriteLine( + "", + project.Name, + project.RootNamespace + ); - foreach(ConfigurationNode conf in project.Configurations) - { - ss.WriteLine(" ", conf.Name); - ss.Write(" "); - - ss.Write(" "); - - ss.Write(" ", solution.ActiveConfig); + + foreach (ConfigurationNode conf in project.Configurations) + { + ss.WriteLine(" ", conf.Name); + ss.Write(" "); + + ss.Write(" "); + + ss.Write(" "); - - ss.Write(" "); - ss.WriteLine(" "); + ss.WriteLine(" />"); - count++; - } - ss.WriteLine(" "); + ss.Write(" "); + ss.WriteLine(" "); - ss.Write(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - - ss.WriteLine(" "); - foreach(string file in project.Files) - { - string buildAction; - string dependson = ""; - string resource_id = ""; - string copyToOutput = ""; - - switch(project.Files.GetBuildAction(file)) - { - case BuildAction.None: - buildAction = "Nothing"; - break; + count++; + } + ss.WriteLine(" "); - case BuildAction.Content: - buildAction = "Exclude"; - break; + ss.Write(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); - case BuildAction.EmbeddedResource: - buildAction = "EmbedAsResource"; - break; + ss.WriteLine(" "); + foreach (string file in project.Files) + { + string buildAction; + string dependson = ""; + string resource_id = ""; + string copyToOutput = ""; - default: - buildAction = "Compile"; - break; - } + switch (project.Files.GetBuildAction(file)) + { + case BuildAction.None: + buildAction = "Nothing"; + break; + + case BuildAction.Content: + buildAction = "Exclude"; + break; + + case BuildAction.EmbeddedResource: + buildAction = "EmbedAsResource"; + break; + + default: + buildAction = "Compile"; + break; + } if (project.Files.GetCopyToOutput(file) != CopyToOutput.Never) - buildAction = "FileCopy"; + buildAction = "FileCopy"; - // Sort of a hack, we try and resolve the path and make it relative, if we can. - string extension = Path.GetExtension(file); - string designer_format = string.Format(".Designer{0}", extension); + // Sort of a hack, we try and resolve the path and make it relative, if we can. + string extension = Path.GetExtension(file); + string designer_format = string.Format(".Designer{0}", extension); - if (file.EndsWith(designer_format)) - { - string basename = file.Substring(0, file.LastIndexOf(designer_format)); - string[] extensions = new string[] { ".cs", ".resx", ".settings" }; + if (file.EndsWith(designer_format)) + { + string basename = file.Substring(0, file.LastIndexOf(designer_format)); + string[] extensions = new string[] { ".cs", ".resx", ".settings" }; - foreach(string ext in extensions) - { - if (project.Files.Contains(basename + ext)) - { - dependson = string.Format(" dependson=\"{0}{1}\"", basename, ext); - break; - } - } - } - if (extension == ".resx") - { - buildAction = "EmbedAsResource"; - string basename = file.Substring(0, file.LastIndexOf(".resx")); - - // Visual Studio type resx + form dependency - if (project.Files.Contains(basename + ".cs")) - { - dependson = string.Format(" dependson=\"{0}{1}\"", basename, ".cs"); - } + foreach (string ext in extensions) + { + if (project.Files.Contains(basename + ext)) + { + dependson = string.Format(" dependson=\"{0}{1}\"", basename, ext); + break; + } + } + } + if (extension == ".resx") + { + buildAction = "EmbedAsResource"; + string basename = file.Substring(0, file.LastIndexOf(".resx")); - // We need to specify a resources file name to avoid MissingManifestResourceExceptions - // in libraries that are built. - resource_id = string.Format(" resource_id=\"{0}.{1}.resources\"", - project.AssemblyName, basename.Replace("/", ".")); - } + // Visual Studio type resx + form dependency + if (project.Files.Contains(basename + ".cs")) + { + dependson = string.Format(" dependson=\"{0}{1}\"", basename, ".cs"); + } - switch(project.Files.GetCopyToOutput(file)) - { - case CopyToOutput.Always: - copyToOutput = string.Format(" copyToOutputDirectory=\"Always\""); - break; - case CopyToOutput.PreserveNewest: - copyToOutput = string.Format(" copyToOutputDirectory=\"PreserveNewest\""); - break; - } - - // Sort of a hack, we try and resolve the path and make it relative, if we can. - string filePath = PrependPath(file); - ss.WriteLine(" ", - filePath, buildAction, dependson, resource_id, copyToOutput); - } - ss.WriteLine(" "); + // We need to specify a resources file name to avoid MissingManifestResourceExceptions + // in libraries that are built. + resource_id = string.Format(" resource_id=\"{0}.{1}.resources\"", + project.AssemblyName, basename.Replace("/", ".")); + } - ss.WriteLine(" "); - foreach(ReferenceNode refr in project.References) - { - ss.WriteLine(" {0}", BuildReference(solution, refr)); - } - ss.WriteLine(" "); + switch (project.Files.GetCopyToOutput(file)) + { + case CopyToOutput.Always: + copyToOutput = string.Format(" copyToOutputDirectory=\"Always\""); + break; + case CopyToOutput.PreserveNewest: + copyToOutput = string.Format(" copyToOutputDirectory=\"PreserveNewest\""); + break; + } + + // Sort of a hack, we try and resolve the path and make it relative, if we can. + string filePath = PrependPath(file); + ss.WriteLine(" ", + filePath, buildAction, dependson, resource_id, copyToOutput); + } + ss.WriteLine(" "); + + ss.WriteLine(" "); + foreach (ReferenceNode refr in project.References) + { + ss.WriteLine(" {0}", BuildReference(solution, refr)); + } + ss.WriteLine(" "); - ss.WriteLine(""); - } + ss.WriteLine(""); + } - m_Kernel.CurrentWorkingDirectory.Pop(); - } + m_Kernel.CurrentWorkingDirectory.Pop(); + } - private void WriteCombine(SolutionNode solution) - { - m_Kernel.Log.Write("Creating MonoDevelop combine and project files"); - foreach(ProjectNode project in solution.Projects) - { - if(m_Kernel.AllowProject(project.FilterGroups)) - { - m_Kernel.Log.Write("...Creating project: {0}", project.Name); - WriteProject(solution, project); - } - } + private void WriteCombine(SolutionNode solution) + { + m_Kernel.Log.Write("Creating MonoDevelop combine and project files"); + foreach (ProjectNode project in solution.Projects) + { + if (m_Kernel.AllowProject(project.FilterGroups)) + { + m_Kernel.Log.Write("...Creating project: {0}", project.Name); + WriteProject(solution, project); + } + } - m_Kernel.Log.Write(""); - string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "mds"); - StreamWriter ss = new StreamWriter(combFile); + m_Kernel.Log.Write(""); + string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "mds"); + StreamWriter ss = new StreamWriter(combFile); + + m_Kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(combFile)); - m_Kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(combFile)); - int count = 0; - - using(ss) - { - ss.WriteLine("", solution.Name); - count = 0; - foreach(ConfigurationNode conf in solution.Configurations) - { - if(count == 0) - { - ss.WriteLine(" ", conf.Name); - } + using (ss) + { + ss.WriteLine("", solution.Name); - ss.WriteLine(" ", conf.Name); - foreach(ProjectNode project in solution.Projects) - { - ss.WriteLine(" ", project.Name, conf.Name); - } - ss.WriteLine(" "); + count = 0; + foreach (ConfigurationNode conf in solution.Configurations) + { + if (count == 0) + { + ss.WriteLine(" ", conf.Name); + } - count++; - } - ss.WriteLine(" "); - - count = 0; - - foreach(ProjectNode project in solution.Projects) - { - if(count == 0) - ss.WriteLine(" ", project.Name); + ss.WriteLine(" ", conf.Name); + foreach (ProjectNode project in solution.Projects) + { + ss.WriteLine(" ", project.Name, conf.Name); + } + ss.WriteLine(" "); - ss.WriteLine(" ", project.Name); - count++; - } - ss.WriteLine(" "); - - ss.WriteLine(" "); - foreach(ProjectNode project in solution.Projects) - { - string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath); - ss.WriteLine(" ", - Helper.MakeFilePath(path, project.Name, "mdp")); - } - ss.WriteLine(" "); - - ss.WriteLine(""); - } + count++; + } + ss.WriteLine(" "); - m_Kernel.CurrentWorkingDirectory.Pop(); - } + count = 0; - private void CleanProject(ProjectNode project) - { - m_Kernel.Log.Write("...Cleaning project: {0}", project.Name); - string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "mdp"); - Helper.DeleteIfExists(projectFile); - } + foreach (ProjectNode project in solution.Projects) + { + if (count == 0) + ss.WriteLine(" ", project.Name); - private void CleanSolution(SolutionNode solution) - { - m_Kernel.Log.Write("Cleaning MonoDevelop combine and project files for", solution.Name); + ss.WriteLine(" ", project.Name); + count++; + } + ss.WriteLine(" "); - string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "mds"); - Helper.DeleteIfExists(slnFile); + ss.WriteLine(" "); + foreach (ProjectNode project in solution.Projects) + { + string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath); + ss.WriteLine(" ", + Helper.MakeFilePath(path, project.Name, "mdp")); + } + ss.WriteLine(" "); - foreach(ProjectNode project in solution.Projects) - { - CleanProject(project); - } - - m_Kernel.Log.Write(""); - } + ss.WriteLine(""); + } - #endregion + m_Kernel.CurrentWorkingDirectory.Pop(); + } - #region ITarget Members + private void CleanProject(ProjectNode project) + { + m_Kernel.Log.Write("...Cleaning project: {0}", project.Name); + string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "mdp"); + Helper.DeleteIfExists(projectFile); + } - /// - /// Writes the specified kern. - /// - /// The kern. - public void Write(Kernel kern) - { - if( kern == null ) - { - throw new ArgumentNullException("kern"); - } - m_Kernel = kern; - foreach(SolutionNode solution in kern.Solutions) - { - WriteCombine(solution); - } - m_Kernel = null; - } + private void CleanSolution(SolutionNode solution) + { + m_Kernel.Log.Write("Cleaning MonoDevelop combine and project files for", solution.Name); - /// - /// Cleans the specified kern. - /// - /// The kern. - public virtual void Clean(Kernel kern) - { - if( kern == null ) - { - throw new ArgumentNullException("kern"); - } - m_Kernel = kern; - foreach(SolutionNode sol in kern.Solutions) - { - CleanSolution(sol); - } - m_Kernel = null; - } + string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "mds"); + Helper.DeleteIfExists(slnFile); - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return "sharpdev"; - } - } + foreach (ProjectNode project in solution.Projects) + { + CleanProject(project); + } - #endregion - } + m_Kernel.Log.Write(""); + } + + #endregion + + #region ITarget Members + + /// + /// Writes the specified kern. + /// + /// The kern. + public void Write(Kernel kern) + { + if (kern == null) + { + throw new ArgumentNullException("kern"); + } + m_Kernel = kern; + foreach (SolutionNode solution in kern.Solutions) + { + WriteCombine(solution); + } + m_Kernel = null; + } + + /// + /// Cleans the specified kern. + /// + /// The kern. + public virtual void Clean(Kernel kern) + { + if (kern == null) + { + throw new ArgumentNullException("kern"); + } + m_Kernel = kern; + foreach (SolutionNode sol in kern.Solutions) + { + CleanSolution(sol); + } + m_Kernel = null; + } + + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return "sharpdev"; + } + } + + #endregion + } } diff --git a/Prebuild/src/Core/Targets/NAntTarget.cs b/Prebuild/src/Core/Targets/NAntTarget.cs index 925f5ca86d..0c3679be03 100644 --- a/Prebuild/src/Core/Targets/NAntTarget.cs +++ b/Prebuild/src/Core/Targets/NAntTarget.cs @@ -47,36 +47,36 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Targets { - /// - /// - /// - [Target("nant")] - public class NAntTarget : ITarget - { - #region Fields + /// + /// + /// + [Target("nant")] + public class NAntTarget : ITarget + { + #region Fields - private Kernel m_Kernel; + private Kernel m_Kernel; - #endregion + #endregion - #region Private Methods + #region Private Methods - private static string PrependPath(string path) - { - string tmpPath = Helper.NormalizePath(path, '/'); - Regex regex = new Regex(@"(\w):/(\w+)"); - Match match = regex.Match(tmpPath); - //if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/') - //{ - tmpPath = Helper.NormalizePath(tmpPath); - //} - // else - // { - // tmpPath = Helper.NormalizePath("./" + tmpPath); - // } + private static string PrependPath(string path) + { + string tmpPath = Helper.NormalizePath(path, '/'); + Regex regex = new Regex(@"(\w):/(\w+)"); + Match match = regex.Match(tmpPath); + //if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/') + //{ + tmpPath = Helper.NormalizePath(tmpPath); + //} + // else + // { + // tmpPath = Helper.NormalizePath("./" + tmpPath); + // } - return tmpPath; - } + return tmpPath; + } private static string BuildReference(SolutionNode solution, ProjectNode currentProject, ReferenceNode refr) { @@ -85,16 +85,16 @@ namespace Prebuild.Core.Targets { return refr.Path; } - + if (solution.ProjectsTable.ContainsKey(refr.Name)) { - ProjectNode projectRef = (ProjectNode) solution.ProjectsTable[refr.Name]; + ProjectNode projectRef = (ProjectNode)solution.ProjectsTable[refr.Name]; string finalPath = Helper.NormalizePath(refr.Name + GetProjectExtension(projectRef), '/'); return finalPath; } - ProjectNode project = (ProjectNode) refr.Parent; + ProjectNode project = (ProjectNode)refr.Parent; // Do we have an explicit file reference? string fileRef = FindFileReference(refr.Name, project); @@ -113,7 +113,7 @@ namespace Prebuild.Core.Targets return refr.Name + ".dll"; } - public static string GetRefFileName(string refName) + public static string GetRefFileName(string refName) { if (ExtensionSpecified(refName)) { @@ -140,11 +140,11 @@ namespace Prebuild.Core.Targets return extension; } - private static string FindFileReference(string refName, ProjectNode project) - { - foreach (ReferencePathNode refPath in project.ReferencePaths) - { - string fullPath = Helper.MakeFilePath(refPath.Path, refName); + private static string FindFileReference(string refName, ProjectNode project) + { + foreach (ReferencePathNode refPath in project.ReferencePaths) + { + string fullPath = Helper.MakeFilePath(refPath.Path, refName); if (File.Exists(fullPath)) { @@ -153,10 +153,10 @@ namespace Prebuild.Core.Targets fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll"); - if (File.Exists(fullPath)) - { - return fullPath; - } + if (File.Exists(fullPath)) + { + return fullPath; + } fullPath = Helper.MakeFilePath(refPath.Path, refName, "exe"); @@ -164,225 +164,226 @@ namespace Prebuild.Core.Targets { return fullPath; } - } + } - return null; - } + return null; + } - /// - /// Gets the XML doc file. - /// - /// The project. - /// The conf. - /// - public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf) - { - if (conf == null) - { - throw new ArgumentNullException("conf"); - } - if (project == null) - { - throw new ArgumentNullException("project"); - } - string docFile = (string)conf.Options["XmlDocFile"]; - // if(docFile != null && docFile.Length == 0)//default to assembly name if not specified - // { - // return Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml"; - // } - return docFile; - } + /// + /// Gets the XML doc file. + /// + /// The project. + /// The conf. + /// + public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf) + { + if (conf == null) + { + throw new ArgumentNullException("conf"); + } + if (project == null) + { + throw new ArgumentNullException("project"); + } + string docFile = (string)conf.Options["XmlDocFile"]; + // if(docFile != null && docFile.Length == 0)//default to assembly name if not specified + // { + // return Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml"; + // } + return docFile; + } - private void WriteProject(SolutionNode solution, ProjectNode project) - { + private void WriteProject(SolutionNode solution, ProjectNode project) + { string projFile = Helper.MakeFilePath(project.FullPath, project.Name + GetProjectExtension(project), "build"); - StreamWriter ss = new StreamWriter(projFile); + StreamWriter ss = new StreamWriter(projFile); - m_Kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(projFile)); - bool hasDoc = false; + m_Kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(projFile)); + bool hasDoc = false; - using (ss) - { - ss.WriteLine(""); - ss.WriteLine("", project.Name); - ss.WriteLine(" ", "build"); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - foreach (ReferenceNode refr in project.References) - { - if (refr.LocalCopy) - { - ss.WriteLine(" ", '/')); - } - } - - ss.WriteLine(" "); - ss.WriteLine(" "); - if (project.ConfigFile != null && project.ConfigFile.Length!=0) - { - ss.Write(" "); + ss.WriteLine("", project.Name); + ss.WriteLine(" ", "build"); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + foreach (ReferenceNode refr in project.References) + { + if (refr.LocalCopy) + { + ss.WriteLine(" ", '/')); + } + } - if (project.Type == ProjectType.Library) - { - ss.Write(".dll.config\""); - } - else - { - ss.Write(".exe.config\""); - } - ss.WriteLine(" />"); - } + ss.WriteLine(" "); + ss.WriteLine(" "); + if (project.ConfigFile != null && project.ConfigFile.Length != 0) + { + ss.Write(" "); - ss.WriteLine(" {0}", ""); - - foreach (string file in project.Files) - { - // Ignore if we aren't content - if (project.Files.GetBuildAction(file) != BuildAction.Content) - continue; + if (project.Type == ProjectType.Library) + { + ss.Write(".dll.config\""); + } + else + { + ss.Write(".exe.config\""); + } + ss.WriteLine(" />"); + } - // Create a include tag - ss.WriteLine(" {0}", ""); - } + // Add the content files to just be copied + ss.WriteLine(" {0}", ""); + ss.WriteLine(" {0}", ""); - ss.WriteLine(" {0}", ""); - ss.WriteLine(" {0}", ""); + foreach (string file in project.Files) + { + // Ignore if we aren't content + if (project.Files.GetBuildAction(file) != BuildAction.Content) + continue; - ss.Write(" "); + } + + ss.WriteLine(" {0}", ""); + ss.WriteLine(" {0}", ""); + + ss.Write(" "); - ss.WriteLine(" ", project.RootNamespace); - foreach (string file in project.Files) - { - switch (project.Files.GetBuildAction(file)) - { - case BuildAction.EmbeddedResource: - ss.WriteLine(" {0}", ""); - break; - default: - if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings) - { - ss.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx"); - } - break; - } - } - //if (project.Files.GetSubType(file).ToString() != "Code") - //{ - // ps.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx"); + ss.WriteLine(" ", project.RootNamespace); + foreach (string file in project.Files) + { + switch (project.Files.GetBuildAction(file)) + { + case BuildAction.EmbeddedResource: + ss.WriteLine(" {0}", ""); + break; + default: + if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings) + { + ss.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx"); + } + break; + } + } + //if (project.Files.GetSubType(file).ToString() != "Code") + //{ + // ps.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx"); - ss.WriteLine(" "); - ss.WriteLine(" "); - foreach (string file in project.Files) - { - switch (project.Files.GetBuildAction(file)) - { - case BuildAction.Compile: - ss.WriteLine(" "); - break; - default: - break; - } - } - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - foreach(ReferencePathNode refPath in project.ReferencePaths) + ss.WriteLine(" "); + ss.WriteLine(" "); + foreach (string file in project.Files) + { + switch (project.Files.GetBuildAction(file)) + { + case BuildAction.Compile: + ss.WriteLine(" "); + break; + default: + break; + } + } + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + foreach (ReferencePathNode refPath in project.ReferencePaths) { ss.WriteLine(" "); } - ss.WriteLine(" "); - foreach (ReferenceNode refr in project.References) - { - string path = Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReference(solution, project, refr)), '/'); - if (refr.Path != null) { + ss.WriteLine(" "); + foreach (ReferenceNode refr in project.References) + { + string path = Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReference(solution, project, refr)), '/'); + if (refr.Path != null) + { if (ExtensionSpecified(refr.Name)) { - ss.WriteLine (" "); + ss.WriteLine(" "); } else { - ss.WriteLine (" "); + ss.WriteLine(" "); } } else { - ss.WriteLine (" "); + ss.WriteLine(" "); } - } - ss.WriteLine(" "); + } + ss.WriteLine(" "); - ss.WriteLine(" "); + ss.WriteLine(" "); - foreach (ConfigurationNode conf in project.Configurations) + foreach (ConfigurationNode conf in project.Configurations) { if (!String.IsNullOrEmpty(conf.Options.OutputPath)) { @@ -404,170 +405,170 @@ namespace Prebuild.Core.Targets } } - ss.WriteLine(" "); + ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); - ss.WriteLine(" "); - if (hasDoc) - { - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.Write(" "); - } - else - { - ss.WriteLine(".exe\" />"); - } + ss.WriteLine(" "); + if (hasDoc) + { + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.Write(" "); + } + else + { + ss.WriteLine(".exe\" />"); + } - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - // foreach(ReferenceNode refr in project.References) - // { - // string path = Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReferencePath(solution, refr)), '/'); - // if (path != "") - // { - // ss.WriteLine(" ", path); - // } - // } - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - } - ss.WriteLine(" "); - ss.WriteLine(""); - } - m_Kernel.CurrentWorkingDirectory.Pop(); - } + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + // foreach(ReferenceNode refr in project.References) + // { + // string path = Helper.NormalizePath(Helper.MakePathRelativeTo(project.FullPath, BuildReferencePath(solution, refr)), '/'); + // if (path != "") + // { + // ss.WriteLine(" ", path); + // } + // } + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + } + ss.WriteLine(" "); + ss.WriteLine(""); + } + m_Kernel.CurrentWorkingDirectory.Pop(); + } - private void WriteCombine(SolutionNode solution) - { - m_Kernel.Log.Write("Creating NAnt build files"); - foreach (ProjectNode project in solution.Projects) - { - if (m_Kernel.AllowProject(project.FilterGroups)) - { - m_Kernel.Log.Write("...Creating project: {0}", project.Name); - WriteProject(solution, project); - } - } + private void WriteCombine(SolutionNode solution) + { + m_Kernel.Log.Write("Creating NAnt build files"); + foreach (ProjectNode project in solution.Projects) + { + if (m_Kernel.AllowProject(project.FilterGroups)) + { + m_Kernel.Log.Write("...Creating project: {0}", project.Name); + WriteProject(solution, project); + } + } - m_Kernel.Log.Write(""); - string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "build"); - StreamWriter ss = new StreamWriter(combFile); + m_Kernel.Log.Write(""); + string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "build"); + StreamWriter ss = new StreamWriter(combFile); - m_Kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(combFile)); + m_Kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(combFile)); - using (ss) - { - ss.WriteLine(""); - ss.WriteLine("", solution.Name); - ss.WriteLine(" "); - ss.WriteLine(); + using (ss) + { + ss.WriteLine(""); + ss.WriteLine("", solution.Name); + ss.WriteLine(" "); + ss.WriteLine(); - //ss.WriteLine(" "); - //ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); + //ss.WriteLine(" "); + //ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); - // Use the active configuration, which is the first configuration name in the prebuild file. - Dictionary emittedConfigurations = new Dictionary(); + // Use the active configuration, which is the first configuration name in the prebuild file. + Dictionary emittedConfigurations = new Dictionary(); - ss.WriteLine(" ", solution.ActiveConfig); - ss.WriteLine(); + ss.WriteLine(" ", solution.ActiveConfig); + ss.WriteLine(); - foreach (ConfigurationNode conf in solution.Configurations) - { - // If the name isn't in the emitted configurations, we give a high level target to the - // platform specific on. This lets "Debug" point to "Debug-AnyCPU". - if (!emittedConfigurations.ContainsKey(conf.Name)) - { - // Add it to the dictionary so we only emit one. - emittedConfigurations.Add(conf.Name, conf.Platform); + foreach (ConfigurationNode conf in solution.Configurations) + { + // If the name isn't in the emitted configurations, we give a high level target to the + // platform specific on. This lets "Debug" point to "Debug-AnyCPU". + if (!emittedConfigurations.ContainsKey(conf.Name)) + { + // Add it to the dictionary so we only emit one. + emittedConfigurations.Add(conf.Name, conf.Platform); - // Write out the target block. - ss.WriteLine(" ", conf.Name, conf.Platform); - ss.WriteLine(" "); - ss.WriteLine(); - } + // Write out the target block. + ss.WriteLine(" ", conf.Name, conf.Platform); + ss.WriteLine(" "); + ss.WriteLine(); + } - // Write out the target for the configuration. - ss.WriteLine(" ", conf.Name, conf.Platform); - ss.WriteLine(" ", conf.Name); - ss.WriteLine(" ", conf.Options["DebugInformation"].ToString().ToLower()); - ss.WriteLine("\t\t ", conf.Platform); - ss.WriteLine(" "); - ss.WriteLine(); - } + // Write out the target for the configuration. + ss.WriteLine(" ", conf.Name, conf.Platform); + ss.WriteLine(" ", conf.Name); + ss.WriteLine(" ", conf.Options["DebugInformation"].ToString().ToLower()); + ss.WriteLine("\t\t ", conf.Platform); + ss.WriteLine(" "); + ss.WriteLine(); + } - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(" "); - ss.WriteLine(); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(" "); + ss.WriteLine(); ss.WriteLine(" "); ss.WriteLine(" "); @@ -650,7 +651,7 @@ namespace Prebuild.Core.Targets } } - ss.WriteLine(" "); + ss.WriteLine(" "); foreach (ProjectNode project in solution.Projects) { string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath); diff --git a/Prebuild/src/Core/Targets/SharpDevelop2Target.cs b/Prebuild/src/Core/Targets/SharpDevelop2Target.cs index 66dd1bc6f6..0f4038875f 100644 --- a/Prebuild/src/Core/Targets/SharpDevelop2Target.cs +++ b/Prebuild/src/Core/Targets/SharpDevelop2Target.cs @@ -29,11 +29,11 @@ using Prebuild.Core.Attributes; namespace Prebuild.Core.Targets { - /// - /// - /// - [Target("sharpdev2")] - public class SharpDevelop2Target : VS2005Target + /// + /// + /// + [Target("sharpdev2")] + public class SharpDevelop2Target : VS2005Target { #region Properties public override string VersionName @@ -45,38 +45,38 @@ namespace Prebuild.Core.Targets } #endregion - #region Public Methods + #region Public Methods - /// - /// Writes the specified kern. - /// - /// The kern. - public override void Write(Kernel kern) - { - base.Write(kern); - } + /// + /// Writes the specified kern. + /// + /// The kern. + public override void Write(Kernel kern) + { + base.Write(kern); + } - /// - /// Cleans the specified kern. - /// - /// The kern. - public override void Clean(Kernel kern) - { - base.Clean(kern); - } + /// + /// Cleans the specified kern. + /// + /// The kern. + public override void Clean(Kernel kern) + { + base.Clean(kern); + } - /// - /// Gets the name. - /// - /// The name. - public override string Name - { - get - { - return "sharpdev2"; - } - } + /// + /// Gets the name. + /// + /// The name. + public override string Name + { + get + { + return "sharpdev2"; + } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Targets/SharpDevelopTarget.cs b/Prebuild/src/Core/Targets/SharpDevelopTarget.cs index 8e3205025f..aa83c94915 100644 --- a/Prebuild/src/Core/Targets/SharpDevelopTarget.cs +++ b/Prebuild/src/Core/Targets/SharpDevelopTarget.cs @@ -34,392 +34,392 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Targets { - /// - /// - /// - [Target("sharpdev")] - public class SharpDevelopTarget : ITarget - { - #region Fields + /// + /// + /// + [Target("sharpdev")] + public class SharpDevelopTarget : ITarget + { + #region Fields - private Kernel m_Kernel; + private Kernel m_Kernel; - #endregion + #endregion - #region Private Methods + #region Private Methods - private static string PrependPath(string path) - { - string tmpPath = Helper.NormalizePath(path, '/'); - Regex regex = new Regex(@"(\w):/(\w+)"); - Match match = regex.Match(tmpPath); - if(match.Success || tmpPath[0] == '.' || tmpPath[0] == '/') - { - tmpPath = Helper.NormalizePath(tmpPath); - } - else - { - tmpPath = Helper.NormalizePath("./" + tmpPath); - } + private static string PrependPath(string path) + { + string tmpPath = Helper.NormalizePath(path, '/'); + Regex regex = new Regex(@"(\w):/(\w+)"); + Match match = regex.Match(tmpPath); + if (match.Success || tmpPath[0] == '.' || tmpPath[0] == '/') + { + tmpPath = Helper.NormalizePath(tmpPath); + } + else + { + tmpPath = Helper.NormalizePath("./" + tmpPath); + } - return tmpPath; - } + return tmpPath; + } - private static string BuildReference(SolutionNode solution, ReferenceNode refr) - { - string ret = ""; - } - else - { - ProjectNode project = (ProjectNode)refr.Parent; - string fileRef = FindFileReference(refr.Name, project); + private static string BuildReference(SolutionNode solution, ReferenceNode refr) + { + string ret = ""; + } + else + { + ProjectNode project = (ProjectNode)refr.Parent; + string fileRef = FindFileReference(refr.Name, project); - if(refr.Path != null || fileRef != null) - { - ret += "Assembly\" refto=\""; + if (refr.Path != null || fileRef != null) + { + ret += "Assembly\" refto=\""; - string finalPath = (refr.Path != null) ? Helper.MakeFilePath(refr.Path, refr.Name, "dll") : fileRef; + string finalPath = (refr.Path != null) ? Helper.MakeFilePath(refr.Path, refr.Name, "dll") : fileRef; - ret += finalPath; - ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />"; - return ret; - } + ret += finalPath; + ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />"; + return ret; + } - ret += "Gac\" refto=\""; - try - { - //Assembly assem = Assembly.Load(refr.Name); + ret += "Gac\" refto=\""; + try + { + //Assembly assem = Assembly.Load(refr.Name); ret += refr.Name;// assem.FullName; - } - catch (System.NullReferenceException e) - { - e.ToString(); - ret += refr.Name; - } - ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />"; - } + } + catch (System.NullReferenceException e) + { + e.ToString(); + ret += refr.Name; + } + ret += "\" localcopy=\"" + refr.LocalCopy.ToString() + "\" />"; + } - return ret; - } + return ret; + } - private static string FindFileReference(string refName, ProjectNode project) - { - foreach(ReferencePathNode refPath in project.ReferencePaths) - { - string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll"); + private static string FindFileReference(string refName, ProjectNode project) + { + foreach (ReferencePathNode refPath in project.ReferencePaths) + { + string fullPath = Helper.MakeFilePath(refPath.Path, refName, "dll"); - if(File.Exists(fullPath)) - { - return fullPath; - } - } + if (File.Exists(fullPath)) + { + return fullPath; + } + } - return null; - } + return null; + } - /// - /// Gets the XML doc file. - /// - /// The project. - /// The conf. - /// - public static string GenerateXmlDocFile(ProjectNode project, ConfigurationNode conf) - { - if( conf == null ) - { - throw new ArgumentNullException("conf"); - } - if( project == null ) - { - throw new ArgumentNullException("project"); - } - string docFile = (string)conf.Options["XmlDocFile"]; - if(docFile != null && docFile.Length == 0)//default to assembly name if not specified - { - return "False"; - } - return "True"; - } + /// + /// Gets the XML doc file. + /// + /// The project. + /// The conf. + /// + public static string GenerateXmlDocFile(ProjectNode project, ConfigurationNode conf) + { + if (conf == null) + { + throw new ArgumentNullException("conf"); + } + if (project == null) + { + throw new ArgumentNullException("project"); + } + string docFile = (string)conf.Options["XmlDocFile"]; + if (docFile != null && docFile.Length == 0)//default to assembly name if not specified + { + return "False"; + } + return "True"; + } - private void WriteProject(SolutionNode solution, ProjectNode project) - { - string csComp = "Csc"; - string netRuntime = "MsNet"; - if(project.Runtime == ClrRuntime.Mono) - { - csComp = "Mcs"; - netRuntime = "Mono"; - } + private void WriteProject(SolutionNode solution, ProjectNode project) + { + string csComp = "Csc"; + string netRuntime = "MsNet"; + if (project.Runtime == ClrRuntime.Mono) + { + csComp = "Mcs"; + netRuntime = "Mono"; + } - string projFile = Helper.MakeFilePath(project.FullPath, project.Name, "prjx"); - StreamWriter ss = new StreamWriter(projFile); + string projFile = Helper.MakeFilePath(project.FullPath, project.Name, "prjx"); + StreamWriter ss = new StreamWriter(projFile); - m_Kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(projFile)); + m_Kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(projFile)); - using(ss) - { - ss.WriteLine( - "", - project.Name, - project.RootNamespace - ); + using (ss) + { + ss.WriteLine( + "", + project.Name, + project.RootNamespace + ); - ss.WriteLine(" "); - foreach(string file in project.Files) - { - string buildAction = "Compile"; - switch(project.Files.GetBuildAction(file)) - { - case BuildAction.None: - buildAction = "Nothing"; - break; + ss.WriteLine(" "); + foreach (string file in project.Files) + { + string buildAction = "Compile"; + switch (project.Files.GetBuildAction(file)) + { + case BuildAction.None: + buildAction = "Nothing"; + break; - case BuildAction.Content: - buildAction = "Exclude"; - break; + case BuildAction.Content: + buildAction = "Exclude"; + break; - case BuildAction.EmbeddedResource: - buildAction = "EmbedAsResource"; - break; + case BuildAction.EmbeddedResource: + buildAction = "EmbedAsResource"; + break; - default: - buildAction = "Compile"; - break; - } + default: + buildAction = "Compile"; + break; + } - // Sort of a hack, we try and resolve the path and make it relative, if we can. - string filePath = PrependPath(file); - ss.WriteLine(" ", filePath, buildAction); - } - ss.WriteLine(" "); + // Sort of a hack, we try and resolve the path and make it relative, if we can. + string filePath = PrependPath(file); + ss.WriteLine(" ", filePath, buildAction); + } + ss.WriteLine(" "); - ss.WriteLine(" "); - foreach(ReferenceNode refr in project.References) - { - ss.WriteLine(" {0}", BuildReference(solution, refr)); - } - ss.WriteLine(" "); + ss.WriteLine(" "); + foreach (ReferenceNode refr in project.References) + { + ss.WriteLine(" {0}", BuildReference(solution, refr)); + } + ss.WriteLine(" "); - ss.Write(" "); + ss.Write(" "); - int count = 0; - - ss.WriteLine(" ", solution.ActiveConfig); + int count = 0; - foreach(ConfigurationNode conf in project.Configurations) - { - ss.Write(" "); - ss.Write(" "); + ss.WriteLine(" ", solution.ActiveConfig); - ss.Write(" "); + foreach (ConfigurationNode conf in project.Configurations) + { + ss.Write(" "); + ss.Write(" "); - ss.Write(" "); - ss.WriteLine(" "); + ss.Write(" "); - count++; - } - ss.WriteLine(" "); - ss.WriteLine(""); - } + ss.Write(" "); + ss.WriteLine(" "); - m_Kernel.CurrentWorkingDirectory.Pop(); - } + count++; + } + ss.WriteLine(" "); + ss.WriteLine(""); + } - private void WriteCombine(SolutionNode solution) - { - m_Kernel.Log.Write("Creating SharpDevelop combine and project files"); - foreach(ProjectNode project in solution.Projects) - { - if(m_Kernel.AllowProject(project.FilterGroups)) - { - m_Kernel.Log.Write("...Creating project: {0}", project.Name); - WriteProject(solution, project); - } - } + m_Kernel.CurrentWorkingDirectory.Pop(); + } - m_Kernel.Log.Write(""); - string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "cmbx"); - StreamWriter ss = new StreamWriter(combFile); + private void WriteCombine(SolutionNode solution) + { + m_Kernel.Log.Write("Creating SharpDevelop combine and project files"); + foreach (ProjectNode project in solution.Projects) + { + if (m_Kernel.AllowProject(project.FilterGroups)) + { + m_Kernel.Log.Write("...Creating project: {0}", project.Name); + WriteProject(solution, project); + } + } - m_Kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(combFile)); - - using(ss) - { - ss.WriteLine("", solution.Name); - - int count = 0; - foreach(ProjectNode project in solution.Projects) - { - if(count == 0) - ss.WriteLine(" ", project.Name); + m_Kernel.Log.Write(""); + string combFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "cmbx"); + StreamWriter ss = new StreamWriter(combFile); - ss.WriteLine(" ", project.Name); - count++; - } - ss.WriteLine(" "); - - ss.WriteLine(" "); - foreach(ProjectNode project in solution.Projects) - { - string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath); - ss.WriteLine(" ", - Helper.MakeFilePath(path, project.Name, "prjx")); - } - ss.WriteLine(" "); + m_Kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(combFile)); - count = 0; - foreach(ConfigurationNode conf in solution.Configurations) - { - if(count == 0) - { - ss.WriteLine(" ", conf.Name); - } + using (ss) + { + ss.WriteLine("", solution.Name); - ss.WriteLine(" ", conf.Name); - foreach(ProjectNode project in solution.Projects) - { - ss.WriteLine(" ", project.Name, conf.Name); - } - ss.WriteLine(" "); + int count = 0; + foreach (ProjectNode project in solution.Projects) + { + if (count == 0) + ss.WriteLine(" ", project.Name); - count++; - } - ss.WriteLine(" "); - ss.WriteLine(""); - } + ss.WriteLine(" ", project.Name); + count++; + } + ss.WriteLine(" "); - m_Kernel.CurrentWorkingDirectory.Pop(); - } + ss.WriteLine(" "); + foreach (ProjectNode project in solution.Projects) + { + string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath); + ss.WriteLine(" ", + Helper.MakeFilePath(path, project.Name, "prjx")); + } + ss.WriteLine(" "); - private void CleanProject(ProjectNode project) - { - m_Kernel.Log.Write("...Cleaning project: {0}", project.Name); - string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "prjx"); - Helper.DeleteIfExists(projectFile); - } + count = 0; + foreach (ConfigurationNode conf in solution.Configurations) + { + if (count == 0) + { + ss.WriteLine(" ", conf.Name); + } - private void CleanSolution(SolutionNode solution) - { - m_Kernel.Log.Write("Cleaning SharpDevelop combine and project files for", solution.Name); + ss.WriteLine(" ", conf.Name); + foreach (ProjectNode project in solution.Projects) + { + ss.WriteLine(" ", project.Name, conf.Name); + } + ss.WriteLine(" "); - string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "cmbx"); - Helper.DeleteIfExists(slnFile); + count++; + } + ss.WriteLine(" "); + ss.WriteLine(""); + } - foreach(ProjectNode project in solution.Projects) - { - CleanProject(project); - } - - m_Kernel.Log.Write(""); - } + m_Kernel.CurrentWorkingDirectory.Pop(); + } - #endregion + private void CleanProject(ProjectNode project) + { + m_Kernel.Log.Write("...Cleaning project: {0}", project.Name); + string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "prjx"); + Helper.DeleteIfExists(projectFile); + } - #region ITarget Members + private void CleanSolution(SolutionNode solution) + { + m_Kernel.Log.Write("Cleaning SharpDevelop combine and project files for", solution.Name); - /// - /// Writes the specified kern. - /// - /// The kern. - public void Write(Kernel kern) - { - if( kern == null ) - { - throw new ArgumentNullException("kern"); - } - m_Kernel = kern; - foreach(SolutionNode solution in kern.Solutions) - { - WriteCombine(solution); - } - m_Kernel = null; - } + string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "cmbx"); + Helper.DeleteIfExists(slnFile); - /// - /// Cleans the specified kern. - /// - /// The kern. - public virtual void Clean(Kernel kern) - { - if( kern == null ) - { - throw new ArgumentNullException("kern"); - } - m_Kernel = kern; - foreach(SolutionNode sol in kern.Solutions) - { - CleanSolution(sol); - } - m_Kernel = null; - } + foreach (ProjectNode project in solution.Projects) + { + CleanProject(project); + } - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return "sharpdev"; - } - } + m_Kernel.Log.Write(""); + } - #endregion - } + #endregion + + #region ITarget Members + + /// + /// Writes the specified kern. + /// + /// The kern. + public void Write(Kernel kern) + { + if (kern == null) + { + throw new ArgumentNullException("kern"); + } + m_Kernel = kern; + foreach (SolutionNode solution in kern.Solutions) + { + WriteCombine(solution); + } + m_Kernel = null; + } + + /// + /// Cleans the specified kern. + /// + /// The kern. + public virtual void Clean(Kernel kern) + { + if (kern == null) + { + throw new ArgumentNullException("kern"); + } + m_Kernel = kern; + foreach (SolutionNode sol in kern.Solutions) + { + CleanSolution(sol); + } + m_Kernel = null; + } + + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get + { + return "sharpdev"; + } + } + + #endregion + } } diff --git a/Prebuild/src/Core/Targets/ToolInfo.cs b/Prebuild/src/Core/Targets/ToolInfo.cs index 935c6744db..1ffef8ab42 100644 --- a/Prebuild/src/Core/Targets/ToolInfo.cs +++ b/Prebuild/src/Core/Targets/ToolInfo.cs @@ -4,194 +4,194 @@ using System.Text; namespace Prebuild.Core.Targets { - /// - /// - /// - public struct ToolInfo - { - string name; - string guid; - string fileExtension; - string xmlTag; - string importProject; + /// + /// + /// + public struct ToolInfo + { + string name; + string guid; + string fileExtension; + string xmlTag; + string importProject; - /// - /// Gets or sets the name. - /// - /// The name. - public string Name - { - get - { - return name; - } - set - { - name = value; - } - } + /// + /// Gets or sets the name. + /// + /// The name. + public string Name + { + get + { + return name; + } + set + { + name = value; + } + } - /// - /// Gets or sets the GUID. - /// - /// The GUID. - public string Guid - { - get - { - return guid; - } - set - { - guid = value; - } - } + /// + /// Gets or sets the GUID. + /// + /// The GUID. + public string Guid + { + get + { + return guid; + } + set + { + guid = value; + } + } - /// - /// Gets or sets the file extension. - /// - /// The file extension. - public string FileExtension - { - get - { - return fileExtension; - } - set - { - fileExtension = value; - } - } - public string LanguageExtension - { - get - { - switch (this.Name) - { - case "C#": - return ".cs"; - case "VisualBasic": - return ".vb"; - case "Boo": - return ".boo"; - default: - return ".cs"; - } - } - } - /// - /// Gets or sets the XML tag. - /// - /// The XML tag. - public string XmlTag - { - get - { - return xmlTag; - } - set - { - xmlTag = value; - } - } + /// + /// Gets or sets the file extension. + /// + /// The file extension. + public string FileExtension + { + get + { + return fileExtension; + } + set + { + fileExtension = value; + } + } + public string LanguageExtension + { + get + { + switch (this.Name) + { + case "C#": + return ".cs"; + case "VisualBasic": + return ".vb"; + case "Boo": + return ".boo"; + default: + return ".cs"; + } + } + } + /// + /// Gets or sets the XML tag. + /// + /// The XML tag. + public string XmlTag + { + get + { + return xmlTag; + } + set + { + xmlTag = value; + } + } - /// - /// Gets or sets the import project property. - /// - /// The ImportProject tag. - public string ImportProject - { - get - { - return importProject; - } - set - { - importProject = value; - } - } + /// + /// Gets or sets the import project property. + /// + /// The ImportProject tag. + public string ImportProject + { + get + { + return importProject; + } + set + { + importProject = value; + } + } - /// - /// Initializes a new instance of the class. - /// - /// The name. - /// The GUID. - /// The file extension. - /// The XML. - /// The import project. - public ToolInfo(string name, string guid, string fileExtension, string xml, string importProject) - { - this.name = name; - this.guid = guid; - this.fileExtension = fileExtension; - this.xmlTag = xml; - this.importProject = importProject; - } + /// + /// Initializes a new instance of the class. + /// + /// The name. + /// The GUID. + /// The file extension. + /// The XML. + /// The import project. + public ToolInfo(string name, string guid, string fileExtension, string xml, string importProject) + { + this.name = name; + this.guid = guid; + this.fileExtension = fileExtension; + this.xmlTag = xml; + this.importProject = importProject; + } - /// - /// Initializes a new instance of the class. - /// - /// The name. - /// The GUID. - /// The file extension. - /// The XML. - public ToolInfo(string name, string guid, string fileExtension, string xml) - { - this.name = name; - this.guid = guid; - this.fileExtension = fileExtension; - this.xmlTag = xml; - this.importProject = "$(MSBuildBinPath)\\Microsoft." + xml + ".Targets"; - } + /// + /// Initializes a new instance of the class. + /// + /// The name. + /// The GUID. + /// The file extension. + /// The XML. + public ToolInfo(string name, string guid, string fileExtension, string xml) + { + this.name = name; + this.guid = guid; + this.fileExtension = fileExtension; + this.xmlTag = xml; + this.importProject = "$(MSBuildBinPath)\\Microsoft." + xml + ".Targets"; + } - /// - /// Equals operator - /// - /// ToolInfo to compare - /// true if toolInfos are equal - public override bool Equals(object obj) - { - if (obj == null) - { - throw new ArgumentNullException("obj"); - } - if (obj.GetType() != typeof(ToolInfo)) - return false; + /// + /// Equals operator + /// + /// ToolInfo to compare + /// true if toolInfos are equal + public override bool Equals(object obj) + { + if (obj == null) + { + throw new ArgumentNullException("obj"); + } + if (obj.GetType() != typeof(ToolInfo)) + return false; - ToolInfo c = (ToolInfo)obj; - return ((this.name == c.name) && (this.guid == c.guid) && (this.fileExtension == c.fileExtension) && (this.importProject == c.importProject)); - } + ToolInfo c = (ToolInfo)obj; + return ((this.name == c.name) && (this.guid == c.guid) && (this.fileExtension == c.fileExtension) && (this.importProject == c.importProject)); + } - /// - /// Equals operator - /// - /// ToolInfo to compare - /// ToolInfo to compare - /// True if toolInfos are equal - public static bool operator ==(ToolInfo c1, ToolInfo c2) - { - return ((c1.name == c2.name) && (c1.guid == c2.guid) && (c1.fileExtension == c2.fileExtension) && (c1.importProject == c2.importProject) && (c1.xmlTag == c2.xmlTag)); - } + /// + /// Equals operator + /// + /// ToolInfo to compare + /// ToolInfo to compare + /// True if toolInfos are equal + public static bool operator ==(ToolInfo c1, ToolInfo c2) + { + return ((c1.name == c2.name) && (c1.guid == c2.guid) && (c1.fileExtension == c2.fileExtension) && (c1.importProject == c2.importProject) && (c1.xmlTag == c2.xmlTag)); + } - /// - /// Not equals operator - /// - /// ToolInfo to compare - /// ToolInfo to compare - /// True if toolInfos are not equal - public static bool operator !=(ToolInfo c1, ToolInfo c2) - { - return !(c1 == c2); - } + /// + /// Not equals operator + /// + /// ToolInfo to compare + /// ToolInfo to compare + /// True if toolInfos are not equal + public static bool operator !=(ToolInfo c1, ToolInfo c2) + { + return !(c1 == c2); + } - /// - /// Hash Code - /// - /// Hash code - public override int GetHashCode() - { - return name.GetHashCode() ^ guid.GetHashCode() ^ this.fileExtension.GetHashCode() ^ this.importProject.GetHashCode() ^ this.xmlTag.GetHashCode(); + /// + /// Hash Code + /// + /// Hash code + public override int GetHashCode() + { + return name.GetHashCode() ^ guid.GetHashCode() ^ this.fileExtension.GetHashCode() ^ this.importProject.GetHashCode() ^ this.xmlTag.GetHashCode(); - } - } + } + } } diff --git a/Prebuild/src/Core/Targets/VS2002Target.cs b/Prebuild/src/Core/Targets/VS2002Target.cs index 2292624473..0af0dcd71a 100644 --- a/Prebuild/src/Core/Targets/VS2002Target.cs +++ b/Prebuild/src/Core/Targets/VS2002Target.cs @@ -29,59 +29,59 @@ using Prebuild.Core.Attributes; namespace Prebuild.Core.Targets { - /// - /// - /// - [Target("vs2002")] - public class VS2002Target : VS2003Target - { - #region Private Methods + /// + /// + /// + [Target("vs2002")] + public class VS2002Target : VS2003Target + { + #region Private Methods - private void SetVS2002() - { - this.SolutionVersion = "7.00"; - this.ProductVersion = "7.0.9254"; - this.SchemaVersion = "1.0"; - this.VersionName = "2002"; - this.Version = VSVersion.VS70; - } + private void SetVS2002() + { + this.SolutionVersion = "7.00"; + this.ProductVersion = "7.0.9254"; + this.SchemaVersion = "1.0"; + this.VersionName = "2002"; + this.Version = VSVersion.VS70; + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Writes the specified kern. - /// - /// The kern. - public override void Write(Kernel kern) - { - SetVS2002(); - base.Write(kern); - } + /// + /// Writes the specified kern. + /// + /// The kern. + public override void Write(Kernel kern) + { + SetVS2002(); + base.Write(kern); + } - /// - /// Cleans the specified kern. - /// - /// The kern. - public override void Clean(Kernel kern) - { - SetVS2002(); - base.Clean(kern); - } + /// + /// Cleans the specified kern. + /// + /// The kern. + public override void Clean(Kernel kern) + { + SetVS2002(); + base.Clean(kern); + } - /// - /// Gets the name. - /// - /// The name. - public override string Name - { - get - { - return "vs2002"; - } - } + /// + /// Gets the name. + /// + /// The name. + public override string Name + { + get + { + return "vs2002"; + } + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Targets/VS2003Target.cs b/Prebuild/src/Core/Targets/VS2003Target.cs index 10e2dc4a71..ca16d84f73 100644 --- a/Prebuild/src/Core/Targets/VS2003Target.cs +++ b/Prebuild/src/Core/Targets/VS2003Target.cs @@ -34,560 +34,560 @@ using Prebuild.Core.Utilities; namespace Prebuild.Core.Targets { - [Target("vs2003")] - public class VS2003Target : ITarget - { - - #region Fields - - string solutionVersion = "8.00"; - string productVersion = "7.10.3077"; - string schemaVersion = "2.0"; - string versionName = "2003"; - VSVersion version = VSVersion.VS71; - - readonly Dictionary m_Tools = new Dictionary(); - Kernel m_Kernel; - - /// - /// Gets or sets the solution version. - /// - /// The solution version. - protected string SolutionVersion - { - get - { - return solutionVersion; - } - set - { - solutionVersion = value; - } - } - /// - /// Gets or sets the product version. - /// - /// The product version. - protected string ProductVersion - { - get - { - return productVersion; - } - set - { - productVersion = value; - } - } - /// - /// Gets or sets the schema version. - /// - /// The schema version. - protected string SchemaVersion - { - get - { - return schemaVersion; - } - set - { - schemaVersion = value; - } - } - /// - /// Gets or sets the name of the version. - /// - /// The name of the version. - protected string VersionName - { - get - { - return versionName; - } - set - { - versionName = value; - } - } - /// - /// Gets or sets the version. - /// - /// The version. - protected VSVersion Version - { - get - { - return version; - } - set - { - version = value; - } - } - - #endregion - - #region Constructors - - /// - /// Initializes a new instance of the class. - /// - public VS2003Target() - { - m_Tools["C#"] = new ToolInfo("C#", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", "csproj", "CSHARP"); - m_Tools["VB.NET"] = new ToolInfo("VB.NET", "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", "vbproj", "VisualBasic"); - } - - #endregion - - #region Private Methods - - private string MakeRefPath(ProjectNode project) - { - string ret = ""; - foreach(ReferencePathNode node in project.ReferencePaths) - { - try - { - string fullPath = Helper.ResolvePath(node.Path); - if(ret.Length < 1) - { - ret = fullPath; - } - else - { - ret += ";" + fullPath; - } - } - catch(ArgumentException) - { - m_Kernel.Log.Write(LogType.Warning, "Could not resolve reference path: {0}", node.Path); - } - } - - return ret; - } - - private void WriteProject(SolutionNode solution, ProjectNode project) - { - if(!m_Tools.ContainsKey(project.Language)) - { - throw new UnknownLanguageException("Unknown .NET language: " + project.Language); - } - - ToolInfo toolInfo = m_Tools[project.Language]; - string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension); - StreamWriter ps = new StreamWriter(projectFile); - - m_Kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(projectFile)); - - using(ps) - { - ps.WriteLine(""); - ps.WriteLine(" <{0}", toolInfo.XmlTag); - ps.WriteLine("\t\t\t\tProjectType = \"Local\""); - ps.WriteLine("\t\t\t\tProductVersion = \"{0}\"", ProductVersion); - ps.WriteLine("\t\t\t\tSchemaVersion = \"{0}\"", SchemaVersion); - ps.WriteLine("\t\t\t\tProjectGuid = \"{{{0}}}\"", project.Guid.ToString().ToUpper()); - ps.WriteLine("\t\t>"); - - ps.WriteLine("\t\t\t\t"); - ps.WriteLine(" "); - - foreach(ConfigurationNode conf in project.Configurations) - { - ps.WriteLine("\t\t\t\t "); - } - - ps.WriteLine(" "); - - ps.WriteLine(" "); - foreach(ReferenceNode refr in project.References) - { - ps.WriteLine(" "); - } - ps.WriteLine(" "); - - ps.WriteLine(" "); - ps.WriteLine(" "); - - ps.WriteLine(" "); - - foreach(string file in project.Files) - { - string fileName = file.Replace(".\\", ""); - ps.WriteLine(" "); - - if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings) - { - ps.WriteLine(" "); - - } - } - ps.WriteLine(" "); - - ps.WriteLine(" "); - ps.WriteLine(" ", toolInfo.XmlTag); - ps.WriteLine(""); - } - - ps = new StreamWriter(projectFile + ".user"); - using(ps) - { - ps.WriteLine(""); - ps.WriteLine(" <{0}>", toolInfo.XmlTag); - ps.WriteLine(" "); - - ps.WriteLine(" ", MakeRefPath(project)); - foreach(ConfigurationNode conf in project.Configurations) - { - ps.WriteLine(" "); - } - ps.WriteLine(" "); - - ps.WriteLine(" "); - ps.WriteLine(" ", toolInfo.XmlTag); - ps.WriteLine(""); - } - - m_Kernel.CurrentWorkingDirectory.Pop(); - } - - /// - /// Gets the XML doc file. - /// - /// The project. - /// The conf. - /// - public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf) - { - if( conf == null ) - { - throw new ArgumentNullException("conf"); - } - if( project == null ) - { - throw new ArgumentNullException("project"); - } - // if(!(bool)conf.Options["GenerateXmlDocFile"]) //default to none, if the generate option is false - // { - // return string.Empty; - // } - - //default to "AssemblyName.xml" - //string defaultValue = Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml"; - //return (string)conf.Options["XmlDocFile", defaultValue]; - - //default to no XmlDocFile file - return (string)conf.Options["XmlDocFile", ""]; - } - - private void WriteSolution(SolutionNode solution) - { - m_Kernel.Log.Write("Creating Visual Studio {0} solution and project files", VersionName); - - foreach(ProjectNode project in solution.Projects) - { - if(m_Kernel.AllowProject(project.FilterGroups)) - { - m_Kernel.Log.Write("...Creating project: {0}", project.Name); - WriteProject(solution, project); - } - } - - m_Kernel.Log.Write(""); - string solutionFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln"); - StreamWriter ss = new StreamWriter(solutionFile); - - m_Kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(solutionFile)); - - using(ss) - { - ss.WriteLine("Microsoft Visual Studio Solution File, Format Version {0}", SolutionVersion); - foreach(ProjectNode project in solution.Projects) - { - if(!m_Tools.ContainsKey(project.Language)) - { - throw new UnknownLanguageException("Unknown .NET language: " + project.Language); - } - - ToolInfo toolInfo = m_Tools[project.Language]; - - string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath); - ss.WriteLine("Project(\"{0}\") = \"{1}\", \"{2}\", \"{{{3}}}\"", - toolInfo.Guid, project.Name, Helper.MakeFilePath(path, project.Name, - toolInfo.FileExtension), project.Guid.ToString().ToUpper()); - - ss.WriteLine("\tProjectSection(ProjectDependencies) = postProject"); - ss.WriteLine("\tEndProjectSection"); - - ss.WriteLine("EndProject"); - } - - ss.WriteLine("Global"); - - ss.WriteLine("\tGlobalSection(SolutionConfiguration) = preSolution"); - foreach(ConfigurationNode conf in solution.Configurations) - { - ss.WriteLine("\t\t{0} = {0}", conf.Name); - } - ss.WriteLine("\tEndGlobalSection"); - - ss.WriteLine("\tGlobalSection(ProjectDependencies) = postSolution"); - foreach(ProjectNode project in solution.Projects) - { - for(int i = 0; i < project.References.Count; i++) - { - ReferenceNode refr = project.References[i]; - if(solution.ProjectsTable.ContainsKey(refr.Name)) - { - ProjectNode refProject = solution.ProjectsTable[refr.Name]; - ss.WriteLine("\t\t({{{0}}}).{1} = ({{{2}}})", - project.Guid.ToString().ToUpper() - , i, - refProject.Guid.ToString().ToUpper() - ); - } - } - } - ss.WriteLine("\tEndGlobalSection"); - - ss.WriteLine("\tGlobalSection(ProjectConfiguration) = postSolution"); - foreach(ProjectNode project in solution.Projects) - { - foreach(ConfigurationNode conf in solution.Configurations) - { - ss.WriteLine("\t\t{{{0}}}.{1}.ActiveCfg = {1}|.NET", - project.Guid.ToString().ToUpper(), - conf.Name); - - ss.WriteLine("\t\t{{{0}}}.{1}.Build.0 = {1}|.NET", - project.Guid.ToString().ToUpper(), - conf.Name); - } - } - ss.WriteLine("\tEndGlobalSection"); - - if(solution.Files != null) - { - ss.WriteLine("\tGlobalSection(SolutionItems) = postSolution"); - foreach(string file in solution.Files) - { - ss.WriteLine("\t\t{0} = {0}", file); - } - ss.WriteLine("\tEndGlobalSection"); - } - - ss.WriteLine("\tGlobalSection(ExtensibilityGlobals) = postSolution"); - ss.WriteLine("\tEndGlobalSection"); - ss.WriteLine("\tGlobalSection(ExtensibilityAddIns) = postSolution"); - ss.WriteLine("\tEndGlobalSection"); - - ss.WriteLine("EndGlobal"); - } - - m_Kernel.CurrentWorkingDirectory.Pop(); - } - - private void CleanProject(ProjectNode project) - { - m_Kernel.Log.Write("...Cleaning project: {0}", project.Name); - - ToolInfo toolInfo = m_Tools[project.Language]; - string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension); - string userFile = projectFile + ".user"; - - Helper.DeleteIfExists(projectFile); - Helper.DeleteIfExists(userFile); - } - - private void CleanSolution(SolutionNode solution) - { - m_Kernel.Log.Write("Cleaning Visual Studio {0} solution and project files", VersionName, solution.Name); - - string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln"); - string suoFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "suo"); - - Helper.DeleteIfExists(slnFile); - Helper.DeleteIfExists(suoFile); - - foreach(ProjectNode project in solution.Projects) - { - CleanProject(project); - } - - m_Kernel.Log.Write(""); - } - - #endregion - - #region ITarget Members - - /// - /// Writes the specified kern. - /// - /// The kern. - public virtual void Write(Kernel kern) - { - if( kern == null ) - { - throw new ArgumentNullException("kern"); - } - m_Kernel = kern; - foreach(SolutionNode sol in m_Kernel.Solutions) - { - WriteSolution(sol); - } - m_Kernel = null; - } - - /// - /// Cleans the specified kern. - /// - /// The kern. - public virtual void Clean(Kernel kern) - { - if( kern == null ) - { - throw new ArgumentNullException("kern"); - } - m_Kernel = kern; - foreach(SolutionNode sol in m_Kernel.Solutions) - { - CleanSolution(sol); - } - m_Kernel = null; - } - - /// - /// Gets the name. - /// - /// The name. - public virtual string Name - { - get - { - return "vs2003"; - } - } - - #endregion - } + [Target("vs2003")] + public class VS2003Target : ITarget + { + + #region Fields + + string solutionVersion = "8.00"; + string productVersion = "7.10.3077"; + string schemaVersion = "2.0"; + string versionName = "2003"; + VSVersion version = VSVersion.VS71; + + readonly Dictionary m_Tools = new Dictionary(); + Kernel m_Kernel; + + /// + /// Gets or sets the solution version. + /// + /// The solution version. + protected string SolutionVersion + { + get + { + return solutionVersion; + } + set + { + solutionVersion = value; + } + } + /// + /// Gets or sets the product version. + /// + /// The product version. + protected string ProductVersion + { + get + { + return productVersion; + } + set + { + productVersion = value; + } + } + /// + /// Gets or sets the schema version. + /// + /// The schema version. + protected string SchemaVersion + { + get + { + return schemaVersion; + } + set + { + schemaVersion = value; + } + } + /// + /// Gets or sets the name of the version. + /// + /// The name of the version. + protected string VersionName + { + get + { + return versionName; + } + set + { + versionName = value; + } + } + /// + /// Gets or sets the version. + /// + /// The version. + protected VSVersion Version + { + get + { + return version; + } + set + { + version = value; + } + } + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + public VS2003Target() + { + m_Tools["C#"] = new ToolInfo("C#", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", "csproj", "CSHARP"); + m_Tools["VB.NET"] = new ToolInfo("VB.NET", "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", "vbproj", "VisualBasic"); + } + + #endregion + + #region Private Methods + + private string MakeRefPath(ProjectNode project) + { + string ret = ""; + foreach (ReferencePathNode node in project.ReferencePaths) + { + try + { + string fullPath = Helper.ResolvePath(node.Path); + if (ret.Length < 1) + { + ret = fullPath; + } + else + { + ret += ";" + fullPath; + } + } + catch (ArgumentException) + { + m_Kernel.Log.Write(LogType.Warning, "Could not resolve reference path: {0}", node.Path); + } + } + + return ret; + } + + private void WriteProject(SolutionNode solution, ProjectNode project) + { + if (!m_Tools.ContainsKey(project.Language)) + { + throw new UnknownLanguageException("Unknown .NET language: " + project.Language); + } + + ToolInfo toolInfo = m_Tools[project.Language]; + string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension); + StreamWriter ps = new StreamWriter(projectFile); + + m_Kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(projectFile)); + + using (ps) + { + ps.WriteLine(""); + ps.WriteLine(" <{0}", toolInfo.XmlTag); + ps.WriteLine("\t\t\t\tProjectType = \"Local\""); + ps.WriteLine("\t\t\t\tProductVersion = \"{0}\"", ProductVersion); + ps.WriteLine("\t\t\t\tSchemaVersion = \"{0}\"", SchemaVersion); + ps.WriteLine("\t\t\t\tProjectGuid = \"{{{0}}}\"", project.Guid.ToString().ToUpper()); + ps.WriteLine("\t\t>"); + + ps.WriteLine("\t\t\t\t"); + ps.WriteLine(" "); + + foreach (ConfigurationNode conf in project.Configurations) + { + ps.WriteLine("\t\t\t\t "); + } + + ps.WriteLine(" "); + + ps.WriteLine(" "); + foreach (ReferenceNode refr in project.References) + { + ps.WriteLine(" "); + } + ps.WriteLine(" "); + + ps.WriteLine(" "); + ps.WriteLine(" "); + + ps.WriteLine(" "); + + foreach (string file in project.Files) + { + string fileName = file.Replace(".\\", ""); + ps.WriteLine(" "); + + if (project.Files.GetSubType(file) != SubType.Code && project.Files.GetSubType(file) != SubType.Settings) + { + ps.WriteLine(" "); + + } + } + ps.WriteLine(" "); + + ps.WriteLine(" "); + ps.WriteLine(" ", toolInfo.XmlTag); + ps.WriteLine(""); + } + + ps = new StreamWriter(projectFile + ".user"); + using (ps) + { + ps.WriteLine(""); + ps.WriteLine(" <{0}>", toolInfo.XmlTag); + ps.WriteLine(" "); + + ps.WriteLine(" ", MakeRefPath(project)); + foreach (ConfigurationNode conf in project.Configurations) + { + ps.WriteLine(" "); + } + ps.WriteLine(" "); + + ps.WriteLine(" "); + ps.WriteLine(" ", toolInfo.XmlTag); + ps.WriteLine(""); + } + + m_Kernel.CurrentWorkingDirectory.Pop(); + } + + /// + /// Gets the XML doc file. + /// + /// The project. + /// The conf. + /// + public static string GetXmlDocFile(ProjectNode project, ConfigurationNode conf) + { + if (conf == null) + { + throw new ArgumentNullException("conf"); + } + if (project == null) + { + throw new ArgumentNullException("project"); + } + // if(!(bool)conf.Options["GenerateXmlDocFile"]) //default to none, if the generate option is false + // { + // return string.Empty; + // } + + //default to "AssemblyName.xml" + //string defaultValue = Path.GetFileNameWithoutExtension(project.AssemblyName) + ".xml"; + //return (string)conf.Options["XmlDocFile", defaultValue]; + + //default to no XmlDocFile file + return (string)conf.Options["XmlDocFile", ""]; + } + + private void WriteSolution(SolutionNode solution) + { + m_Kernel.Log.Write("Creating Visual Studio {0} solution and project files", VersionName); + + foreach (ProjectNode project in solution.Projects) + { + if (m_Kernel.AllowProject(project.FilterGroups)) + { + m_Kernel.Log.Write("...Creating project: {0}", project.Name); + WriteProject(solution, project); + } + } + + m_Kernel.Log.Write(""); + string solutionFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln"); + StreamWriter ss = new StreamWriter(solutionFile); + + m_Kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(solutionFile)); + + using (ss) + { + ss.WriteLine("Microsoft Visual Studio Solution File, Format Version {0}", SolutionVersion); + foreach (ProjectNode project in solution.Projects) + { + if (!m_Tools.ContainsKey(project.Language)) + { + throw new UnknownLanguageException("Unknown .NET language: " + project.Language); + } + + ToolInfo toolInfo = m_Tools[project.Language]; + + string path = Helper.MakePathRelativeTo(solution.FullPath, project.FullPath); + ss.WriteLine("Project(\"{0}\") = \"{1}\", \"{2}\", \"{{{3}}}\"", + toolInfo.Guid, project.Name, Helper.MakeFilePath(path, project.Name, + toolInfo.FileExtension), project.Guid.ToString().ToUpper()); + + ss.WriteLine("\tProjectSection(ProjectDependencies) = postProject"); + ss.WriteLine("\tEndProjectSection"); + + ss.WriteLine("EndProject"); + } + + ss.WriteLine("Global"); + + ss.WriteLine("\tGlobalSection(SolutionConfiguration) = preSolution"); + foreach (ConfigurationNode conf in solution.Configurations) + { + ss.WriteLine("\t\t{0} = {0}", conf.Name); + } + ss.WriteLine("\tEndGlobalSection"); + + ss.WriteLine("\tGlobalSection(ProjectDependencies) = postSolution"); + foreach (ProjectNode project in solution.Projects) + { + for (int i = 0; i < project.References.Count; i++) + { + ReferenceNode refr = project.References[i]; + if (solution.ProjectsTable.ContainsKey(refr.Name)) + { + ProjectNode refProject = solution.ProjectsTable[refr.Name]; + ss.WriteLine("\t\t({{{0}}}).{1} = ({{{2}}})", + project.Guid.ToString().ToUpper() + , i, + refProject.Guid.ToString().ToUpper() + ); + } + } + } + ss.WriteLine("\tEndGlobalSection"); + + ss.WriteLine("\tGlobalSection(ProjectConfiguration) = postSolution"); + foreach (ProjectNode project in solution.Projects) + { + foreach (ConfigurationNode conf in solution.Configurations) + { + ss.WriteLine("\t\t{{{0}}}.{1}.ActiveCfg = {1}|.NET", + project.Guid.ToString().ToUpper(), + conf.Name); + + ss.WriteLine("\t\t{{{0}}}.{1}.Build.0 = {1}|.NET", + project.Guid.ToString().ToUpper(), + conf.Name); + } + } + ss.WriteLine("\tEndGlobalSection"); + + if (solution.Files != null) + { + ss.WriteLine("\tGlobalSection(SolutionItems) = postSolution"); + foreach (string file in solution.Files) + { + ss.WriteLine("\t\t{0} = {0}", file); + } + ss.WriteLine("\tEndGlobalSection"); + } + + ss.WriteLine("\tGlobalSection(ExtensibilityGlobals) = postSolution"); + ss.WriteLine("\tEndGlobalSection"); + ss.WriteLine("\tGlobalSection(ExtensibilityAddIns) = postSolution"); + ss.WriteLine("\tEndGlobalSection"); + + ss.WriteLine("EndGlobal"); + } + + m_Kernel.CurrentWorkingDirectory.Pop(); + } + + private void CleanProject(ProjectNode project) + { + m_Kernel.Log.Write("...Cleaning project: {0}", project.Name); + + ToolInfo toolInfo = m_Tools[project.Language]; + string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension); + string userFile = projectFile + ".user"; + + Helper.DeleteIfExists(projectFile); + Helper.DeleteIfExists(userFile); + } + + private void CleanSolution(SolutionNode solution) + { + m_Kernel.Log.Write("Cleaning Visual Studio {0} solution and project files", VersionName, solution.Name); + + string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln"); + string suoFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "suo"); + + Helper.DeleteIfExists(slnFile); + Helper.DeleteIfExists(suoFile); + + foreach (ProjectNode project in solution.Projects) + { + CleanProject(project); + } + + m_Kernel.Log.Write(""); + } + + #endregion + + #region ITarget Members + + /// + /// Writes the specified kern. + /// + /// The kern. + public virtual void Write(Kernel kern) + { + if (kern == null) + { + throw new ArgumentNullException("kern"); + } + m_Kernel = kern; + foreach (SolutionNode sol in m_Kernel.Solutions) + { + WriteSolution(sol); + } + m_Kernel = null; + } + + /// + /// Cleans the specified kern. + /// + /// The kern. + public virtual void Clean(Kernel kern) + { + if (kern == null) + { + throw new ArgumentNullException("kern"); + } + m_Kernel = kern; + foreach (SolutionNode sol in m_Kernel.Solutions) + { + CleanSolution(sol); + } + m_Kernel = null; + } + + /// + /// Gets the name. + /// + /// The name. + public virtual string Name + { + get + { + return "vs2003"; + } + } + + #endregion + } } diff --git a/Prebuild/src/Core/Targets/VS2005Target.cs b/Prebuild/src/Core/Targets/VS2005Target.cs index 9c70e26a37..16c87a182e 100644 --- a/Prebuild/src/Core/Targets/VS2005Target.cs +++ b/Prebuild/src/Core/Targets/VS2005Target.cs @@ -137,9 +137,9 @@ namespace Prebuild.Core.Targets /// /// Initializes a new instance of the class. /// - public VS2005Target() + public VS2005Target() : base() - { + { } #endregion diff --git a/Prebuild/src/Core/Targets/VS2008Target.cs b/Prebuild/src/Core/Targets/VS2008Target.cs index fee4f7f27f..a09b89d1eb 100644 --- a/Prebuild/src/Core/Targets/VS2008Target.cs +++ b/Prebuild/src/Core/Targets/VS2008Target.cs @@ -11,86 +11,86 @@ using System.CodeDom.Compiler; namespace Prebuild.Core.Targets { - /// - /// - /// - [Target("vs2008")] - public class VS2008Target : VSGenericTarget - { - #region Fields - string solutionVersion = "10.00"; - string productVersion = "9.0.21022"; - string schemaVersion = "2.0"; - string versionName = "Visual Studio 2008"; - string name = "vs2008"; - VSVersion version = VSVersion.VS90; + /// + /// + /// + [Target("vs2008")] + public class VS2008Target : VSGenericTarget + { + #region Fields + string solutionVersion = "10.00"; + string productVersion = "9.0.21022"; + string schemaVersion = "2.0"; + string versionName = "Visual Studio 2008"; + string name = "vs2008"; + VSVersion version = VSVersion.VS90; - /// - /// Gets or sets the solution version. - /// - /// The solution version. - public override string SolutionVersion - { - get - { - return solutionVersion; - } - } - /// - /// Gets or sets the product version. - /// - /// The product version. - public override string ProductVersion - { - get - { - return productVersion; - } - } - /// - /// Gets or sets the schema version. - /// - /// The schema version. - public override string SchemaVersion - { - get - { - return schemaVersion; - } - } - /// - /// Gets or sets the name of the version. - /// - /// The name of the version. - public override string VersionName - { - get - { - return versionName; - } - } - /// - /// Gets or sets the version. - /// - /// The version. - public override VSVersion Version - { - get - { - return version; - } - } - /// - /// Gets the name. - /// - /// The name. - public override string Name - { - get - { - return name; - } - } + /// + /// Gets or sets the solution version. + /// + /// The solution version. + public override string SolutionVersion + { + get + { + return solutionVersion; + } + } + /// + /// Gets or sets the product version. + /// + /// The product version. + public override string ProductVersion + { + get + { + return productVersion; + } + } + /// + /// Gets or sets the schema version. + /// + /// The schema version. + public override string SchemaVersion + { + get + { + return schemaVersion; + } + } + /// + /// Gets or sets the name of the version. + /// + /// The name of the version. + public override string VersionName + { + get + { + return versionName; + } + } + /// + /// Gets or sets the version. + /// + /// The version. + public override VSVersion Version + { + get + { + return version; + } + } + /// + /// Gets the name. + /// + /// The name. + public override string Name + { + get + { + return name; + } + } protected override string GetToolsVersionXml(FrameworkVersion frameworkVersion) { @@ -110,18 +110,18 @@ namespace Prebuild.Core.Targets get { return "# Visual Studio 2008"; } } - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - public VS2008Target() - : base() - { - } + /// + /// Initializes a new instance of the class. + /// + public VS2008Target() + : base() + { + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Targets/VS2010Target.cs b/Prebuild/src/Core/Targets/VS2010Target.cs index e8aeab5b01..56223e205a 100644 --- a/Prebuild/src/Core/Targets/VS2010Target.cs +++ b/Prebuild/src/Core/Targets/VS2010Target.cs @@ -11,96 +11,96 @@ using System.CodeDom.Compiler; namespace Prebuild.Core.Targets { - /// - /// - /// - [Target("vs2010")] - public class VS2010Target : VSGenericTarget - { - #region Fields - - string solutionVersion = "11.00"; - string productVersion = "9.0.30729"; - string schemaVersion = "2.0"; - string versionName = "Visual Studio 2010"; - string name = "vs2010"; - VSVersion version = VSVersion.VS10; + /// + /// + /// + [Target("vs2010")] + public class VS2010Target : VSGenericTarget + { + #region Fields - #endregion - - #region Properties - - /// - /// Gets or sets the solution version. - /// - /// The solution version. - public override string SolutionVersion - { - get - { - return solutionVersion; - } - } - - /// - /// Gets or sets the product version. - /// - /// The product version. - public override string ProductVersion - { - get - { - return productVersion; - } - } - - /// - /// Gets or sets the schema version. - /// - /// The schema version. - public override string SchemaVersion - { - get - { - return schemaVersion; - } - } - - /// - /// Gets or sets the name of the version. - /// - /// The name of the version. - public override string VersionName - { - get - { - return versionName; - } - } - - /// - /// Gets or sets the version. - /// - /// The version. - public override VSVersion Version - { - get - { - return version; - } - } - - /// - /// Gets the name. - /// - /// The name. - public override string Name - { - get - { - return name; - } - } + string solutionVersion = "11.00"; + string productVersion = "9.0.30729"; + string schemaVersion = "2.0"; + string versionName = "Visual Studio 2010"; + string name = "vs2010"; + VSVersion version = VSVersion.VS10; + + #endregion + + #region Properties + + /// + /// Gets or sets the solution version. + /// + /// The solution version. + public override string SolutionVersion + { + get + { + return solutionVersion; + } + } + + /// + /// Gets or sets the product version. + /// + /// The product version. + public override string ProductVersion + { + get + { + return productVersion; + } + } + + /// + /// Gets or sets the schema version. + /// + /// The schema version. + public override string SchemaVersion + { + get + { + return schemaVersion; + } + } + + /// + /// Gets or sets the name of the version. + /// + /// The name of the version. + public override string VersionName + { + get + { + return versionName; + } + } + + /// + /// Gets or sets the version. + /// + /// The version. + public override VSVersion Version + { + get + { + return version; + } + } + + /// + /// Gets the name. + /// + /// The name. + public override string Name + { + get + { + return name; + } + } protected override string GetToolsVersionXml(FrameworkVersion frameworkVersion) { @@ -110,7 +110,7 @@ namespace Prebuild.Core.Targets case FrameworkVersion.v4_5: case FrameworkVersion.v4_0: case FrameworkVersion.v3_5: - return "ToolsVersion=\"4.0\""; + return "ToolsVersion=\"4.0\""; case FrameworkVersion.v3_0: return "ToolsVersion=\"3.0\""; default: @@ -123,18 +123,18 @@ namespace Prebuild.Core.Targets get { return "# Visual Studio 2010"; } } - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - public VS2010Target() - : base() - { - } + /// + /// Initializes a new instance of the class. + /// + public VS2010Target() + : base() + { + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Targets/VS2012Target.cs b/Prebuild/src/Core/Targets/VS2012Target.cs index b1ac0d0819..cf52de9563 100644 --- a/Prebuild/src/Core/Targets/VS2012Target.cs +++ b/Prebuild/src/Core/Targets/VS2012Target.cs @@ -6,96 +6,96 @@ using Prebuild.Core.Nodes; namespace Prebuild.Core.Targets { - /// - /// - /// - [Target("vs2012")] - public class VS2012Target : VSGenericTarget - { - #region Fields - - string solutionVersion = "12.00"; - string productVersion = "11.0.61030.0"; - string schemaVersion = "2.0"; - string versionName = "Visual Studio 2012"; - string name = "vs2012"; - VSVersion version = VSVersion.VS11; + /// + /// + /// + [Target("vs2012")] + public class VS2012Target : VSGenericTarget + { + #region Fields - #endregion - - #region Properties - - /// - /// Gets or sets the solution version. - /// - /// The solution version. - public override string SolutionVersion - { - get - { - return solutionVersion; - } - } - - /// - /// Gets or sets the product version. - /// - /// The product version. - public override string ProductVersion - { - get - { - return productVersion; - } - } - - /// - /// Gets or sets the schema version. - /// - /// The schema version. - public override string SchemaVersion - { - get - { - return schemaVersion; - } - } - - /// - /// Gets or sets the name of the version. - /// - /// The name of the version. - public override string VersionName - { - get - { - return versionName; - } - } - - /// - /// Gets or sets the version. - /// - /// The version. - public override VSVersion Version - { - get - { - return version; - } - } - - /// - /// Gets the name. - /// - /// The name. - public override string Name - { - get - { - return name; - } - } + string solutionVersion = "12.00"; + string productVersion = "11.0.61030.0"; + string schemaVersion = "2.0"; + string versionName = "Visual Studio 2012"; + string name = "vs2012"; + VSVersion version = VSVersion.VS11; + + #endregion + + #region Properties + + /// + /// Gets or sets the solution version. + /// + /// The solution version. + public override string SolutionVersion + { + get + { + return solutionVersion; + } + } + + /// + /// Gets or sets the product version. + /// + /// The product version. + public override string ProductVersion + { + get + { + return productVersion; + } + } + + /// + /// Gets or sets the schema version. + /// + /// The schema version. + public override string SchemaVersion + { + get + { + return schemaVersion; + } + } + + /// + /// Gets or sets the name of the version. + /// + /// The name of the version. + public override string VersionName + { + get + { + return versionName; + } + } + + /// + /// Gets or sets the version. + /// + /// The version. + public override VSVersion Version + { + get + { + return version; + } + } + + /// + /// Gets the name. + /// + /// The name. + public override string Name + { + get + { + return name; + } + } protected override string GetToolsVersionXml(FrameworkVersion frameworkVersion) { @@ -111,7 +111,7 @@ namespace Prebuild.Core.Targets case FrameworkVersion.v4_5: case FrameworkVersion.v4_0: case FrameworkVersion.v3_5: - return "ToolsVersion=\"4.0\""; + return "ToolsVersion=\"4.0\""; case FrameworkVersion.v3_0: return "ToolsVersion=\"3.0\""; default: @@ -124,18 +124,18 @@ namespace Prebuild.Core.Targets get { return "# Visual Studio 2012"; } } - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - public VS2012Target() - : base() - { - } + /// + /// Initializes a new instance of the class. + /// + public VS2012Target() + : base() + { + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Targets/VS2013Target.cs b/Prebuild/src/Core/Targets/VS2013Target.cs index 96d8294988..1a0cfd5574 100644 --- a/Prebuild/src/Core/Targets/VS2013Target.cs +++ b/Prebuild/src/Core/Targets/VS2013Target.cs @@ -6,96 +6,96 @@ using Prebuild.Core.Nodes; namespace Prebuild.Core.Targets { - /// - /// - /// - [Target("vs2013")] - public class VS2013Target : VSGenericTarget - { - #region Fields - - string solutionVersion = "12.00"; - string productVersion = "12.0.31101"; - string schemaVersion = "2.0"; - string versionName = "Visual Studio 2013"; - string name = "vs2013"; - VSVersion version = VSVersion.VS12; + /// + /// + /// + [Target("vs2013")] + public class VS2013Target : VSGenericTarget + { + #region Fields - #endregion - - #region Properties - - /// - /// Gets or sets the solution version. - /// - /// The solution version. - public override string SolutionVersion - { - get - { - return solutionVersion; - } - } - - /// - /// Gets or sets the product version. - /// - /// The product version. - public override string ProductVersion - { - get - { - return productVersion; - } - } - - /// - /// Gets or sets the schema version. - /// - /// The schema version. - public override string SchemaVersion - { - get - { - return schemaVersion; - } - } - - /// - /// Gets or sets the name of the version. - /// - /// The name of the version. - public override string VersionName - { - get - { - return versionName; - } - } - - /// - /// Gets or sets the version. - /// - /// The version. - public override VSVersion Version - { - get - { - return version; - } - } - - /// - /// Gets the name. - /// - /// The name. - public override string Name - { - get - { - return name; - } - } + string solutionVersion = "12.00"; + string productVersion = "12.0.31101"; + string schemaVersion = "2.0"; + string versionName = "Visual Studio 2013"; + string name = "vs2013"; + VSVersion version = VSVersion.VS12; + + #endregion + + #region Properties + + /// + /// Gets or sets the solution version. + /// + /// The solution version. + public override string SolutionVersion + { + get + { + return solutionVersion; + } + } + + /// + /// Gets or sets the product version. + /// + /// The product version. + public override string ProductVersion + { + get + { + return productVersion; + } + } + + /// + /// Gets or sets the schema version. + /// + /// The schema version. + public override string SchemaVersion + { + get + { + return schemaVersion; + } + } + + /// + /// Gets or sets the name of the version. + /// + /// The name of the version. + public override string VersionName + { + get + { + return versionName; + } + } + + /// + /// Gets or sets the version. + /// + /// The version. + public override VSVersion Version + { + get + { + return version; + } + } + + /// + /// Gets the name. + /// + /// The name. + public override string Name + { + get + { + return name; + } + } protected override string GetToolsVersionXml(FrameworkVersion frameworkVersion) { @@ -106,10 +106,10 @@ namespace Prebuild.Core.Targets return "ToolsVersion=\"14.0\""; case FrameworkVersion.v4_5_1: case FrameworkVersion.v4_5: - return "ToolsVersion=\"12.0\""; + return "ToolsVersion=\"12.0\""; case FrameworkVersion.v4_0: case FrameworkVersion.v3_5: - return "ToolsVersion=\"4.0\""; + return "ToolsVersion=\"4.0\""; case FrameworkVersion.v3_0: return "ToolsVersion=\"3.0\""; default: @@ -122,18 +122,18 @@ namespace Prebuild.Core.Targets get { return "# Visual Studio 2013"; } } - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - public VS2013Target() - : base() - { - } + /// + /// Initializes a new instance of the class. + /// + public VS2013Target() + : base() + { + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Targets/VS2019Target.cs b/Prebuild/src/Core/Targets/VS2019Target.cs index 52e8162e74..66f17b5244 100644 --- a/Prebuild/src/Core/Targets/VS2019Target.cs +++ b/Prebuild/src/Core/Targets/VS2019Target.cs @@ -124,9 +124,9 @@ namespace Prebuild.Core.Targets case FrameworkVersion.v3_5: return "ToolsVersion=\"4.0\""; case FrameworkVersion.v3_0: - return "ToolsVersion=\"3.0\""; - default: - return "ToolsVersion=\"2.0\""; + return "ToolsVersion=\"3.0\""; + default: + return "ToolsVersion=\"2.0\""; } } diff --git a/Prebuild/src/Core/Targets/VSGenericTarget.cs b/Prebuild/src/Core/Targets/VSGenericTarget.cs index 1e9bc68d0c..6daa71996c 100755 --- a/Prebuild/src/Core/Targets/VSGenericTarget.cs +++ b/Prebuild/src/Core/Targets/VSGenericTarget.cs @@ -35,453 +35,455 @@ using System.CodeDom.Compiler; namespace Prebuild.Core.Targets { - /// - /// - /// - public abstract class VSGenericTarget : ITarget - { - #region Fields + /// + /// + /// + public abstract class VSGenericTarget : ITarget + { + #region Fields - readonly Dictionary tools = new Dictionary(); -// NameValueCollection CopyFiles = new NameValueCollection(); - Kernel kernel; - #endregion + readonly Dictionary tools = new Dictionary(); + // NameValueCollection CopyFiles = new NameValueCollection(); + Kernel kernel; + #endregion - #region Properties - /// - /// Gets or sets the solution version. - /// - /// The solution version. - public abstract string SolutionVersion { get; } - /// - /// Gets or sets the product version. - /// - /// The product version. - public abstract string ProductVersion { get; } - /// - /// Gets or sets the schema version. - /// - /// The schema version. - public abstract string SchemaVersion { get; } - /// - /// Gets or sets the name of the version. - /// - /// The name of the version. - public abstract string VersionName { get; } - /// - /// Gets or sets the version. - /// - /// The version. - public abstract VSVersion Version { get; } - /// - /// Gets the name. - /// - /// The name. - public abstract string Name { get; } + #region Properties + /// + /// Gets or sets the solution version. + /// + /// The solution version. + public abstract string SolutionVersion { get; } + /// + /// Gets or sets the product version. + /// + /// The product version. + public abstract string ProductVersion { get; } + /// + /// Gets or sets the schema version. + /// + /// The schema version. + public abstract string SchemaVersion { get; } + /// + /// Gets or sets the name of the version. + /// + /// The name of the version. + public abstract string VersionName { get; } + /// + /// Gets or sets the version. + /// + /// The version. + public abstract VSVersion Version { get; } + /// + /// Gets the name. + /// + /// The name. + public abstract string Name { get; } - protected abstract string GetToolsVersionXml(FrameworkVersion version); - public abstract string SolutionTag { get; } + protected abstract string GetToolsVersionXml(FrameworkVersion version); + public abstract string SolutionTag { get; } - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - protected VSGenericTarget() - { - tools["C#"] = new ToolInfo("C#", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", "csproj", "CSHARP", "$(MSBuildBinPath)\\Microsoft.CSharp.targets"); - tools["Database"] = new ToolInfo("Database", "{4F174C21-8C12-11D0-8340-0000F80270F8}", "dbp", "UNKNOWN"); - tools["Boo"] = new ToolInfo("Boo", "{45CEA7DC-C2ED-48A6-ACE0-E16144C02365}", "booproj", "Boo", "$(BooBinPath)\\Boo.Microsoft.Build.targets"); - tools["VisualBasic"] = new ToolInfo("VisualBasic", "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", "vbproj", "VisualBasic", "$(MSBuildBinPath)\\Microsoft.VisualBasic.Targets"); - tools["Folder"] = new ToolInfo("Folder", "{2150E333-8FDC-42A3-9474-1A3956D46DE8}", null, null); - } - - #endregion - - #region Private Methods - - private string MakeRefPath(ProjectNode project) - { - string ret = ""; - foreach (ReferencePathNode node in project.ReferencePaths) - { - try - { - string fullPath = Helper.ResolvePath(node.Path); - if (ret.Length < 1) - { - ret = fullPath; - } - else - { - ret += ";" + fullPath; - } - } - catch (ArgumentException) - { - kernel.Log.Write(LogType.Warning, "Could not resolve reference path: {0}", node.Path); - } - } - - return ret; - } - - private static ProjectNode FindProjectInSolution(string name, SolutionNode solution) - { - SolutionNode node = solution; - - while (node.Parent is SolutionNode) - node = node.Parent as SolutionNode; - - return FindProjectInSolutionRecursively(name, node); - } - - private static ProjectNode FindProjectInSolutionRecursively(string name, SolutionNode solution) - { - if (solution.ProjectsTable.ContainsKey(name)) - return solution.ProjectsTable[name]; - - foreach (SolutionNode child in solution.Solutions) - { - ProjectNode node = FindProjectInSolutionRecursively(name, child); - if (node != null) - return node; - } - - return null; - } - - private void WriteProject(SolutionNode solution, ProjectNode project) + /// + /// Initializes a new instance of the class. + /// + protected VSGenericTarget() { - if (!tools.ContainsKey(project.Language)) + tools["C#"] = new ToolInfo("C#", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", "csproj", "CSHARP", "$(MSBuildBinPath)\\Microsoft.CSharp.targets"); + tools["Database"] = new ToolInfo("Database", "{4F174C21-8C12-11D0-8340-0000F80270F8}", "dbp", "UNKNOWN"); + tools["Boo"] = new ToolInfo("Boo", "{45CEA7DC-C2ED-48A6-ACE0-E16144C02365}", "booproj", "Boo", "$(BooBinPath)\\Boo.Microsoft.Build.targets"); + tools["VisualBasic"] = new ToolInfo("VisualBasic", "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", "vbproj", "VisualBasic", "$(MSBuildBinPath)\\Microsoft.VisualBasic.Targets"); + tools["Folder"] = new ToolInfo("Folder", "{2150E333-8FDC-42A3-9474-1A3956D46DE8}", null, null); + } + + #endregion + + #region Private Methods + + private string MakeRefPath(ProjectNode project) + { + string ret = ""; + foreach (ReferencePathNode node in project.ReferencePaths) { - throw new UnknownLanguageException("Unknown .NET language: " + project.Language); - } + try + { + string fullPath = Helper.ResolvePath(node.Path); + if (ret.Length < 1) + { + ret = fullPath; + } + else + { + ret += ";" + fullPath; + } + } + catch (ArgumentException) + { + kernel.Log.Write(LogType.Warning, "Could not resolve reference path: {0}", node.Path); + } + } - ToolInfo toolInfo = tools[project.Language]; - string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension); - StreamWriter ps = new StreamWriter(projectFile); + return ret; + } - kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(projectFile)); + private static ProjectNode FindProjectInSolution(string name, SolutionNode solution) + { + SolutionNode node = solution; - FrameworkVersion fv = project.FrameworkVersion; - if (fv == FrameworkVersion.net5_0 || fv == FrameworkVersion.net6_0 || fv == FrameworkVersion.netstandard2_0) + while (node.Parent is SolutionNode) + node = node.Parent as SolutionNode; + + return FindProjectInSolutionRecursively(name, node); + } + + private static ProjectNode FindProjectInSolutionRecursively(string name, SolutionNode solution) + { + if (solution.ProjectsTable.ContainsKey(name)) + return solution.ProjectsTable[name]; + + foreach (SolutionNode child in solution.Solutions) { - // Write the newer .csproj file format - WriteProjectDotNet(solution, project, ps); - } - else - { - WriteProjectFramework(solution, project, toolInfo, projectFile, ps); - } + ProjectNode node = FindProjectInSolutionRecursively(name, child); + if (node != null) + return node; + } - kernel.CurrentWorkingDirectory.Pop(); - } + return null; + } - private void WriteProjectFramework(SolutionNode solution, ProjectNode project, ToolInfo toolInfo, string projectFile, StreamWriter ps) + private void WriteProject(SolutionNode solution, ProjectNode project) + { + if (!tools.ContainsKey(project.Language)) + { + throw new UnknownLanguageException("Unknown .NET language: " + project.Language); + } + + ToolInfo toolInfo = tools[project.Language]; + string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension); + StreamWriter ps = new StreamWriter(projectFile); + + kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(projectFile)); + + FrameworkVersion fv = project.FrameworkVersion; + if (fv == FrameworkVersion.net5_0 || fv == FrameworkVersion.net6_0 || fv == FrameworkVersion.netstandard2_0) + { + // Write the newer .csproj file format + WriteProjectDotNet(solution, project, ps); + } + else + { + WriteProjectFramework(solution, project, toolInfo, projectFile, ps); + } + + kernel.CurrentWorkingDirectory.Pop(); + } + + private void WriteProjectFramework(SolutionNode solution, ProjectNode project, ToolInfo toolInfo, string projectFile, StreamWriter ps) { - #region Project File - using (ps) - { + #region Project File + using (ps) + { string targets = ""; - if(project.Files.CopyFiles > 0) + if (project.Files.CopyFiles > 0) targets = "Build;CopyFiles"; else targets = "Build"; - ps.WriteLine("", targets, GetToolsVersionXml(project.FrameworkVersion)); - ps.WriteLine(" "); - ps.WriteLine(" Local"); - ps.WriteLine(" {0}", ProductVersion); - ps.WriteLine(" {0}", SchemaVersion); - ps.WriteLine(" {{{0}}}", project.Guid.ToString().ToUpper()); + ps.WriteLine("", targets, GetToolsVersionXml(project.FrameworkVersion)); + ps.WriteLine(" "); + ps.WriteLine(" Local"); + ps.WriteLine(" {0}", ProductVersion); + ps.WriteLine(" {0}", SchemaVersion); + ps.WriteLine(" {{{0}}}", project.Guid.ToString().ToUpper()); - // Visual Studio has a hard coded guid for the project type - if (project.Type == ProjectType.Web) - ps.WriteLine(" {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}"); - ps.WriteLine(" Debug"); - ps.WriteLine(" {0}", project.AppIcon); - ps.WriteLine(" "); - ps.WriteLine(" "); - ps.WriteLine(" {0}", project.AssemblyName); - foreach (ConfigurationNode conf in project.Configurations) - { - if (conf.Options.KeyFile != "") - { - ps.WriteLine(" {0}", conf.Options.KeyFile); - ps.WriteLine(" true"); - break; - } - } - ps.WriteLine(" JScript"); - ps.WriteLine(" Grid"); - ps.WriteLine(" IE50"); - ps.WriteLine(" false"); - ps.WriteLine(" {0}", project.FrameworkVersion.ToString().Replace("_", ".")); + // Visual Studio has a hard coded guid for the project type + if (project.Type == ProjectType.Web) + ps.WriteLine(" {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}"); + ps.WriteLine(" Debug"); + ps.WriteLine(" {0}", project.AppIcon); + ps.WriteLine(" "); + ps.WriteLine(" "); + ps.WriteLine(" {0}", project.AssemblyName); + foreach (ConfigurationNode conf in project.Configurations) + { + if (conf.Options.KeyFile != "") + { + ps.WriteLine(" {0}", conf.Options.KeyFile); + ps.WriteLine(" true"); + break; + } + } + ps.WriteLine(" JScript"); + ps.WriteLine(" Grid"); + ps.WriteLine(" IE50"); + ps.WriteLine(" false"); + ps.WriteLine(" {0}", project.FrameworkVersion.ToString().Replace("_", ".")); - ps.WriteLine(" {0}", project.Type == ProjectType.Web ? ProjectType.Library.ToString() : project.Type.ToString()); - ps.WriteLine(" {0}", project.DesignerFolder); - ps.WriteLine(" {0}", project.RootNamespace); - ps.WriteLine(" {0}", project.StartupObject); - if (string.IsNullOrEmpty(project.DebugStartParameters)) - { - ps.WriteLine(" {0}", project.DebugStartParameters); - } - ps.WriteLine(" "); - ps.WriteLine(" "); + ps.WriteLine(" {0}", project.Type == ProjectType.Web ? ProjectType.Library.ToString() : project.Type.ToString()); + ps.WriteLine(" {0}", project.DesignerFolder); + ps.WriteLine(" {0}", project.RootNamespace); + ps.WriteLine(" {0}", project.StartupObject); + if (string.IsNullOrEmpty(project.DebugStartParameters)) + { + ps.WriteLine(" {0}", project.DebugStartParameters); + } + ps.WriteLine(" "); + ps.WriteLine(" "); - ps.WriteLine(" "); + ps.WriteLine(" "); if (!string.IsNullOrEmpty(project.ApplicationManifest)) { ps.WriteLine(" "); ps.WriteLine(" " + project.ApplicationManifest + ""); ps.WriteLine(" "); } - foreach (ConfigurationNode conf in project.Configurations) - { - ps.Write(" ", conf.Name, conf.Platform); - ps.WriteLine(" {0}", conf.Options["AllowUnsafe"]); - ps.WriteLine(" {0}", conf.Options["BaseAddress"]); - ps.WriteLine(" {0}", conf.Options["CheckUnderflowOverflow"]); - ps.WriteLine(" "); - ps.WriteLine(" "); - ps.WriteLine(" {0}", + foreach (ConfigurationNode conf in project.Configurations) + { + ps.Write(" ", conf.Name, conf.Platform); + ps.WriteLine(" {0}", conf.Options["AllowUnsafe"]); + ps.WriteLine(" {0}", conf.Options["BaseAddress"]); + ps.WriteLine(" {0}", conf.Options["CheckUnderflowOverflow"]); + ps.WriteLine(" "); + ps.WriteLine(" "); + ps.WriteLine(" {0}", conf.Options["CompilerDefines"].ToString() == "" ? this.kernel.ForcedConditionals : conf.Options["CompilerDefines"] + ";" + kernel.ForcedConditionals); - ps.WriteLine(" {0}", Helper.NormalizePath(conf.Options["XmlDocFile"].ToString())); - ps.WriteLine(" {0}", conf.Options["DebugInformation"]); - ps.WriteLine(" {0}", conf.Options["FileAlignment"]); - ps.WriteLine(" {0}", conf.Options["OptimizeCode"]); - if (project.Type != ProjectType.Web) - ps.WriteLine(" {0}", - Helper.EndPath(Helper.NormalizePath(conf.Options["OutputPath"].ToString()))); - else - ps.WriteLine(" {0}", - Helper.EndPath(Helper.NormalizePath("bin\\"))); + ps.WriteLine(" {0}", Helper.NormalizePath(conf.Options["XmlDocFile"].ToString())); + ps.WriteLine(" {0}", conf.Options["DebugInformation"]); + ps.WriteLine(" {0}", conf.Options["FileAlignment"]); + ps.WriteLine(" {0}", conf.Options["OptimizeCode"]); + if (project.Type != ProjectType.Web) + ps.WriteLine(" {0}", + Helper.EndPath(Helper.NormalizePath(conf.Options["OutputPath"].ToString()))); + else + ps.WriteLine(" {0}", + Helper.EndPath(Helper.NormalizePath("bin\\"))); - ps.WriteLine(" {0}", conf.Options["RegisterComInterop"]); - ps.WriteLine(" {0}", conf.Options["RemoveIntegerChecks"]); - ps.WriteLine(" {0}", conf.Options["WarningsAsErrors"]); - ps.WriteLine(" {0}", conf.Options["WarningLevel"]); - ps.WriteLine(" {0}", conf.Options["NoStdLib"]); - ps.WriteLine(" {0}", conf.Options["SuppressWarnings"]); - ps.WriteLine(" {0}", conf.Platform); - ps.WriteLine(" {0}",conf.Options["Prefer32Bit"]); - ps.WriteLine(" "); - } - - //ps.WriteLine(" "); - - // Output warnings if NET6 stuff is in a Framework4 definition - if (project.ProjectReferences.Count > 0) { - kernel.Log.Write(LogType.Warning, "ProjectReference is not processed for Frameworks."); - } - if (project.PackageReferences.Count > 0) { - kernel.Log.Write(LogType.Warning, "PackageReference is not processed for Frameworks."); + ps.WriteLine(" {0}", conf.Options["RegisterComInterop"]); + ps.WriteLine(" {0}", conf.Options["RemoveIntegerChecks"]); + ps.WriteLine(" {0}", conf.Options["WarningsAsErrors"]); + ps.WriteLine(" {0}", conf.Options["WarningLevel"]); + ps.WriteLine(" {0}", conf.Options["NoStdLib"]); + ps.WriteLine(" {0}", conf.Options["SuppressWarnings"]); + ps.WriteLine(" {0}", conf.Platform); + ps.WriteLine(" {0}", conf.Options["Prefer32Bit"]); + ps.WriteLine(" "); } - // Output the ItemGroup for project.References - WriteProjectReferences(solution, project, ps); + //ps.WriteLine(" "); - // ps.WriteLine(" "); - ps.WriteLine(" "); + // Output warnings if NET6 stuff is in a Framework4 definition + if (project.ProjectReferences.Count > 0) + { + kernel.Log.Write(LogType.Warning, "ProjectReference is not processed for Frameworks."); + } + if (project.PackageReferences.Count > 0) + { + kernel.Log.Write(LogType.Warning, "PackageReference is not processed for Frameworks."); + } - // ps.WriteLine(" "); - List list = new List(); + // Output the ItemGroup for project.References + WriteProjectReferences(solution, project, ps); - foreach (string path in project.Files) - { - string lower = path.ToLower(); - if (lower.EndsWith(".resx")) - { - string codebehind = String.Format("{0}.Designer{1}", path.Substring(0, path.LastIndexOf('.')), toolInfo.LanguageExtension); - if (!list.Contains(codebehind)) - list.Add(codebehind); - } + // ps.WriteLine(" "); + ps.WriteLine(" "); - } + // ps.WriteLine(" "); + List list = new List(); + + foreach (string path in project.Files) + { + string lower = path.ToLower(); + if (lower.EndsWith(".resx")) + { + string codebehind = String.Format("{0}.Designer{1}", path.Substring(0, path.LastIndexOf('.')), toolInfo.LanguageExtension); + if (!list.Contains(codebehind)) + list.Add(codebehind); + } + + } #region Files foreach (string filePath in project.Files) - { + { // Add the filePath with the destination as the key // will use it later to form the copy parameters with Include lists // for each destination if (project.Files.GetBuildAction(filePath) == BuildAction.Copy) continue; - // if (file == "Properties\\Bind.Designer.cs") - // { - // Console.WriteLine("Wait a minute!"); - // Console.WriteLine(project.Files.GetSubType(file).ToString()); - // } - SubType subType = project.Files.GetSubType(filePath); - - // Visual Studio chokes on file names if forward slash is used as a path separator - // instead of backslash. So we must make sure that all file paths written to the - // project file use \ as a path separator. - string file = filePath.Replace(@"/", @"\"); + // if (file == "Properties\\Bind.Designer.cs") + // { + // Console.WriteLine("Wait a minute!"); + // Console.WriteLine(project.Files.GetSubType(file).ToString()); + // } + SubType subType = project.Files.GetSubType(filePath); - if (subType != SubType.Code && subType != SubType.Settings && subType != SubType.Designer - && subType != SubType.CodeBehind) - { - ps.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx"); - ps.WriteLine(" {0}", Path.GetFileName(file)); - ps.WriteLine(" Designer"); - ps.WriteLine(" "); - // - } + // Visual Studio chokes on file names if forward slash is used as a path separator + // instead of backslash. So we must make sure that all file paths written to the + // project file use \ as a path separator. + string file = filePath.Replace(@"/", @"\"); - if (subType == SubType.Designer) - { - ps.WriteLine(" ", file); - - string autogen_name = file.Substring(0, file.LastIndexOf('.')) + ".Designer.cs"; - string dependent_name = filePath.Substring(0, file.LastIndexOf('.')) + ".cs"; + if (subType != SubType.Code && subType != SubType.Settings && subType != SubType.Designer + && subType != SubType.CodeBehind) + { + ps.WriteLine(" ", file.Substring(0, file.LastIndexOf('.')) + ".resx"); + ps.WriteLine(" {0}", Path.GetFileName(file)); + ps.WriteLine(" Designer"); + ps.WriteLine(" "); + // + } - // Check for a parent .cs file with the same name as this designer file - if (File.Exists(Helper.NormalizePath(dependent_name))) - { - ps.WriteLine(" {0}", Path.GetFileName(dependent_name)); - } - else - { - ps.WriteLine(" ResXFileCodeGenerator"); - ps.WriteLine(" {0}", Path.GetFileName(autogen_name)); - ps.WriteLine(" " + subType + ""); - } - - ps.WriteLine(" "); - if (File.Exists(Helper.NormalizePath(autogen_name))) - { - ps.WriteLine(" ", autogen_name); - //ps.WriteLine(" True"); + if (subType == SubType.Designer) + { + ps.WriteLine(" ", file); - // If a parent .cs file exists, link this autogen file to it. Otherwise link - // to the designer file - if (File.Exists(dependent_name)) - { - ps.WriteLine(" {0}", Path.GetFileName(dependent_name)); - } - else - { - ps.WriteLine(" True"); - ps.WriteLine(" {0}", Path.GetFileName(filePath)); - } - - ps.WriteLine(" "); - } - list.Add(autogen_name); - } - if (subType == SubType.Settings) - { - ps.Write(" <{0} ", project.Files.GetBuildAction(filePath)); - ps.WriteLine("Include=\"{0}\">", file); - string fileName = Path.GetFileName(filePath); - if (project.Files.GetBuildAction(filePath) == BuildAction.None) - { - ps.WriteLine(" SettingsSingleFileGenerator"); - ps.WriteLine(" {0}", fileName.Substring(0, fileName.LastIndexOf('.')) + ".Designer.cs"); - } - else - { - ps.WriteLine(" Code"); - ps.WriteLine(" True"); - ps.WriteLine(" True"); - string fileNameShort = fileName.Substring(0, fileName.LastIndexOf('.')); - string fileNameShorter = fileNameShort.Substring(0, fileNameShort.LastIndexOf('.')); - ps.WriteLine(" {0}", Path.GetFileName(fileNameShorter + ".settings")); - } - ps.WriteLine(" ", project.Files.GetBuildAction(filePath)); - } - else if (subType != SubType.Designer) - { - string path = Helper.NormalizePath(file); - string path_lower = path.ToLower(); + string autogen_name = file.Substring(0, file.LastIndexOf('.')) + ".Designer.cs"; + string dependent_name = filePath.Substring(0, file.LastIndexOf('.')) + ".cs"; - if (!list.Contains(filePath)) - { - ps.Write(" <{0} ", project.Files.GetBuildAction(filePath)); + // Check for a parent .cs file with the same name as this designer file + if (File.Exists(Helper.NormalizePath(dependent_name))) + { + ps.WriteLine(" {0}", Path.GetFileName(dependent_name)); + } + else + { + ps.WriteLine(" ResXFileCodeGenerator"); + ps.WriteLine(" {0}", Path.GetFileName(autogen_name)); + ps.WriteLine(" " + subType + ""); + } - int startPos = 0; - if (project.Files.GetPreservePath(filePath)) - { - while ((@"./\").IndexOf(file.Substring(startPos, 1)) != -1) - startPos++; + ps.WriteLine(" "); + if (File.Exists(Helper.NormalizePath(autogen_name))) + { + ps.WriteLine(" ", autogen_name); + //ps.WriteLine(" True"); - } - else - { - startPos = file.LastIndexOf(Path.GetFileName(path)); - } - - // be sure to write out the path with backslashes so VS recognizes - // the file properly. - ps.WriteLine("Include=\"{0}\">", file); + // If a parent .cs file exists, link this autogen file to it. Otherwise link + // to the designer file + if (File.Exists(dependent_name)) + { + ps.WriteLine(" {0}", Path.GetFileName(dependent_name)); + } + else + { + ps.WriteLine(" True"); + ps.WriteLine(" {0}", Path.GetFileName(filePath)); + } - int last_period_index = file.LastIndexOf('.'); + ps.WriteLine(" "); + } + list.Add(autogen_name); + } + if (subType == SubType.Settings) + { + ps.Write(" <{0} ", project.Files.GetBuildAction(filePath)); + ps.WriteLine("Include=\"{0}\">", file); + string fileName = Path.GetFileName(filePath); + if (project.Files.GetBuildAction(filePath) == BuildAction.None) + { + ps.WriteLine(" SettingsSingleFileGenerator"); + ps.WriteLine(" {0}", fileName.Substring(0, fileName.LastIndexOf('.')) + ".Designer.cs"); + } + else + { + ps.WriteLine(" Code"); + ps.WriteLine(" True"); + ps.WriteLine(" True"); + string fileNameShort = fileName.Substring(0, fileName.LastIndexOf('.')); + string fileNameShorter = fileNameShort.Substring(0, fileNameShort.LastIndexOf('.')); + ps.WriteLine(" {0}", Path.GetFileName(fileNameShorter + ".settings")); + } + ps.WriteLine(" ", project.Files.GetBuildAction(filePath)); + } + else if (subType != SubType.Designer) + { + string path = Helper.NormalizePath(file); + string path_lower = path.ToLower(); + + if (!list.Contains(filePath)) + { + ps.Write(" <{0} ", project.Files.GetBuildAction(filePath)); + + int startPos = 0; + if (project.Files.GetPreservePath(filePath)) + { + while ((@"./\").IndexOf(file.Substring(startPos, 1)) != -1) + startPos++; + + } + else + { + startPos = file.LastIndexOf(Path.GetFileName(path)); + } + + // be sure to write out the path with backslashes so VS recognizes + // the file properly. + ps.WriteLine("Include=\"{0}\">", file); + + int last_period_index = file.LastIndexOf('.'); string short_file_name = (last_period_index >= 0) ? file.Substring(0, last_period_index) : file; - string extension = Path.GetExtension(path); - // make this upper case, so that when File.Exists tests for the - // existence of a designer file on a case-sensitive platform, - // it is correctly identified. - string designer_format = string.Format(".Designer{0}", extension); + string extension = Path.GetExtension(path); + // make this upper case, so that when File.Exists tests for the + // existence of a designer file on a case-sensitive platform, + // it is correctly identified. + string designer_format = string.Format(".Designer{0}", extension); - if (path_lower.EndsWith(designer_format.ToLowerInvariant())) - { - int designer_index = path.IndexOf(designer_format); - string file_name = path.Substring(0, designer_index); + if (path_lower.EndsWith(designer_format.ToLowerInvariant())) + { + int designer_index = path.IndexOf(designer_format); + string file_name = path.Substring(0, designer_index); - // There are two corrections to the next lines: - // 1. Fix the connection between a designer file and a form - // or usercontrol that don't have an associated resx file. - // 2. Connect settings files to associated designer files. - if (File.Exists(file_name + extension)) - ps.WriteLine(" {0}", Path.GetFileName(file_name + extension)); - else if (File.Exists(file_name + ".resx")) - ps.WriteLine(" {0}", Path.GetFileName(file_name + ".resx")); - else if (File.Exists(file_name + ".settings")) - { - ps.WriteLine(" {0}", Path.GetFileName(file_name + ".settings")); - ps.WriteLine(" True"); - ps.WriteLine(" True"); - } - } - else if (subType == SubType.CodeBehind) - { - ps.WriteLine(" {0}", Path.GetFileName(short_file_name)); - } - if (project.Files.GetIsLink(filePath)) - { - string alias = project.Files.GetLinkPath(filePath); - alias += file.Substring(startPos); - alias = Helper.NormalizePath(alias); - ps.WriteLine(" {0}", alias); - } - else if (project.Files.GetBuildAction(filePath) != BuildAction.None) - { - if (project.Files.GetBuildAction(filePath) != BuildAction.EmbeddedResource) - { - ps.WriteLine(" {0}", subType); - } - } + // There are two corrections to the next lines: + // 1. Fix the connection between a designer file and a form + // or usercontrol that don't have an associated resx file. + // 2. Connect settings files to associated designer files. + if (File.Exists(file_name + extension)) + ps.WriteLine(" {0}", Path.GetFileName(file_name + extension)); + else if (File.Exists(file_name + ".resx")) + ps.WriteLine(" {0}", Path.GetFileName(file_name + ".resx")); + else if (File.Exists(file_name + ".settings")) + { + ps.WriteLine(" {0}", Path.GetFileName(file_name + ".settings")); + ps.WriteLine(" True"); + ps.WriteLine(" True"); + } + } + else if (subType == SubType.CodeBehind) + { + ps.WriteLine(" {0}", Path.GetFileName(short_file_name)); + } + if (project.Files.GetIsLink(filePath)) + { + string alias = project.Files.GetLinkPath(filePath); + alias += file.Substring(startPos); + alias = Helper.NormalizePath(alias); + ps.WriteLine(" {0}", alias); + } + else if (project.Files.GetBuildAction(filePath) != BuildAction.None) + { + if (project.Files.GetBuildAction(filePath) != BuildAction.EmbeddedResource) + { + ps.WriteLine(" {0}", subType); + } + } - if (project.Files.GetCopyToOutput(filePath) != CopyToOutput.Never) - { - ps.WriteLine(" {0}", project.Files.GetCopyToOutput(filePath)); - } + if (project.Files.GetCopyToOutput(filePath) != CopyToOutput.Never) + { + ps.WriteLine(" {0}", project.Files.GetCopyToOutput(filePath)); + } - ps.WriteLine(" ", project.Files.GetBuildAction(filePath)); - } - } - } + ps.WriteLine(" ", project.Files.GetBuildAction(filePath)); + } + } + } ps.WriteLine(" "); #endregion @@ -489,7 +491,8 @@ namespace Prebuild.Core.Targets * Copy Task * */ - if ( project.Files.CopyFiles > 0 ) { + if (project.Files.CopyFiles > 0) + { Dictionary IncludeTags = new Dictionary(); int TagCount = 0; @@ -518,81 +521,81 @@ namespace Prebuild.Core.Targets ps.WriteLine(" "); } - ps.WriteLine(" "); - ps.WriteLine(" "); - ps.WriteLine(" "); - ps.WriteLine(" "); - ps.WriteLine(" "); - ps.WriteLine(" "); - ps.WriteLine(" "); - ps.WriteLine(""); - } - #endregion + ps.WriteLine(" "); + ps.WriteLine(" "); + ps.WriteLine(" "); + ps.WriteLine(" "); + ps.WriteLine(" "); + ps.WriteLine(" "); + ps.WriteLine(" "); + ps.WriteLine(""); + } + #endregion - #region User File + #region User File - ps = new StreamWriter(projectFile + ".user"); - using (ps) - { - // Get the first configuration from the project. - ConfigurationNode firstConfiguration = null; - - if (project.Configurations.Count > 0) - { - firstConfiguration = project.Configurations[0]; - } - - ps.WriteLine(""); - //ps.WriteLine( "" ); - //ps.WriteLine(" <{0}>", toolInfo.XMLTag); - //ps.WriteLine(" "); - ps.WriteLine(" "); - //ps.WriteLine(" ", MakeRefPath(project)); - - if (firstConfiguration != null) - { - ps.WriteLine(" {0}", firstConfiguration.Name); - ps.WriteLine(" {0}", firstConfiguration.Platform); - } - - ps.WriteLine(" {0}", MakeRefPath(project)); - ps.WriteLine(" {0}", ProductVersion); - ps.WriteLine(" ProjectFiles"); - ps.WriteLine(" 0"); - ps.WriteLine(" "); - foreach (ConfigurationNode conf in project.Configurations) - { - ps.Write(" "); - } - ps.WriteLine(""); - } - #endregion - } - - private void WriteProjectDotNet(SolutionNode solution, ProjectNode project, StreamWriter ps) - { - #region Project File - using (ps) + ps = new StreamWriter(projectFile + ".user"); + using (ps) { - ps.WriteLine(""); - ps.WriteLine(); + // Get the first configuration from the project. + ConfigurationNode firstConfiguration = null; - ps.WriteLine(" "); - ps.WriteLine(" {0}", project.FrameworkVersion.ToString().Replace("_",".")); - ps.WriteLine(" {0}", project.Name); - ps.WriteLine(" "); - ps.WriteLine(); - - // For .NET5/6 files, the Configuration section does not specify a build target - // so here we look for the "unknown" target type for the specified parameters. - foreach (ConfigurationNode conf in project.Configurations) + if (project.Configurations.Count > 0) { - if (conf.Name == "unknown") + firstConfiguration = project.Configurations[0]; + } + + ps.WriteLine(""); + //ps.WriteLine( "" ); + //ps.WriteLine(" <{0}>", toolInfo.XMLTag); + //ps.WriteLine(" "); + ps.WriteLine(" "); + //ps.WriteLine(" ", MakeRefPath(project)); + + if (firstConfiguration != null) + { + ps.WriteLine(" {0}", firstConfiguration.Name); + ps.WriteLine(" {0}", firstConfiguration.Platform); + } + + ps.WriteLine(" {0}", MakeRefPath(project)); + ps.WriteLine(" {0}", ProductVersion); + ps.WriteLine(" ProjectFiles"); + ps.WriteLine(" 0"); + ps.WriteLine(" "); + foreach (ConfigurationNode conf in project.Configurations) + { + ps.Write(" "); + } + ps.WriteLine(""); + } + #endregion + } + + private void WriteProjectDotNet(SolutionNode solution, ProjectNode project, StreamWriter ps) + { + #region Project File + using (ps) + { + ps.WriteLine(""); + ps.WriteLine(); + + ps.WriteLine(" "); + ps.WriteLine(" {0}", project.FrameworkVersion.ToString().Replace("_", ".")); + ps.WriteLine(" {0}", project.Name); + ps.WriteLine(" "); + ps.WriteLine(); + + // For .NET5/6 files, the Configuration section does not specify a build target + // so here we look for the "unknown" target type for the specified parameters. + foreach (ConfigurationNode conf in project.Configurations) + { + if (conf.Name == "unknown") { ps.WriteLine(" "); - foreach (string opt in conf.Options.AllDefined()) + foreach (string opt in conf.Options.AllDefined()) { ps.WriteLine(" <{0}>{1}", opt, Helper.EndPath(Helper.NormalizePath(conf.Options[opt].ToString()))); @@ -602,36 +605,36 @@ namespace Prebuild.Core.Targets } } - if (project.ProjectReferences.Count > 0) + if (project.ProjectReferences.Count > 0) { ps.WriteLine(" "); - foreach (ProjectReferenceNode refer in project.ProjectReferences) + foreach (ProjectReferenceNode refer in project.ProjectReferences) { - ps.WriteLine(" ", refer.Include); - } + ps.WriteLine(" ", refer.Include); + } ps.WriteLine(" "); ps.WriteLine(); - } - if (project.PackageReferences.Count > 0) + } + if (project.PackageReferences.Count > 0) { ps.WriteLine(" "); - foreach (PackageReferenceNode pack in project.PackageReferences) + foreach (PackageReferenceNode pack in project.PackageReferences) { - ps.WriteLine(" ", - pack.Name, pack.Version); - } + ps.WriteLine(" ", + pack.Name, pack.Version); + } ps.WriteLine(" "); ps.WriteLine(); - } - // Output the ItemGroup for project.References - WriteProjectReferences(solution, project, ps); + } + // Output the ItemGroup for project.References + WriteProjectReferences(solution, project, ps); - ps.WriteLine(""); + ps.WriteLine(""); } #endregion } - private void WriteProjectReferences(SolutionNode solution, ProjectNode project, StreamWriter ps) + private void WriteProjectReferences(SolutionNode solution, ProjectNode project, StreamWriter ps) { Dictionary projectReferences = new Dictionary(); List otherReferences = new List(); @@ -645,8 +648,8 @@ namespace Prebuild.Core.Targets else projectReferences.Add(refr, projectNode); } - // Assembly References - if (otherReferences.Count > 0) + // Assembly References + if (otherReferences.Count > 0) { ps.WriteLine(" "); @@ -660,20 +663,22 @@ namespace Prebuild.Core.Targets ps.Write(refr.Name); ps.WriteLine(""); - if(!String.IsNullOrEmpty(refr.Path)) + if (!String.IsNullOrEmpty(refr.Path)) { // Use absolute path to assembly (for determining assembly type) string absolutePath = Path.Combine(project.FullPath, refr.Path); - if(File.Exists(Helper.MakeFilePath(absolutePath, refr.Name, "exe"))) + if (File.Exists(Helper.MakeFilePath(absolutePath, refr.Name, "exe"))) { // Assembly is an executable (exe) ps.WriteLine(" {0}", Helper.MakeFilePath(refr.Path, refr.Name, "exe")); - } else if(File.Exists(Helper.MakeFilePath(absolutePath, refr.Name, "dll"))) + } + else if (File.Exists(Helper.MakeFilePath(absolutePath, refr.Name, "dll"))) { // Assembly is an library (dll) ps.WriteLine(" {0}", Helper.MakeFilePath(refr.Path, refr.Name, "dll")); - } else - { + } + else + { string referencePath = Helper.MakeFilePath(refr.Path, refr.Name, "dll"); kernel.Log.Write(LogType.Warning, "Reference \"{0}\": The specified file doesn't exist.", referencePath); ps.WriteLine(" {0}", Helper.MakeFilePath(refr.Path, refr.Name, "dll")); @@ -685,10 +690,10 @@ namespace Prebuild.Core.Targets } ps.WriteLine(" "); ps.WriteLine(); - } + } - //Project References - if (projectReferences.Count > 0) + //Project References + if (projectReferences.Count > 0) { ps.WriteLine(" "); foreach (KeyValuePair pair in projectReferences) @@ -714,368 +719,368 @@ namespace Prebuild.Core.Targets } ps.WriteLine(" "); ps.WriteLine(); - } - } + } + } private void WriteSolution(SolutionNode solution, bool writeSolutionToDisk) - { - kernel.Log.Write("Creating {0} solution and project files", VersionName); - - foreach (SolutionNode child in solution.Solutions) - { - kernel.Log.Write("...Creating folder: {0}", child.Name); - WriteSolution(child, false); - } - - foreach (ProjectNode project in solution.Projects) - { - kernel.Log.Write("...Creating project: {0}", project.Name); - WriteProject(solution, project); - } - - foreach (DatabaseProjectNode project in solution.DatabaseProjects) - { - kernel.Log.Write("...Creating database project: {0}", project.Name); - WriteDatabaseProject(solution, project); - } - - if (writeSolutionToDisk) // only write main solution - { - kernel.Log.Write(""); - string solutionFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln"); - - using (StreamWriter ss = new StreamWriter(solutionFile)) - { - kernel.CurrentWorkingDirectory.Push(); - Helper.SetCurrentDir(Path.GetDirectoryName(solutionFile)); - - ss.WriteLine("Microsoft Visual Studio Solution File, Format Version {0}", SolutionVersion); - ss.WriteLine(SolutionTag); - - WriteProjectDeclarations(ss, solution, solution); - - ss.WriteLine("Global"); - - ss.WriteLine("\tGlobalSection(SolutionConfigurationPlatforms) = preSolution"); - foreach (ConfigurationNode conf in solution.Configurations) - { - ss.WriteLine("\t\t{0} = {0}", conf.NameAndPlatform); - } - ss.WriteLine("\tEndGlobalSection"); - - ss.WriteLine("\tGlobalSection(ProjectConfigurationPlatforms) = postSolution"); - WriteConfigurationLines(solution.Configurations, solution, ss); - ss.WriteLine("\tEndGlobalSection"); - - if (solution.Solutions.Count > 0) - { - ss.WriteLine("\tGlobalSection(NestedProjects) = preSolution"); - foreach (SolutionNode embeddedSolution in solution.Solutions) - { - WriteNestedProjectMap(ss, embeddedSolution); - } - ss.WriteLine("\tEndGlobalSection"); - } - - ss.WriteLine("EndGlobal"); - } - - kernel.CurrentWorkingDirectory.Pop(); - } - } - - private void WriteProjectDeclarations(TextWriter writer, SolutionNode actualSolution, SolutionNode embeddedSolution) - { - foreach (SolutionNode childSolution in embeddedSolution.Solutions) - { - WriteEmbeddedSolution(writer, childSolution); - WriteProjectDeclarations(writer, actualSolution, childSolution); - } - - foreach (ProjectNode project in embeddedSolution.Projects) - { - WriteProject(actualSolution, writer, project); - } - - foreach (DatabaseProjectNode dbProject in embeddedSolution.DatabaseProjects) - { - WriteProject(actualSolution, writer, dbProject); - } - - if (actualSolution.Guid == embeddedSolution.Guid) - { - WriteSolutionFiles(actualSolution, writer); - } - } - - private static void WriteNestedProjectMap(TextWriter writer, SolutionNode embeddedSolution) - { - foreach (ProjectNode project in embeddedSolution.Projects) - { - WriteNestedProject(writer, embeddedSolution, project.Guid); - } - - foreach (DatabaseProjectNode dbProject in embeddedSolution.DatabaseProjects) - { - WriteNestedProject(writer, embeddedSolution, dbProject.Guid); - } - - foreach (SolutionNode child in embeddedSolution.Solutions) - { - WriteNestedProject(writer, embeddedSolution, child.Guid); - WriteNestedProjectMap(writer, child); - } - } - - private static void WriteNestedProject(TextWriter writer, SolutionNode solution, Guid projectGuid) - { - WriteNestedFolder(writer, solution.Guid, projectGuid); - } - - private static void WriteNestedFolder(TextWriter writer, Guid parentGuid, Guid childGuid) - { - writer.WriteLine("\t\t{0} = {1}", - childGuid.ToString("B").ToUpper(), - parentGuid.ToString("B").ToUpper()); - } - - private static void WriteConfigurationLines(IEnumerable configurations, SolutionNode solution, TextWriter ss) - { - foreach (ProjectNode project in solution.Projects) - { - foreach (ConfigurationNode conf in configurations) - { - ss.WriteLine("\t\t{0}.{1}.ActiveCfg = {1}", - project.Guid.ToString("B").ToUpper(), - conf.NameAndPlatform); - - ss.WriteLine("\t\t{0}.{1}.Build.0 = {1}", - project.Guid.ToString("B").ToUpper(), - conf.NameAndPlatform); - } - } - - foreach (SolutionNode child in solution.Solutions) - { - WriteConfigurationLines(configurations, child, ss); - } - } - - private void WriteSolutionFiles(SolutionNode solution, TextWriter ss) - { - if(solution.Files != null && solution.Files.Count > 0) - WriteProject(ss, "Folder", solution.Guid, "Solution Files", "Solution Files", solution.Files); - } - - private void WriteEmbeddedSolution(TextWriter writer, SolutionNode embeddedSolution) - { - WriteProject(writer, "Folder", embeddedSolution.Guid, embeddedSolution.Name, embeddedSolution.Name, embeddedSolution.Files); - } - - private void WriteProject(SolutionNode solution, TextWriter ss, ProjectNode project) - { - WriteProject(ss, solution, project.Language, project.Guid, project.Name, project.FullPath); - } - - private void WriteProject(SolutionNode solution, TextWriter ss, DatabaseProjectNode dbProject) - { - if (solution.Files != null && solution.Files.Count > 0) - WriteProject(ss, solution, "Database", dbProject.Guid, dbProject.Name, dbProject.FullPath); - } - - const string ProjectDeclarationBeginFormat = "Project(\"{0}\") = \"{1}\", \"{2}\", \"{3}\""; - const string ProjectDeclarationEndFormat = "EndProject"; - - private void WriteProject(TextWriter ss, SolutionNode solution, string language, Guid guid, string name, string projectFullPath) - { - if (!tools.ContainsKey(language)) - throw new UnknownLanguageException("Unknown .NET language: " + language); - - ToolInfo toolInfo = tools[language]; - - string path = Helper.MakePathRelativeTo(solution.FullPath, projectFullPath); - - path = Helper.MakeFilePath(path, name, toolInfo.FileExtension); - - WriteProject(ss, language, guid, name, path); - } - - private void WriteProject(TextWriter writer, string language, Guid projectGuid, string name, string location) - { - WriteProject(writer, language, projectGuid, name, location, null); - } - - private void WriteProject(TextWriter writer, string language, Guid projectGuid, string name, string location, FilesNode files) - { - if (!tools.ContainsKey(language)) - throw new UnknownLanguageException("Unknown .NET language: " + language); - - ToolInfo toolInfo = tools[language]; - - writer.WriteLine(ProjectDeclarationBeginFormat, - toolInfo.Guid, - name, - location, - projectGuid.ToString("B").ToUpper()); - - if (files != null) - { - writer.WriteLine("\tProjectSection(SolutionItems) = preProject"); - - foreach (string file in files) - writer.WriteLine("\t\t{0} = {0}", file); - - writer.WriteLine("\tEndProjectSection"); - } - - writer.WriteLine(ProjectDeclarationEndFormat); - } - - private void WriteDatabaseProject(SolutionNode solution, DatabaseProjectNode project) - { - string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "dbp"); - IndentedTextWriter ps = new IndentedTextWriter(new StreamWriter(projectFile), " "); - - kernel.CurrentWorkingDirectory.Push(); - - Helper.SetCurrentDir(Path.GetDirectoryName(projectFile)); - - using (ps) - { - ps.WriteLine("# Microsoft Developer Studio Project File - Database Project"); - ps.WriteLine("Begin DataProject = \"{0}\"", project.Name); - ps.Indent++; - ps.WriteLine("MSDTVersion = \"80\""); - // TODO: Use the project.Files property - if (ContainsSqlFiles(Path.GetDirectoryName(projectFile))) - WriteDatabaseFoldersAndFiles(ps, Path.GetDirectoryName(projectFile)); - - ps.WriteLine("Begin DBRefFolder = \"Database References\""); - ps.Indent++; - foreach (DatabaseReferenceNode reference in project.References) - { - ps.WriteLine("Begin DBRefNode = \"{0}\"", reference.Name); - ps.Indent++; - ps.WriteLine("ConnectStr = \"{0}\"", reference.ConnectionString); - ps.WriteLine("Provider = \"{0}\"", reference.ProviderId.ToString("B").ToUpper()); - //ps.WriteLine("Colorizer = 5"); - ps.Indent--; - ps.WriteLine("End"); - } - ps.Indent--; - ps.WriteLine("End"); - ps.Indent--; - ps.WriteLine("End"); - - ps.Flush(); - } - - kernel.CurrentWorkingDirectory.Pop(); - } - - private static bool ContainsSqlFiles(string folder) - { - if(Directory.GetFiles(folder, "*.sql").Length > 0) - return true; // if the folder contains 1 .sql file, that's good enough - - foreach (string child in Directory.GetDirectories(folder)) - { - if (ContainsSqlFiles(child)) - return true; // if 1 child folder contains a .sql file, still good enough - } - - return false; - } - - private static void WriteDatabaseFoldersAndFiles(IndentedTextWriter writer, string folder) - { - foreach (string child in Directory.GetDirectories(folder)) - { - if (ContainsSqlFiles(child)) - { - writer.WriteLine("Begin Folder = \"{0}\"", Path.GetFileName(child)); - writer.Indent++; - WriteDatabaseFoldersAndFiles(writer, child); - writer.Indent--; - writer.WriteLine("End"); - } - } - foreach (string file in Directory.GetFiles(folder, "*.sql")) - { - writer.WriteLine("Script = \"{0}\"", Path.GetFileName(file)); - } - } - - private void CleanProject(ProjectNode project) - { - kernel.Log.Write("...Cleaning project: {0}", project.Name); - - ToolInfo toolInfo = tools[project.Language]; - string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension); - string userFile = projectFile + ".user"; - - Helper.DeleteIfExists(projectFile); - Helper.DeleteIfExists(userFile); - } - - private void CleanSolution(SolutionNode solution) - { - kernel.Log.Write("Cleaning {0} solution and project files", VersionName, solution.Name); - - string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln"); - string suoFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "suo"); - - Helper.DeleteIfExists(slnFile); - Helper.DeleteIfExists(suoFile); - - foreach (ProjectNode project in solution.Projects) - { - CleanProject(project); - } - - kernel.Log.Write(""); - } - - #endregion - - #region ITarget Members - - /// - /// Writes the specified kern. - /// - /// The kern. - public virtual void Write(Kernel kern) - { - if (kern == null) - { - throw new ArgumentNullException("kern"); - } - kernel = kern; - foreach (SolutionNode sol in kernel.Solutions) - { - WriteSolution(sol, true); - } - kernel = null; - } - - /// - /// Cleans the specified kern. - /// - /// The kern. - public virtual void Clean(Kernel kern) - { - if (kern == null) - { - throw new ArgumentNullException("kern"); - } - kernel = kern; - foreach (SolutionNode sol in kernel.Solutions) - { - CleanSolution(sol); - } - kernel = null; - } - - #endregion - } + { + kernel.Log.Write("Creating {0} solution and project files", VersionName); + + foreach (SolutionNode child in solution.Solutions) + { + kernel.Log.Write("...Creating folder: {0}", child.Name); + WriteSolution(child, false); + } + + foreach (ProjectNode project in solution.Projects) + { + kernel.Log.Write("...Creating project: {0}", project.Name); + WriteProject(solution, project); + } + + foreach (DatabaseProjectNode project in solution.DatabaseProjects) + { + kernel.Log.Write("...Creating database project: {0}", project.Name); + WriteDatabaseProject(solution, project); + } + + if (writeSolutionToDisk) // only write main solution + { + kernel.Log.Write(""); + string solutionFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln"); + + using (StreamWriter ss = new StreamWriter(solutionFile)) + { + kernel.CurrentWorkingDirectory.Push(); + Helper.SetCurrentDir(Path.GetDirectoryName(solutionFile)); + + ss.WriteLine("Microsoft Visual Studio Solution File, Format Version {0}", SolutionVersion); + ss.WriteLine(SolutionTag); + + WriteProjectDeclarations(ss, solution, solution); + + ss.WriteLine("Global"); + + ss.WriteLine("\tGlobalSection(SolutionConfigurationPlatforms) = preSolution"); + foreach (ConfigurationNode conf in solution.Configurations) + { + ss.WriteLine("\t\t{0} = {0}", conf.NameAndPlatform); + } + ss.WriteLine("\tEndGlobalSection"); + + ss.WriteLine("\tGlobalSection(ProjectConfigurationPlatforms) = postSolution"); + WriteConfigurationLines(solution.Configurations, solution, ss); + ss.WriteLine("\tEndGlobalSection"); + + if (solution.Solutions.Count > 0) + { + ss.WriteLine("\tGlobalSection(NestedProjects) = preSolution"); + foreach (SolutionNode embeddedSolution in solution.Solutions) + { + WriteNestedProjectMap(ss, embeddedSolution); + } + ss.WriteLine("\tEndGlobalSection"); + } + + ss.WriteLine("EndGlobal"); + } + + kernel.CurrentWorkingDirectory.Pop(); + } + } + + private void WriteProjectDeclarations(TextWriter writer, SolutionNode actualSolution, SolutionNode embeddedSolution) + { + foreach (SolutionNode childSolution in embeddedSolution.Solutions) + { + WriteEmbeddedSolution(writer, childSolution); + WriteProjectDeclarations(writer, actualSolution, childSolution); + } + + foreach (ProjectNode project in embeddedSolution.Projects) + { + WriteProject(actualSolution, writer, project); + } + + foreach (DatabaseProjectNode dbProject in embeddedSolution.DatabaseProjects) + { + WriteProject(actualSolution, writer, dbProject); + } + + if (actualSolution.Guid == embeddedSolution.Guid) + { + WriteSolutionFiles(actualSolution, writer); + } + } + + private static void WriteNestedProjectMap(TextWriter writer, SolutionNode embeddedSolution) + { + foreach (ProjectNode project in embeddedSolution.Projects) + { + WriteNestedProject(writer, embeddedSolution, project.Guid); + } + + foreach (DatabaseProjectNode dbProject in embeddedSolution.DatabaseProjects) + { + WriteNestedProject(writer, embeddedSolution, dbProject.Guid); + } + + foreach (SolutionNode child in embeddedSolution.Solutions) + { + WriteNestedProject(writer, embeddedSolution, child.Guid); + WriteNestedProjectMap(writer, child); + } + } + + private static void WriteNestedProject(TextWriter writer, SolutionNode solution, Guid projectGuid) + { + WriteNestedFolder(writer, solution.Guid, projectGuid); + } + + private static void WriteNestedFolder(TextWriter writer, Guid parentGuid, Guid childGuid) + { + writer.WriteLine("\t\t{0} = {1}", + childGuid.ToString("B").ToUpper(), + parentGuid.ToString("B").ToUpper()); + } + + private static void WriteConfigurationLines(IEnumerable configurations, SolutionNode solution, TextWriter ss) + { + foreach (ProjectNode project in solution.Projects) + { + foreach (ConfigurationNode conf in configurations) + { + ss.WriteLine("\t\t{0}.{1}.ActiveCfg = {1}", + project.Guid.ToString("B").ToUpper(), + conf.NameAndPlatform); + + ss.WriteLine("\t\t{0}.{1}.Build.0 = {1}", + project.Guid.ToString("B").ToUpper(), + conf.NameAndPlatform); + } + } + + foreach (SolutionNode child in solution.Solutions) + { + WriteConfigurationLines(configurations, child, ss); + } + } + + private void WriteSolutionFiles(SolutionNode solution, TextWriter ss) + { + if (solution.Files != null && solution.Files.Count > 0) + WriteProject(ss, "Folder", solution.Guid, "Solution Files", "Solution Files", solution.Files); + } + + private void WriteEmbeddedSolution(TextWriter writer, SolutionNode embeddedSolution) + { + WriteProject(writer, "Folder", embeddedSolution.Guid, embeddedSolution.Name, embeddedSolution.Name, embeddedSolution.Files); + } + + private void WriteProject(SolutionNode solution, TextWriter ss, ProjectNode project) + { + WriteProject(ss, solution, project.Language, project.Guid, project.Name, project.FullPath); + } + + private void WriteProject(SolutionNode solution, TextWriter ss, DatabaseProjectNode dbProject) + { + if (solution.Files != null && solution.Files.Count > 0) + WriteProject(ss, solution, "Database", dbProject.Guid, dbProject.Name, dbProject.FullPath); + } + + const string ProjectDeclarationBeginFormat = "Project(\"{0}\") = \"{1}\", \"{2}\", \"{3}\""; + const string ProjectDeclarationEndFormat = "EndProject"; + + private void WriteProject(TextWriter ss, SolutionNode solution, string language, Guid guid, string name, string projectFullPath) + { + if (!tools.ContainsKey(language)) + throw new UnknownLanguageException("Unknown .NET language: " + language); + + ToolInfo toolInfo = tools[language]; + + string path = Helper.MakePathRelativeTo(solution.FullPath, projectFullPath); + + path = Helper.MakeFilePath(path, name, toolInfo.FileExtension); + + WriteProject(ss, language, guid, name, path); + } + + private void WriteProject(TextWriter writer, string language, Guid projectGuid, string name, string location) + { + WriteProject(writer, language, projectGuid, name, location, null); + } + + private void WriteProject(TextWriter writer, string language, Guid projectGuid, string name, string location, FilesNode files) + { + if (!tools.ContainsKey(language)) + throw new UnknownLanguageException("Unknown .NET language: " + language); + + ToolInfo toolInfo = tools[language]; + + writer.WriteLine(ProjectDeclarationBeginFormat, + toolInfo.Guid, + name, + location, + projectGuid.ToString("B").ToUpper()); + + if (files != null) + { + writer.WriteLine("\tProjectSection(SolutionItems) = preProject"); + + foreach (string file in files) + writer.WriteLine("\t\t{0} = {0}", file); + + writer.WriteLine("\tEndProjectSection"); + } + + writer.WriteLine(ProjectDeclarationEndFormat); + } + + private void WriteDatabaseProject(SolutionNode solution, DatabaseProjectNode project) + { + string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, "dbp"); + IndentedTextWriter ps = new IndentedTextWriter(new StreamWriter(projectFile), " "); + + kernel.CurrentWorkingDirectory.Push(); + + Helper.SetCurrentDir(Path.GetDirectoryName(projectFile)); + + using (ps) + { + ps.WriteLine("# Microsoft Developer Studio Project File - Database Project"); + ps.WriteLine("Begin DataProject = \"{0}\"", project.Name); + ps.Indent++; + ps.WriteLine("MSDTVersion = \"80\""); + // TODO: Use the project.Files property + if (ContainsSqlFiles(Path.GetDirectoryName(projectFile))) + WriteDatabaseFoldersAndFiles(ps, Path.GetDirectoryName(projectFile)); + + ps.WriteLine("Begin DBRefFolder = \"Database References\""); + ps.Indent++; + foreach (DatabaseReferenceNode reference in project.References) + { + ps.WriteLine("Begin DBRefNode = \"{0}\"", reference.Name); + ps.Indent++; + ps.WriteLine("ConnectStr = \"{0}\"", reference.ConnectionString); + ps.WriteLine("Provider = \"{0}\"", reference.ProviderId.ToString("B").ToUpper()); + //ps.WriteLine("Colorizer = 5"); + ps.Indent--; + ps.WriteLine("End"); + } + ps.Indent--; + ps.WriteLine("End"); + ps.Indent--; + ps.WriteLine("End"); + + ps.Flush(); + } + + kernel.CurrentWorkingDirectory.Pop(); + } + + private static bool ContainsSqlFiles(string folder) + { + if (Directory.GetFiles(folder, "*.sql").Length > 0) + return true; // if the folder contains 1 .sql file, that's good enough + + foreach (string child in Directory.GetDirectories(folder)) + { + if (ContainsSqlFiles(child)) + return true; // if 1 child folder contains a .sql file, still good enough + } + + return false; + } + + private static void WriteDatabaseFoldersAndFiles(IndentedTextWriter writer, string folder) + { + foreach (string child in Directory.GetDirectories(folder)) + { + if (ContainsSqlFiles(child)) + { + writer.WriteLine("Begin Folder = \"{0}\"", Path.GetFileName(child)); + writer.Indent++; + WriteDatabaseFoldersAndFiles(writer, child); + writer.Indent--; + writer.WriteLine("End"); + } + } + foreach (string file in Directory.GetFiles(folder, "*.sql")) + { + writer.WriteLine("Script = \"{0}\"", Path.GetFileName(file)); + } + } + + private void CleanProject(ProjectNode project) + { + kernel.Log.Write("...Cleaning project: {0}", project.Name); + + ToolInfo toolInfo = tools[project.Language]; + string projectFile = Helper.MakeFilePath(project.FullPath, project.Name, toolInfo.FileExtension); + string userFile = projectFile + ".user"; + + Helper.DeleteIfExists(projectFile); + Helper.DeleteIfExists(userFile); + } + + private void CleanSolution(SolutionNode solution) + { + kernel.Log.Write("Cleaning {0} solution and project files", VersionName, solution.Name); + + string slnFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "sln"); + string suoFile = Helper.MakeFilePath(solution.FullPath, solution.Name, "suo"); + + Helper.DeleteIfExists(slnFile); + Helper.DeleteIfExists(suoFile); + + foreach (ProjectNode project in solution.Projects) + { + CleanProject(project); + } + + kernel.Log.Write(""); + } + + #endregion + + #region ITarget Members + + /// + /// Writes the specified kern. + /// + /// The kern. + public virtual void Write(Kernel kern) + { + if (kern == null) + { + throw new ArgumentNullException("kern"); + } + kernel = kern; + foreach (SolutionNode sol in kernel.Solutions) + { + WriteSolution(sol, true); + } + kernel = null; + } + + /// + /// Cleans the specified kern. + /// + /// The kern. + public virtual void Clean(Kernel kern) + { + if (kern == null) + { + throw new ArgumentNullException("kern"); + } + kernel = kern; + foreach (SolutionNode sol in kernel.Solutions) + { + CleanSolution(sol); + } + kernel = null; + } + + #endregion + } } diff --git a/Prebuild/src/Core/Targets/VSVersion.cs b/Prebuild/src/Core/Targets/VSVersion.cs index 52ad2ad374..0958cce693 100644 --- a/Prebuild/src/Core/Targets/VSVersion.cs +++ b/Prebuild/src/Core/Targets/VSVersion.cs @@ -25,44 +25,44 @@ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY O namespace Prebuild.Core.Targets { - /// - /// - /// - public enum VSVersion - { - /// - /// Visual Studio 2002 - /// - VS70, - /// - /// Visual Studio 2003 - /// - VS71, - /// - /// Visual Studio 2005 - /// - VS80, - /// - /// Visual Studio 2008 - /// - VS90, - /// - /// Visual Studio 2010 - /// - VS10, - /// - /// Visual Studio 2012 - /// - VS11, - /// - /// Visual Studio 2013 - /// - VS12, - /// - /// Visual Studio 2015 - /// - VS15, - VS17, - VS19 - } + /// + /// + /// + public enum VSVersion + { + /// + /// Visual Studio 2002 + /// + VS70, + /// + /// Visual Studio 2003 + /// + VS71, + /// + /// Visual Studio 2005 + /// + VS80, + /// + /// Visual Studio 2008 + /// + VS90, + /// + /// Visual Studio 2010 + /// + VS10, + /// + /// Visual Studio 2012 + /// + VS11, + /// + /// Visual Studio 2013 + /// + VS12, + /// + /// Visual Studio 2015 + /// + VS15, + VS17, + VS19 + } } diff --git a/Prebuild/src/Core/UnknownLanguageException.cs b/Prebuild/src/Core/UnknownLanguageException.cs index 607b66c022..3cdb61cf9f 100644 --- a/Prebuild/src/Core/UnknownLanguageException.cs +++ b/Prebuild/src/Core/UnknownLanguageException.cs @@ -20,44 +20,44 @@ using System; using System.Runtime.Serialization; -namespace Prebuild.Core +namespace Prebuild.Core { - /// - /// - [Serializable()] - public class UnknownLanguageException : Exception - { - /// - /// Basic exception. - /// - public UnknownLanguageException() - { - } + /// + /// + [Serializable()] + public class UnknownLanguageException : Exception + { + /// + /// Basic exception. + /// + public UnknownLanguageException() + { + } - /// - /// Exception with specified string - /// - /// Exception message - public UnknownLanguageException(string message): base(message) - { - } + /// + /// Exception with specified string + /// + /// Exception message + public UnknownLanguageException(string message) : base(message) + { + } - /// - /// - /// - /// - /// - public UnknownLanguageException(string message, Exception exception) : base(message, exception) - { - } + /// + /// + /// + /// + /// + public UnknownLanguageException(string message, Exception exception) : base(message, exception) + { + } - /// - /// - /// - /// - /// - protected UnknownLanguageException(SerializationInfo info, StreamingContext context) : base( info, context ) - { - } - } + /// + /// + /// + /// + /// + protected UnknownLanguageException(SerializationInfo info, StreamingContext context) : base(info, context) + { + } + } } diff --git a/Prebuild/src/Core/Utilities/CommandLineCollection.cs b/Prebuild/src/Core/Utilities/CommandLineCollection.cs index 786fa1e49d..29f57a5620 100644 --- a/Prebuild/src/Core/Utilities/CommandLineCollection.cs +++ b/Prebuild/src/Core/Utilities/CommandLineCollection.cs @@ -27,126 +27,126 @@ using System.Collections; using System.Collections.Generic; namespace Prebuild.Core.Utilities -{ - /// - /// The CommandLine class parses and interprets the command-line arguments passed to - /// prebuild. - /// - public class CommandLineCollection : IEnumerable> - { - #region Fields +{ + /// + /// The CommandLine class parses and interprets the command-line arguments passed to + /// prebuild. + /// + public class CommandLineCollection : IEnumerable> + { + #region Fields - // The raw OS arguments - private readonly string[] m_RawArgs; + // The raw OS arguments + private readonly string[] m_RawArgs; - // Command-line argument storage - private readonly Dictionary m_Arguments = new Dictionary(); - - #endregion - - #region Constructors - - /// - /// Create a new CommandLine instance and set some internal variables. - /// - public CommandLineCollection(string[] args) - { - m_RawArgs = args; - - Parse(); - } + // Command-line argument storage + private readonly Dictionary m_Arguments = new Dictionary(); - #endregion + #endregion - #region Private Methods + #region Constructors - private void Parse() - { - if(m_RawArgs.Length < 1) - return; + /// + /// Create a new CommandLine instance and set some internal variables. + /// + public CommandLineCollection(string[] args) + { + m_RawArgs = args; - int idx = 0; + Parse(); + } + + #endregion + + #region Private Methods + + private void Parse() + { + if (m_RawArgs.Length < 1) + return; + + int idx = 0; string lastArg = null; - while(idx 2 && arg[0] == '/') - { - arg = arg.Substring(1); - lastArg = arg; - m_Arguments[arg] = ""; - } - else - { - if(lastArg != null) - { - m_Arguments[lastArg] = arg; - lastArg = null; - } - } + if (arg.Length > 2 && arg[0] == '/') + { + arg = arg.Substring(1); + lastArg = arg; + m_Arguments[arg] = ""; + } + else + { + if (lastArg != null) + { + m_Arguments[lastArg] = arg; + lastArg = null; + } + } - idx++; - } - } + idx++; + } + } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Wases the passed. - /// - /// The arg. - /// - public bool WasPassed(string arg) - { - return (m_Arguments.ContainsKey(arg)); - } + /// + /// Wases the passed. + /// + /// The arg. + /// + public bool WasPassed(string arg) + { + return (m_Arguments.ContainsKey(arg)); + } - #endregion + #endregion - #region Properties + #region Properties - /// - /// Gets the parameter associated with the command line option - /// - /// Returns null if option was not specified, - /// null string if no parameter was specified, and the value if a parameter was specified - public string this[string index] - { - get - { - if(m_Arguments.ContainsKey(index)) - { - return (m_Arguments[index]); - } - return null; - } - } + /// + /// Gets the parameter associated with the command line option + /// + /// Returns null if option was not specified, + /// null string if no parameter was specified, and the value if a parameter was specified + public string this[string index] + { + get + { + if (m_Arguments.ContainsKey(index)) + { + return (m_Arguments[index]); + } + return null; + } + } - #endregion + #endregion - #region IEnumerable Members + #region IEnumerable Members - /// - /// Returns an enumerator that can iterate through a collection. - /// - /// - /// An - /// that can be used to iterate through the collection. - /// + /// + /// Returns an enumerator that can iterate through a collection. + /// + /// + /// An + /// that can be used to iterate through the collection. + /// public IEnumerator> GetEnumerator() - { - return m_Arguments.GetEnumerator(); - } + { + return m_Arguments.GetEnumerator(); + } - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Utilities/CurrentDirectory.cs b/Prebuild/src/Core/Utilities/CurrentDirectory.cs index 9624c35ed5..2d2574f0cf 100644 --- a/Prebuild/src/Core/Utilities/CurrentDirectory.cs +++ b/Prebuild/src/Core/Utilities/CurrentDirectory.cs @@ -28,41 +28,41 @@ using System.Collections.Generic; namespace Prebuild.Core.Utilities { - /// - /// - /// - public class CurrentDirectory - { - #region Fields + /// + /// + /// + public class CurrentDirectory + { + #region Fields - private readonly Stack m_Stack = new Stack(); + private readonly Stack m_Stack = new Stack(); - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Pushes this instance. - /// - public void Push() - { - m_Stack.Push(Environment.CurrentDirectory); - } + /// + /// Pushes this instance. + /// + public void Push() + { + m_Stack.Push(Environment.CurrentDirectory); + } - /// - /// Pops this instance. - /// - public void Pop() - { - if(m_Stack.Count < 1) - { - return; - } - - string cwd = m_Stack.Pop(); - Helper.SetCurrentDir(cwd); - } + /// + /// Pops this instance. + /// + public void Pop() + { + if (m_Stack.Count < 1) + { + return; + } - #endregion - } + string cwd = m_Stack.Pop(); + Helper.SetCurrentDir(cwd); + } + + #endregion + } } diff --git a/Prebuild/src/Core/Utilities/Helper.cs b/Prebuild/src/Core/Utilities/Helper.cs index 85333407c1..6e5a3fa5a0 100644 --- a/Prebuild/src/Core/Utilities/Helper.cs +++ b/Prebuild/src/Core/Utilities/Helper.cs @@ -35,541 +35,543 @@ using Prebuild.Core.Nodes; namespace Prebuild.Core.Utilities { - /// - /// - /// - public class Helper - { - #region Fields + /// + /// + /// + public class Helper + { + #region Fields - static bool checkForOSVariables; + static bool checkForOSVariables; - /// - /// - /// - public static bool CheckForOSVariables - { - get - { - return checkForOSVariables; - } - set - { - checkForOSVariables = value; - } - } + /// + /// + /// + public static bool CheckForOSVariables + { + get + { + return checkForOSVariables; + } + set + { + checkForOSVariables = value; + } + } - #endregion - - #region Public Methods + #endregion - #region String Parsing + #region Public Methods - public delegate string StringLookup(string key); + #region String Parsing - /// - /// Gets a collection of StringLocationPair objects that represent the matches - /// - /// The target. - /// The before group. - /// The after group. - /// if set to true [include delimiters in substrings]. - /// - public static StringCollection FindGroups(string target, string beforeGroup, string afterGroup, bool includeDelimitersInSubstrings) - { - if( beforeGroup == null ) - { - throw new ArgumentNullException("beforeGroup"); - } - if( afterGroup == null ) - { - throw new ArgumentNullException("afterGroup"); - } - StringCollection results = new StringCollection(); - if(target == null || target.Length == 0) - { - return results; - } + public delegate string StringLookup(string key); - int beforeMod = 0; - int afterMod = 0; - if(includeDelimitersInSubstrings) - { - //be sure to not exlude the delims - beforeMod = beforeGroup.Length; - afterMod = afterGroup.Length; - } - int startIndex = 0; - while((startIndex = target.IndexOf(beforeGroup,startIndex)) != -1) { - int endIndex = target.IndexOf(afterGroup,startIndex);//the index of the char after it - if(endIndex == -1) - { - break; - } - int length = endIndex - startIndex - beforeGroup.Length;//move to the first char in the string - string substring = target.Substring(startIndex + beforeGroup.Length - beforeMod, - length - afterMod); + /// + /// Gets a collection of StringLocationPair objects that represent the matches + /// + /// The target. + /// The before group. + /// The after group. + /// if set to true [include delimiters in substrings]. + /// + public static StringCollection FindGroups(string target, string beforeGroup, string afterGroup, bool includeDelimitersInSubstrings) + { + if (beforeGroup == null) + { + throw new ArgumentNullException("beforeGroup"); + } + if (afterGroup == null) + { + throw new ArgumentNullException("afterGroup"); + } + StringCollection results = new StringCollection(); + if (target == null || target.Length == 0) + { + return results; + } - results.Add(substring); - //results.Add(new StringLocationPair(substring,startIndex)); - startIndex = endIndex + 1; - //the Interpolate*() methods will not work if expressions are expandded inside expression due to an optimization - //so start after endIndex - - } - return results; - } + int beforeMod = 0; + int afterMod = 0; + if (includeDelimitersInSubstrings) + { + //be sure to not exlude the delims + beforeMod = beforeGroup.Length; + afterMod = afterGroup.Length; + } + int startIndex = 0; + while ((startIndex = target.IndexOf(beforeGroup, startIndex)) != -1) + { + int endIndex = target.IndexOf(afterGroup, startIndex);//the index of the char after it + if (endIndex == -1) + { + break; + } + int length = endIndex - startIndex - beforeGroup.Length;//move to the first char in the string + string substring = target.Substring(startIndex + beforeGroup.Length - beforeMod, + length - afterMod); - /// - /// Replaces the groups. - /// - /// The target. - /// The before group. - /// The after group. - /// The lookup. - /// - public static string ReplaceGroups(string target, string beforeGroup, string afterGroup, StringLookup lookup) { - if( target == null ) - { - throw new ArgumentNullException("target"); - } - //int targetLength = target.Length; - StringCollection strings = FindGroups(target,beforeGroup,afterGroup,false); - if( lookup == null ) - { - throw new ArgumentNullException("lookup"); - } - foreach(string substring in strings) - { - target = target.Replace(beforeGroup + substring + afterGroup, lookup(substring) ); - } - return target; - } + results.Add(substring); + //results.Add(new StringLocationPair(substring,startIndex)); + startIndex = endIndex + 1; + //the Interpolate*() methods will not work if expressions are expandded inside expression due to an optimization + //so start after endIndex - /// - /// Replaces ${var} statements in a string with the corresonding values as detirmined by the lookup delegate - /// - /// The target. - /// The lookup. - /// - public static string InterpolateForVariables(string target, StringLookup lookup) - { - return ReplaceGroups(target, "${" , "}" , lookup); - } + } + return results; + } - /// - /// Replaces ${var} statements in a string with the corresonding environment variable with name var - /// - /// - /// - public static string InterpolateForEnvironmentVariables(string target) - { - return InterpolateForVariables(target, new StringLookup(Environment.GetEnvironmentVariable)); - } + /// + /// Replaces the groups. + /// + /// The target. + /// The before group. + /// The after group. + /// The lookup. + /// + public static string ReplaceGroups(string target, string beforeGroup, string afterGroup, StringLookup lookup) + { + if (target == null) + { + throw new ArgumentNullException("target"); + } + //int targetLength = target.Length; + StringCollection strings = FindGroups(target, beforeGroup, afterGroup, false); + if (lookup == null) + { + throw new ArgumentNullException("lookup"); + } + foreach (string substring in strings) + { + target = target.Replace(beforeGroup + substring + afterGroup, lookup(substring)); + } + return target; + } - #endregion + /// + /// Replaces ${var} statements in a string with the corresonding values as detirmined by the lookup delegate + /// + /// The target. + /// The lookup. + /// + public static string InterpolateForVariables(string target, StringLookup lookup) + { + return ReplaceGroups(target, "${", "}", lookup); + } - /// - /// Translates the value. - /// - /// Type of the translate. - /// The translation item. - /// - public static object TranslateValue(Type translateType, string translationItem) - { - if(translationItem == null) - { - return null; - } + /// + /// Replaces ${var} statements in a string with the corresonding environment variable with name var + /// + /// + /// + public static string InterpolateForEnvironmentVariables(string target) + { + return InterpolateForVariables(target, new StringLookup(Environment.GetEnvironmentVariable)); + } - try - { - string lowerVal = translationItem.ToLower(); - if(translateType == typeof(bool)) - { - return (lowerVal == "true" || lowerVal == "1" || lowerVal == "y" || lowerVal == "yes" || lowerVal == "on"); - } - else if(translateType == typeof(int)) - { - return (Int32.Parse(translationItem)); - } - else - { - return translationItem; - } - } - catch(FormatException) - { - return null; - } - } + #endregion - /// - /// Deletes if exists. - /// - /// The file. - /// - public static bool DeleteIfExists(string file) - { - string resFile = null; - try - { - resFile = ResolvePath(file); - } - catch(ArgumentException) - { - return false; - } + /// + /// Translates the value. + /// + /// Type of the translate. + /// The translation item. + /// + public static object TranslateValue(Type translateType, string translationItem) + { + if (translationItem == null) + { + return null; + } - if(!File.Exists(resFile)) - { - return false; - } + try + { + string lowerVal = translationItem.ToLower(); + if (translateType == typeof(bool)) + { + return (lowerVal == "true" || lowerVal == "1" || lowerVal == "y" || lowerVal == "yes" || lowerVal == "on"); + } + else if (translateType == typeof(int)) + { + return (Int32.Parse(translationItem)); + } + else + { + return translationItem; + } + } + catch (FormatException) + { + return null; + } + } - File.Delete(resFile); - return true; - } + /// + /// Deletes if exists. + /// + /// The file. + /// + public static bool DeleteIfExists(string file) + { + string resFile = null; + try + { + resFile = ResolvePath(file); + } + catch (ArgumentException) + { + return false; + } + + if (!File.Exists(resFile)) + { + return false; + } + + File.Delete(resFile); + return true; + } static readonly char seperator = Path.DirectorySeparatorChar; - // This little gem was taken from the NeL source, thanks guys! - /// - /// Makes a relative path - /// - /// Path to start from - /// Path to end at - /// Path that will get from startPath to endPath - public static string MakePathRelativeTo(string startPath, string endPath) - { - string tmp = NormalizePath(startPath, seperator); - string src = NormalizePath(endPath, seperator); - string prefix = ""; + // This little gem was taken from the NeL source, thanks guys! + /// + /// Makes a relative path + /// + /// Path to start from + /// Path to end at + /// Path that will get from startPath to endPath + public static string MakePathRelativeTo(string startPath, string endPath) + { + string tmp = NormalizePath(startPath, seperator); + string src = NormalizePath(endPath, seperator); + string prefix = ""; - while(true) - { - if((String.Compare(tmp, 0, src, 0, tmp.Length) == 0)) - { - string ret; - int size = tmp.Length; - if(size == src.Length) - { - return "./"; - } - if((src.Length > tmp.Length) && src[tmp.Length - 1] != seperator) - { - } - else - { - ret = prefix + endPath.Substring(size, endPath.Length - size); - ret = ret.Trim(); - if(ret[0] == seperator) - { - ret = "." + ret; - } + while (true) + { + if ((String.Compare(tmp, 0, src, 0, tmp.Length) == 0)) + { + string ret; + int size = tmp.Length; + if (size == src.Length) + { + return "./"; + } + if ((src.Length > tmp.Length) && src[tmp.Length - 1] != seperator) + { + } + else + { + ret = prefix + endPath.Substring(size, endPath.Length - size); + ret = ret.Trim(); + if (ret[0] == seperator) + { + ret = "." + ret; + } - return NormalizePath(ret); - } - - } + return NormalizePath(ret); + } - if(tmp.Length < 2) - { - break; - } + } + + if (tmp.Length < 2) + { + break; + } int lastPos = tmp.LastIndexOf(seperator, tmp.Length - 2); int prevPos = tmp.IndexOf(seperator); - if((lastPos == prevPos) || (lastPos == -1)) - { - break; - } + if ((lastPos == prevPos) || (lastPos == -1)) + { + break; + } - tmp = tmp.Substring(0, lastPos + 1); - prefix += ".." + seperator.ToString(); - } + tmp = tmp.Substring(0, lastPos + 1); + prefix += ".." + seperator.ToString(); + } - return endPath; - } + return endPath; + } - /// - /// Resolves the path. - /// - /// The path. - /// - public static string ResolvePath(string path) - { - string tmpPath = NormalizePath(path); - if(tmpPath.Length < 1) - { - tmpPath = "."; - } - - tmpPath = Path.GetFullPath(tmpPath); - if(!File.Exists(tmpPath) && !Directory.Exists(tmpPath)) - { - throw new ArgumentException("Path could not be resolved: " + tmpPath); - } + /// + /// Resolves the path. + /// + /// The path. + /// + public static string ResolvePath(string path) + { + string tmpPath = NormalizePath(path); + if (tmpPath.Length < 1) + { + tmpPath = "."; + } - return tmpPath; - } + tmpPath = Path.GetFullPath(tmpPath); + if (!File.Exists(tmpPath) && !Directory.Exists(tmpPath)) + { + throw new ArgumentException("Path could not be resolved: " + tmpPath); + } - /// - /// Normalizes the path. - /// - /// The path. - /// The separator character. - /// - public static string NormalizePath(string path, char separatorCharacter) - { - if(path == null || path == "" || path.Length < 1) - { - return ""; - } + return tmpPath; + } - string tmpPath = path.Replace('\\', '/'); - tmpPath = tmpPath.Replace('/', separatorCharacter); - return tmpPath; - } + /// + /// Normalizes the path. + /// + /// The path. + /// The separator character. + /// + public static string NormalizePath(string path, char separatorCharacter) + { + if (path == null || path == "" || path.Length < 1) + { + return ""; + } - /// - /// Normalizes the path. - /// - /// The path. - /// - public static string NormalizePath(string path) - { - return NormalizePath(path, Path.DirectorySeparatorChar); - } - - /// - /// Ends the path. - /// - /// The path. - /// The separator character. - /// - public static string EndPath(string path, char separatorCharacter) - { - if(path == null || path == "" || path.Length < 1) - { - return ""; - } + string tmpPath = path.Replace('\\', '/'); + tmpPath = tmpPath.Replace('/', separatorCharacter); + return tmpPath; + } - if(!path.EndsWith(separatorCharacter.ToString())) - { - return (path + separatorCharacter); - } + /// + /// Normalizes the path. + /// + /// The path. + /// + public static string NormalizePath(string path) + { + return NormalizePath(path, Path.DirectorySeparatorChar); + } - return path; - } + /// + /// Ends the path. + /// + /// The path. + /// The separator character. + /// + public static string EndPath(string path, char separatorCharacter) + { + if (path == null || path == "" || path.Length < 1) + { + return ""; + } - /// - /// Ends the path. - /// - /// The path. - /// - public static string EndPath(string path) - { - return EndPath(path, Path.DirectorySeparatorChar); - } + if (!path.EndsWith(separatorCharacter.ToString())) + { + return (path + separatorCharacter); + } - /// - /// Makes the file path. - /// - /// The path. - /// The name. - /// The ext. - /// - public static string MakeFilePath(string path, string name, string ext) - { - string ret = EndPath(NormalizePath(path)); - - if( name == null ) - { - throw new ArgumentNullException("name"); - } + return path; + } + + /// + /// Ends the path. + /// + /// The path. + /// + public static string EndPath(string path) + { + return EndPath(path, Path.DirectorySeparatorChar); + } + + /// + /// Makes the file path. + /// + /// The path. + /// The name. + /// The ext. + /// + public static string MakeFilePath(string path, string name, string ext) + { + string ret = EndPath(NormalizePath(path)); + + if (name == null) + { + throw new ArgumentNullException("name"); + } + + ret += name; + if (!name.EndsWith("." + ext)) + { + ret += "." + ext; + } - ret += name; - if(!name.EndsWith("." + ext)) - { - ret += "." + ext; - } - //foreach(char c in Path.GetInvalidPathChars()) //{ // ret = ret.Replace(c, '_'); //} - return ret; - } + return ret; + } - /// - /// Makes the file path. - /// - /// The path. - /// The name. - /// - public static string MakeFilePath(string path, string name) - { - string ret = EndPath(NormalizePath(path)); - - if( name == null ) - { - throw new ArgumentNullException("name"); - } + /// + /// Makes the file path. + /// + /// The path. + /// The name. + /// + public static string MakeFilePath(string path, string name) + { + string ret = EndPath(NormalizePath(path)); - ret += name; + if (name == null) + { + throw new ArgumentNullException("name"); + } + + ret += name; //foreach (char c in Path.GetInvalidPathChars()) //{ // ret = ret.Replace(c, '_'); //} - return ret; - } + return ret; + } - /// - /// - /// - /// - /// - public static string MakeReferencePath(string path) - { - string ret = EndPath(NormalizePath(path)); + /// + /// + /// + /// + /// + public static string MakeReferencePath(string path) + { + string ret = EndPath(NormalizePath(path)); //foreach (char c in Path.GetInvalidPathChars()) //{ // ret = ret.Replace(c, '_'); //} - return ret; - } + return ret; + } - /// - /// Sets the current dir. - /// - /// The path. - public static void SetCurrentDir(string path) - { - if( path == null ) - { - throw new ArgumentNullException("path"); - } - if(path.Length < 1) - { - return; - } + /// + /// Sets the current dir. + /// + /// The path. + public static void SetCurrentDir(string path) + { + if (path == null) + { + throw new ArgumentNullException("path"); + } + if (path.Length < 1) + { + return; + } - Environment.CurrentDirectory = path; - } + Environment.CurrentDirectory = path; + } - /// - /// Checks the type. - /// - /// The type to check. - /// The attr. - /// The inter. - /// - public static object CheckType(Type typeToCheck, Type attr, Type inter) - { - if(typeToCheck == null || attr == null) - { - return null; - } + /// + /// Checks the type. + /// + /// The type to check. + /// The attr. + /// The inter. + /// + public static object CheckType(Type typeToCheck, Type attr, Type inter) + { + if (typeToCheck == null || attr == null) + { + return null; + } - object[] attrs = typeToCheck.GetCustomAttributes(attr, false); - if(attrs == null || attrs.Length < 1) - { - return null; - } - if( inter == null ) - { - throw new ArgumentNullException("inter"); - } + object[] attrs = typeToCheck.GetCustomAttributes(attr, false); + if (attrs == null || attrs.Length < 1) + { + return null; + } + if (inter == null) + { + throw new ArgumentNullException("inter"); + } - if(typeToCheck.GetInterface(inter.FullName) == null) - { - return null; - } + if (typeToCheck.GetInterface(inter.FullName) == null) + { + return null; + } - return attrs[0]; - } + return attrs[0]; + } - /// - /// Attributes the value. - /// - /// The node. - /// The attr. - /// The def. - /// - public static string AttributeValue(XmlNode node, string attr, string def) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } - if(node.Attributes[attr] == null) - { - return def; - } - string val = node.Attributes[attr].Value; - if(!CheckForOSVariables) - { - return val; - } + /// + /// Attributes the value. + /// + /// The node. + /// The attr. + /// The def. + /// + public static string AttributeValue(XmlNode node, string attr, string def) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } + if (node.Attributes[attr] == null) + { + return def; + } + string val = node.Attributes[attr].Value; + if (!CheckForOSVariables) + { + return val; + } - return InterpolateForEnvironmentVariables(val); - } + return InterpolateForEnvironmentVariables(val); + } - /// - /// Parses the boolean. - /// - /// The node. - /// The attr. - /// if set to true [default value]. - /// - public static bool ParseBoolean(XmlNode node, string attr, bool defaultValue) - { - if( node == null ) - { - throw new ArgumentNullException("node"); - } - if(node.Attributes[attr] == null) - { - return defaultValue; - } - return bool.Parse(node.Attributes[attr].Value); - } + /// + /// Parses the boolean. + /// + /// The node. + /// The attr. + /// if set to true [default value]. + /// + public static bool ParseBoolean(XmlNode node, string attr, bool defaultValue) + { + if (node == null) + { + throw new ArgumentNullException("node"); + } + if (node.Attributes[attr] == null) + { + return defaultValue; + } + return bool.Parse(node.Attributes[attr].Value); + } - /// - /// Enums the attribute value. - /// - /// The node. - /// The attr. - /// Type of the enum. - /// The def. - /// - public static object EnumAttributeValue(XmlNode node, string attr, Type enumType, object def) - { - if( def == null ) - { - throw new ArgumentNullException("def"); - } - string val = AttributeValue(node, attr, def.ToString()); - return Enum.Parse(enumType, val, true); - } + /// + /// Enums the attribute value. + /// + /// The node. + /// The attr. + /// Type of the enum. + /// The def. + /// + public static object EnumAttributeValue(XmlNode node, string attr, Type enumType, object def) + { + if (def == null) + { + throw new ArgumentNullException("def"); + } + string val = AttributeValue(node, attr, def.ToString()); + return Enum.Parse(enumType, val, true); + } - /// - /// - /// - /// - /// - /// - public static string AssemblyFullName(string assemblyName, ProjectType projectType) - { - return assemblyName + (projectType == ProjectType.Library ? ".dll" : ".exe"); - } + /// + /// + /// + /// + /// + /// + public static string AssemblyFullName(string assemblyName, ProjectType projectType) + { + return assemblyName + (projectType == ProjectType.Library ? ".dll" : ".exe"); + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Core/Utilities/Log.cs b/Prebuild/src/Core/Utilities/Log.cs index 4df3defdd0..ee83ba4b11 100644 --- a/Prebuild/src/Core/Utilities/Log.cs +++ b/Prebuild/src/Core/Utilities/Log.cs @@ -28,74 +28,74 @@ using System.IO; namespace Prebuild.Core.Utilities { - /// - /// - /// - public enum LogType - { - /// - /// - /// - None, - /// - /// - /// - Info, - /// - /// - /// - Warning, - /// - /// - /// - Error - } + /// + /// + /// + public enum LogType + { + /// + /// + /// + None, + /// + /// + /// + Info, + /// + /// + /// + Warning, + /// + /// + /// + Error + } - /// - /// - /// - [Flags] - public enum LogTargets - { - /// - /// - /// - None = 0, - /// - /// - /// - Null = 1, - /// - /// - /// - File = 2, - /// - /// - /// - Console = 4 - } + /// + /// + /// + [Flags] + public enum LogTargets + { + /// + /// + /// + None = 0, + /// + /// + /// + Null = 1, + /// + /// + /// + File = 2, + /// + /// + /// + Console = 4 + } - /// - /// Summary description for Log. - /// - public class Log : IDisposable - { - #region Fields + /// + /// Summary description for Log. + /// + public class Log : IDisposable + { + #region Fields - private TextWriter m_Writer; - private LogTargets m_Target = LogTargets.Null; - bool disposed; + private TextWriter m_Writer; + private LogTargets m_Target = LogTargets.Null; + bool disposed; - #endregion + #endregion - #region Constructors + #region Constructors - /// - /// Initializes a new instance of the class. - /// - /// The target. - /// Name of the file. - public Log(LogTargets target, string fileName) + /// + /// Initializes a new instance of the class. + /// + /// The target. + /// Name of the file. + public Log(LogTargets target, string fileName) { m_Target = target; @@ -111,166 +111,166 @@ namespace Prebuild.Core.Utilities } } - #endregion + #endregion - #region Public Methods + #region Public Methods - /// - /// Writes this instance. - /// - public void Write() - { - Write(string.Empty); - } + /// + /// Writes this instance. + /// + public void Write() + { + Write(string.Empty); + } - /// - /// Writes the specified MSG. - /// - /// The MSG. - public void Write(string msg) - { - if((m_Target & LogTargets.Null) != 0) - { - return; - } + /// + /// Writes the specified MSG. + /// + /// The MSG. + public void Write(string msg) + { + if ((m_Target & LogTargets.Null) != 0) + { + return; + } - if((m_Target & LogTargets.Console) != 0) - { - Console.WriteLine(msg); - } - if((m_Target & LogTargets.File) != 0 && m_Writer != null) - { - m_Writer.WriteLine(msg); - } - } + if ((m_Target & LogTargets.Console) != 0) + { + Console.WriteLine(msg); + } + if ((m_Target & LogTargets.File) != 0 && m_Writer != null) + { + m_Writer.WriteLine(msg); + } + } - /// - /// Writes the specified format. - /// - /// The format. - /// The args. - public void Write(string format, params object[] args) - { - Write(string.Format(format,args)); - } + /// + /// Writes the specified format. + /// + /// The format. + /// The args. + public void Write(string format, params object[] args) + { + Write(string.Format(format, args)); + } - /// - /// Writes the specified type. - /// - /// The type. - /// The format. - /// The args. - public void Write(LogType type, string format, params object[] args) - { - if((m_Target & LogTargets.Null) != 0) - { - return; - } + /// + /// Writes the specified type. + /// + /// The type. + /// The format. + /// The args. + public void Write(LogType type, string format, params object[] args) + { + if ((m_Target & LogTargets.Null) != 0) + { + return; + } - string str = ""; - switch(type) - { - case LogType.Info: - str = "[I] "; - break; - case LogType.Warning: - str = "[!] "; - break; - case LogType.Error: - str = "[X] "; - break; - } + string str = ""; + switch (type) + { + case LogType.Info: + str = "[I] "; + break; + case LogType.Warning: + str = "[!] "; + break; + case LogType.Error: + str = "[X] "; + break; + } - Write(str + format,args); - } + Write(str + format, args); + } - /// - /// Writes the exception. - /// - /// The type. - /// The ex. - public void WriteException(LogType type, Exception ex) - { - if(ex != null) - { - Write(type, ex.Message); - //#if DEBUG - m_Writer.WriteLine("Exception @{0} stack trace [[", ex.TargetSite.Name); - m_Writer.WriteLine(ex.StackTrace); - m_Writer.WriteLine("]]"); - //#endif - } - } + /// + /// Writes the exception. + /// + /// The type. + /// The ex. + public void WriteException(LogType type, Exception ex) + { + if (ex != null) + { + Write(type, ex.Message); + //#if DEBUG + m_Writer.WriteLine("Exception @{0} stack trace [[", ex.TargetSite.Name); + m_Writer.WriteLine(ex.StackTrace); + m_Writer.WriteLine("]]"); + //#endif + } + } - /// - /// Flushes this instance. - /// - public void Flush() - { - if(m_Writer != null) - { - m_Writer.Flush(); - } - } + /// + /// Flushes this instance. + /// + public void Flush() + { + if (m_Writer != null) + { + m_Writer.Flush(); + } + } - #endregion + #endregion - #region IDisposable Members + #region IDisposable Members - /// - /// Performs application-defined tasks associated with freeing, releasing, or - /// resetting unmanaged resources. - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } + /// + /// Performs application-defined tasks associated with freeing, releasing, or + /// resetting unmanaged resources. + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } - /// - /// Dispose objects - /// - /// - /// If true, it will dispose close the handle - /// - /// - /// Will dispose managed and unmanaged resources. - /// - protected virtual void Dispose(bool disposing) - { - if (!this.disposed) - { - if (disposing) - { - if (m_Writer != null) - { - m_Writer.Close(); - m_Writer = null; - } - } - } - this.disposed = true; - } + /// + /// Dispose objects + /// + /// + /// If true, it will dispose close the handle + /// + /// + /// Will dispose managed and unmanaged resources. + /// + protected virtual void Dispose(bool disposing) + { + if (!this.disposed) + { + if (disposing) + { + if (m_Writer != null) + { + m_Writer.Close(); + m_Writer = null; + } + } + } + this.disposed = true; + } - /// - /// - /// - ~Log() - { - this.Dispose(false); - } - - /// - /// Closes and destroys this object - /// - /// - /// Same as Dispose(true) - /// - public void Close() - { - Dispose(); - } + /// + /// + /// + ~Log() + { + this.Dispose(false); + } - #endregion - } + /// + /// Closes and destroys this object + /// + /// + /// Same as Dispose(true) + /// + public void Close() + { + Dispose(); + } + + #endregion + } } diff --git a/Prebuild/src/Core/WarningException.cs b/Prebuild/src/Core/WarningException.cs index b7c3668cce..30095f871e 100644 --- a/Prebuild/src/Core/WarningException.cs +++ b/Prebuild/src/Core/WarningException.cs @@ -28,57 +28,57 @@ using System.Runtime.Serialization; namespace Prebuild.Core { - /// - /// - /// - [Serializable] - public class WarningException : Exception - { - #region Constructors + /// + /// + /// + [Serializable] + public class WarningException : Exception + { + #region Constructors - /// - /// - /// - public WarningException() - { - } + /// + /// + /// + public WarningException() + { + } - /// - /// - /// - /// - /// - public WarningException(string format, params object[] args) - : base(String.Format(format, args)) - { - } + /// + /// + /// + /// + /// + public WarningException(string format, params object[] args) + : base(String.Format(format, args)) + { + } - /// - /// Exception with specified string - /// - /// Exception message - public WarningException(string message): base(message) - { - } + /// + /// Exception with specified string + /// + /// Exception message + public WarningException(string message) : base(message) + { + } - /// - /// - /// - /// - /// - public WarningException(string message, Exception exception) : base(message, exception) - { - } + /// + /// + /// + /// + /// + public WarningException(string message, Exception exception) : base(message, exception) + { + } - /// - /// - /// - /// - /// - protected WarningException(SerializationInfo info, StreamingContext context) : base( info, context ) - { - } + /// + /// + /// + /// + /// + protected WarningException(SerializationInfo info, StreamingContext context) : base(info, context) + { + } - #endregion - } + #endregion + } } diff --git a/Prebuild/src/Prebuild.cs b/Prebuild/src/Prebuild.cs index 35a5dfaf44..6374e36b9e 100644 --- a/Prebuild/src/Prebuild.cs +++ b/Prebuild/src/Prebuild.cs @@ -42,50 +42,50 @@ using System.EnterpriseServices.Internal; using Prebuild.Core; using Prebuild.Core.Utilities; -namespace Prebuild +namespace Prebuild { - /// - /// - /// - class Prebuild - { - #region Main + /// + /// + /// + class Prebuild + { + #region Main - [STAThread] - static void Main(string[] args) - { - Kernel kernel = null; - try - { - kernel = Kernel.Instance; - kernel.Initialize(LogTargets.File | LogTargets.Console, args); - bool exit = false; + [STAThread] + static void Main(string[] args) + { + Kernel kernel = null; + try + { + kernel = Kernel.Instance; + kernel.Initialize(LogTargets.File | LogTargets.Console, args); + bool exit = false; - if(kernel.CommandLine.WasPassed("usage")) - { - exit = true; - OutputUsage(); - } - if(kernel.CommandLine.WasPassed("showtargets")) - { - exit = true; - OutputTargets(kernel); - } - if(kernel.CommandLine.WasPassed("install")) - { - exit = true; - InstallAssembly(kernel); - } - if(kernel.CommandLine.WasPassed("remove")) - { - exit = true; - RemoveAssembly(kernel); - } + if (kernel.CommandLine.WasPassed("usage")) + { + exit = true; + OutputUsage(); + } + if (kernel.CommandLine.WasPassed("showtargets")) + { + exit = true; + OutputTargets(kernel); + } + if (kernel.CommandLine.WasPassed("install")) + { + exit = true; + InstallAssembly(kernel); + } + if (kernel.CommandLine.WasPassed("remove")) + { + exit = true; + RemoveAssembly(kernel); + } - if(!exit) - { - kernel.Process(); - } + if (!exit) + { + kernel.Process(); + } } #if !DEBUG catch (Exception ex) @@ -96,70 +96,70 @@ namespace Prebuild #endif finally { - if(kernel != null && kernel.PauseAfterFinish) - { - Console.WriteLine("\nPress enter to continue..."); - Console.ReadLine(); - } - } - } + if (kernel != null && kernel.PauseAfterFinish) + { + Console.WriteLine("\nPress enter to continue..."); + Console.ReadLine(); + } + } + } - #endregion + #endregion - #region Private Methods + #region Private Methods - private static void InstallAssembly(Kernel kernel) - { - Publish publish = new Publish(); - string file = kernel.CommandLine["install"]; + private static void InstallAssembly(Kernel kernel) + { + Publish publish = new Publish(); + string file = kernel.CommandLine["install"]; //Console.WriteLine(".."+file+".."); - publish.GacInstall(file); - } + publish.GacInstall(file); + } - private static void RemoveAssembly(Kernel kernel) - { - Publish publish = new Publish(); - string file = kernel.CommandLine["remove"]; - publish.GacRemove(file); - } + private static void RemoveAssembly(Kernel kernel) + { + Publish publish = new Publish(); + string file = kernel.CommandLine["remove"]; + publish.GacRemove(file); + } - private static void OutputUsage() - { - Console.WriteLine("Usage: prebuild /target [options]"); - Console.WriteLine("Available command-line switches:"); - Console.WriteLine(); - Console.WriteLine("/target Target for Prebuild"); - Console.WriteLine("/clean Clean the build files for the given target"); - Console.WriteLine("/file XML file to process"); - Console.WriteLine("/log Log file to write to"); - Console.WriteLine("/ppo Pre-process the file, but perform no other processing"); - Console.WriteLine("/pause Pauses the application after execution to view the output"); - Console.WriteLine("/yes Default to yes to any questions asked"); - Console.WriteLine("/install Install assembly into the GAC"); - Console.WriteLine("/remove Remove assembly from the GAC"); - Console.WriteLine(); - Console.WriteLine("See 'prebuild /showtargets for a list of available targets"); - Console.WriteLine("See readme.txt or check out http://dnpb.sourceforge.net for more information"); - Console.WriteLine(); - } + private static void OutputUsage() + { + Console.WriteLine("Usage: prebuild /target [options]"); + Console.WriteLine("Available command-line switches:"); + Console.WriteLine(); + Console.WriteLine("/target Target for Prebuild"); + Console.WriteLine("/clean Clean the build files for the given target"); + Console.WriteLine("/file XML file to process"); + Console.WriteLine("/log Log file to write to"); + Console.WriteLine("/ppo Pre-process the file, but perform no other processing"); + Console.WriteLine("/pause Pauses the application after execution to view the output"); + Console.WriteLine("/yes Default to yes to any questions asked"); + Console.WriteLine("/install Install assembly into the GAC"); + Console.WriteLine("/remove Remove assembly from the GAC"); + Console.WriteLine(); + Console.WriteLine("See 'prebuild /showtargets for a list of available targets"); + Console.WriteLine("See readme.txt or check out http://dnpb.sourceforge.net for more information"); + Console.WriteLine(); + } - private static void OutputTargets(Kernel kern) - { - Console.WriteLine("Targets available in Prebuild:"); - Console.WriteLine(""); - if(kern.Targets.Keys.Count > 0) - { - string[] targs = new string[kern.Targets.Keys.Count]; - kern.Targets.Keys.CopyTo(targs, 0); - Array.Sort(targs); - foreach(string target in targs) - { - Console.WriteLine(target); - } - } - Console.WriteLine(""); - } - - #endregion - } + private static void OutputTargets(Kernel kern) + { + Console.WriteLine("Targets available in Prebuild:"); + Console.WriteLine(""); + if (kern.Targets.Keys.Count > 0) + { + string[] targs = new string[kern.Targets.Keys.Count]; + kern.Targets.Keys.CopyTo(targs, 0); + Array.Sort(targs); + foreach (string target in targs) + { + Console.WriteLine(target); + } + } + Console.WriteLine(""); + } + + #endregion + } }