2006-12-11 Marek Sieradzki * BuildWhen.cs, BuildPropertyGroupCollection.cs, BuildItemGroupCollection.cs: Little changes related to GroupingCollection. * ImportCollection.cs: Use GroupingCollection not an internal list. * Import.cs (Evaluate): Split to functions and check if EvaluatedProjectPath is empty. * GroupingCollection.cs, Project.cs: Move evaluation to GroupingCollection. Change algorithm to use 2 passes: first for property groups and imports and second for item groups. 2006-12-11 Marek Sieradzki * TaskEngine.cs, ItemReference.cs: Use IDictionary not IDictionary. * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was evaluated to false because we want to add every item to Project.EvaluatedItemsByNameIgnoringCondition. * Project.cs (Build): Don't throw an exception just return false. (GetEvaluatedProperty): Avoid NullReferenceException. (SetProjectExtensions): Implemented. 2006-12-08 Marek Sieradzki * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed. * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs, BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs, Engine.cs, GroupingCollection.cs, Project.cs: Reformatted. * ImportCollection.cs: Added a note. 2006-12-07 Marek Sieradzki * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty (). * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo (UsingTask[] array, int index) * TaskEngine.cs: Reformatted PublishOutput () and added copying of items to Project.EvaluatedItems in PublishItemGroup (); * BuildItemGroup.cs: Added [MonoTODO]. * UsingTask.cs: Used expression for AssemblyFile to get around problems with '\' and '/'. * BuildItem.cs (ctor): Added null checks. (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata. (SetMetadata): Don't escape evaluatedMetadata and escape unevaluatedMetadata only when treatPropertyValueAsLiteral. * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use FromXml () instead of null checks. (SetProperty): Escape propertyValue when it is literal. * BuildProperty.cs: Changed exception message. * Project.cs: Added XmlNamespaceManager and XmlNamespace internal properties. (GetProjectExtensions): Implemented. 2006-12-05 Marek Sieradzki * BuildTask.cs: Remove [MonoTODO], add exception throwing in GetParameterValue (), use expressions in ContinueOnError. * ConditionFactorException.cs: Throw InvalidProjectFileException () instead of InvalidOperationException (). * ImportCollection.cs: Implement CopyTo (). * Target.cs: Remove redundant variables (XmlAttributes), return String.Empty in DependsOnTargets, add a null check in RemoveTask (). * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO]. * Import.cs: Throw an exception when file does not exist. * Target.cs: Use StringComparer.InvariantCultureIgnoreCase. * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll need to treat item as a token probably 2006-12-04 Marek Sieradzki * Import.cs: Check for project.FullFileName (Path.DirectoryName would throw an exception). * BuildItemGroupCollection.cs: Changed exception types. 2006-10-14 Marek Sieradzki * Engine.cs: Removed redundant cast. * BuildWhen.cs: * UsingTaskCollection.cs: * ImportCollection: * BuildChoose.cs: * BuildItem.cs: * TargetCollection.cs: Comment unused variable. * ConditionTokenizer.cs: Simplified checking if current token is a keyword. * Target.cs: Removed old code. 2006-10-08 Marek Sieradzki * Target.cs: Changed "" to String.Empty. * TaskEngine.cs: Don't try to convert a parameter to specific type if string was evaluated to String.Empty. * InternalLoggerException.cs: * InvalidProjectFileException.cs: Added LinkDemand before GetObjectData (). * ConsoleLogger.cs: Changed "" to String.Empty. * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced with change to generics). * Project.cs: Made Build () throw more meaningful exception. 2006-10-06 Marek Sieradzki * Target.cs: Reformatted. * TaskEngine.cs: Removed redundant code. * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty (). * Engine.cs: Made BuildProjectFile () load project file if it's not loaded yet. 2006-09-21 Marek Sieradzki * ConditionRelationalExpression.cs: Change comparers to case insensitive. * ImportCollection.cs: Add NotImplementedExceptions. * BuildPropertyGroup.cs: Reformatted a bit. * BuildProperty.cs: The same. * Project.cs: Moved evaluation of imports before evaluation of properties. This may "work" until importing projects is redesigned but probably isn't correct. 2006-09-20 Marek Sieradzki * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements (like comments) * BuildItemGroup.cs: Change return to continue. 2006-09-20 Marek Sieradzki * ConditionParser.cs: Copyright note. * ExpressionCollection.cs: Fixed arrays passing. 2006-08-06 Marek Sieradzki * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs, Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs, BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs, TargetCollection.cs, Engine.cs, Project.cs: Started to use generics. 2006-06-25 Marek Sieradzki * Token.cs: Changed names: removed "than". * ConditionRelationalExpression.cs: Added. * ConditionFactorExpression.cs: Added. * BuildItemGroup.cs: Changed Condition property return value to return String.Empty instead of null. * ConditionParser.cs: Added support for parsing relational expressions and factors. * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate () and CanEvaluateToBool (), CanEvaluateToNumber () and CanEvaluateToString (). * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed appropriately to ConditionExpression base class. * ConditionTokenizer.cs: Added null check and changed names in enums: removed "than". * ConditionNotExpression.cs: Added. * BatchingImpl.cs: Changed to use BoolEvaluate (). * Project.cs: Added checks for condition. 2006-06-22 Marek Sieradzki * ConditionalTokenizer.cs, ConditionalExpression.cs, ConditionalParser.cs: Changed name, removed -al. * ConditionExpression.cs: Added Evaluate (). * ConditionOrExpression.cs, ConditionAndExpression.cs: Added. * BatchingImpl.cs: Added check if task should be executed. 2006-06-14 Marek Sieradzki * UsingTask.cs: Changed properties to return null on empty attribute. * UsingTaskCollection.cs: Added object to SyncRoot. * BuildPropertyGroup.cs: Added NotImplementedException throwing. 2006-06-02 Marek Sieradzki * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs: Fixed to match the tests. 2006-05-27 Marek Sieradzki * Utilities.cs: Implemented Escape (). * BuildItem.cs: Added null checks. * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property. * Project.cs: Commented out redundant Evaluate (). * BuildChoose.cs: Minor changes. 2006-05-22 Marek Sieradzki * Token: Added new few missing tokens. * Target.cs, Project.cs: Patch from Matthew Metnesky. * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs, ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs, ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs, LiteralTokenizer.cs: Removed literal expression parsing based on tokenizer and parser. It needs to be done by regex. Moved tokenizer to ConditionalTokenizer.cs. 2006-05-05 Marek Sieradzki * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs, ItemReference.cs, PropertyReference.cs: Changed name of *Reference methods converting reference to string from ToString () to ConvertToString () to avoid mistakes like using ToString () provided by default. 2006-05-03 Marek Sieradzki * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs, Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs, PropertyReference.cs, BuildProperty.cs: Changed Expression to OldExpression and changed To* functions to one ConvertTo (). * TaskEngine.cs: Fixed PublishOutput (). * OldExpression.cs: Added. It will be temporarily used before LiteralExpression will be written using Tokenizer. * Tokenizer.cs, Token.cs, ExpressionCollection.cs, ExpressionParseException.cs, LiteralExpression.cs: Added. 2006-04-24 Marek Sieradzki * ImportedProject.cs: Removed warning. * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of default tasks. 2006-04-24 Marek Sieradzki * Project.cs: Removed unnecessary variable. * Engine.cs: Added fixme. 2006-04-14 Marek Sieradzki * BuildItem.cs: Moved checking if metadata name is reserved to internal class (Mono.XBuild.Utilities.ReservedNameUtils). 2006-04-14 Marek Sieradzki * BuildTask.cs: Removed unnecessary variable. * Engine.cs: Added logging of the build start. * Project.cs: Removed unnecessary variable. 2006-04-07 Marek Sieradzki * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed. 2006-03-29 Marek Sieradzki * BuildItem.cs, BuildItemGroup.cs: Coding style fixes. 2006-03-29 Crestez Leonard * BuildItem.cs: Fix typo? 2006-03-29 Marek Sieradzki * InternalLoggerException.cs, InvalidProjectFileException.cs, Engine.cs, Project.cs: Coding style fixes. 2006-03-29 Crestez Leonard * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items. 2006-03-29 Crestez Leonard * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed to pass tests. Wrote serialization constructor. * Engine.cs, Project.cs: Global engine and project unloading, test and formatting fixes. 2006-03-28 Marek Sieradzki * UsingTask.cs: Formatting changes. 2006-03-27 Crestez Leonard * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched to lists instead of hashtables. * Import.cs: Cleaned up, moved importing from Project.cs * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes. * Engine.cs: Cleaned up properties. * Project.cs: Moved importing to Import.cs, cleaned up properties, Separated evaluation and loading. 2006-03-21 Crestez Leonard * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs, BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml binding and evaluation, merge xml binding in constructors. * DirectoryScanner.cs: Includes CAN be empty. * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF. * ConsoleLogger.cs: Fix compilation warning. 2006-03-19 Marek Sieradzki * BuildPropertyGroup.cs, Expression.cs: Coding style fixed. 2006-03-18 Marek Sieradzki * Engine.cs: API cleanup. 2006-03-18 Crestez Leonard * Project.cs: Cleaned up add. * Expression.cs: Hacked to transform \ and / to path separators. * BuildPropertyGroup.cs: Small cleanup. * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project reference. 2006-03-11 Marek Sieradzki * BatchingImpl.cs: Updated with BuildTask instead of TaskElement. * BuildItem.cs: Updated for new API and fixed crashing on non-existent files. * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs, BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs, Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new API. * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items. * TaskElement.cs: Temporarily removed. * Xml.cs: Changed to static. 2006-02-26 Marek Sieradzki * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs, IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs, ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs, IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs, ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs, IBuildPropertyGroupCollection.cs: Removed. 2006-02-26 Marek Sieradzki * BuildItem.cs: Removed IBuildItem references. * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and IBuildItemGroup references. Changed Evaluate to internal. * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection reference and hidden constructors. * BuildProperty.cs: Removed IBuildProperty reference. * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and IBuildPropertyGroup references. Changed Evaluate to internal. * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection reference and hidden constructors. * ConsoleLogger.cs: Updated names of event handlers. * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and Escape. Added UnloadAllProjects () and UnloadProject (). * FileLogger.cs: Removed ApplyParameter (). * GroupingCollection.cs: Hidden. * InvalidProjectFileException.cs: Removed HasBeenLogged property. * ItemPropertyGroupingBase.cs: Commented. * ProcessingPass.cs: Hidden. * Project.cs: Removed IProject reference. Changed CurrentEncoding to Encoding. * Target.cs: Removed ITarget reference. * TargetCollection.cs: Removed ITargetCollection reference. * TaskElement.cs: Removed ITaskElement reference. * TaskEngineAssemblyResolver.cs: Hidden. * Utilities.cs: Made static class, removed CheckPath (), ValidateCulture (), GetSupportedCultures () and added Escape (). 2006-02-24 Marek Sieradzki * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new API. 2005-09-22 Marek Sieradzki * Project.cs: Added MonoTODO attributes. * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs, ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs, IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs, BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs, SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs, BuildItemGroup.cs, InvalidProjectFileException.cs, BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs, Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs, PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs, ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs, IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs, IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs, ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs, ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs, IBuildItemGroup.cs, BuildProperty.cs, Engine.cs, IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs, BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs, ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0. 2005-09-21 Marek Sieradzki * TaskDatabase.cs: Change Shared to Framework. * BuildPropertyGroup.cs, Project.cs: Remove obsoleted CaseInsensitiveHashCodeProvider 2005-09-11 Marek Sieradzki * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName. * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved property. 2005-09-09 Marek Sieradzki * InternalLoggerException.cs: Changed protected fields to private. 2005-09-03 Marek Sieradzki * Engine.cs: Added check for globalProperties. * Project.cs: Added using path from importedProject.FullFileName when adding UsingTask elements. 2005-09-01 Marek Sieradzki * TaskElement.cs: Changed ReflectedType to PropertyType. * ChangeType.cs (TransformToString): Changed to pass proper Type to TemporaryTransform. 2005-09-01 Marek Sieradzki * BuildPropertyGroup.cs: Added check for PropertyType when adding a new property. * BuildProperty.cs: Organized PropertyType enum. * Engine.cs: Added setting CommandLine PropertyType of global properties. 2005-08-31 Marek Sieradzki * InvalidProjectFileException.cs: Changed Message property. * ChangeType.cs (TransformToString): Added separator between items. * TaskEngineAssemblyResolver.cs: Formatting. 2005-08-31 Marek Sieradzki * DirectoryScanner.cs: Added. * BuildItem.cs: Moved file scanning code to DirectoryScanner. * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression. * Project.cs: Removed Evalute* (). 2005-08-30 Marek Sieradzki * Target.cs: Formatting. * Expression.cs: Added check if array == null. * BuildItem.cs: Removed 'break' to remove warnings. * ConsoleLogger.cs: Formatting. * Engine.cs: Added handling of default target(s). * Project.cs: Added handling of default target(s). 2005-08-29 Marek Sieradzki * TaskElement.cs: Added check for parameters. * Target.cs: Added logging of target skipping. * Expression.cs: Changed returning object[] to string[], bool[]... in ToArray (). * ItemReference.cs: Fixed for item references without custom separators. * BatchingImpl.cs: Added real inputs/outputs checking. * Engine.cs: Moved global properties setting. * Project.cs: Moved global properties setting. 2005-08-27 Marek Sieradzki * Target.cs: Added checks for target existence. * BuildItemGroup.cs: Changed to use transforms. * MetadataReference.cs: Wrote real implementation. * ItemReference.cs: Rewritten to use transforms. * BuildItem.cs: Changes for transforms and metadata. * ConsoleLogger.cs: Added verbosity checking and fixed error/warning formatting. * Project.cs: Fixed project importing. * ImportedProject.cs: Changed to throw exceptions instead of returning bool. 2005-08-24 Marek Sieradzki * Engine.cs: Removed FIXME. * Project.cs: Splitted ProcessElements and added project importing. * ImportedProject.cs: Rewritten. 2005-08-20 Marek Sieradzki * TaskElement.cs: Added getting of objects of every type. * BuildItemGroup.cs: Added ToITaskItemArray (). * Expression.cs: Implemented part that is not using metadata. * ItemReference.cs: Implemented parsing item references. Need to fix validity checking. * BuildItem.cs: Fixed ToITaskItem (). * PropertyReference.cs: Implemented parsing property references. This also needs validity checking. 2005-08-19 Marek Sieradzki * TaskElement.cs: Added Output element handling. * Target.cs: Cleaned up. * BuildItemGroup.cs: Added creating BuildItem from TaskItem. * Expression.cs, MetadataReference.cs, PropertyReference.cs, ItemReference.cs, ChangeType.cs: Added. * BuildItem.cs: Added creating BuildItem from TaskItem. * BuildPropertyGroup.cs: Small changes. * BatchingImpl.cs: Fixed to return real task execution result. * BuildProperty.cs: Fixed FinalValue property. * Engine.cs: Reformatted logging. * Project.cs: Added check to EvaluateProperty. 2005-08-16 Marek Sieradzki * TaskElement.cs: Added part of execution engine. * BuildEngine.cs: Added handling of TaskStarted and TaskFinished. * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement. * EventSource.cs: Added FireTaskStarted and FireTaskFinished. * BuildItem.cs: Added handling of built-in metadata and referencing Items by name not FullName. * BatchingImpl.cs: Added temporary task "batching". * ConsoleLogger.cs: Added temporary workaround to not show sender. * Project.cs: Added Evaluate. It will be moved to separate class. 2005-08-14 Marek Sieradzki * EventSource.cs, Engine.cs: Added CriticalEvents. * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs, Project.cs: Added some support for items. * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up. 2005-08-12 Marek Sieradzki * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading of properties. 2005-08-12 Marek Sieradzki * BatchingImpl.cs: Added. * BuildWhen.cs, BuildEngine.cs, Target.cs, BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs, BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs, TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs, GroupingCollection.cs: Updated. 2005-08-06 Marek Sieradzki * BuildChoose.cs, BuildEngine.cs, BuildItem.cs, BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs, BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs, BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs, EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs, GroupingCollection.cs, HostLogger.cs, ImportedProject.cs, InternalLoggerException.cs, InvalidProjectFileException.cs, ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs, ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs, TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs, TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs: Initial check-in of implementations. 2005-07-16 Marek Sieradzki * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs, IBuildItemGroupCollection.cs, IBuildProperty.cs, IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs, ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs, IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs, IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs: Initial check-in of interfaces and a syntax file, real classes are changing a lot so I'll wait a moment with checking them in.