+2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
+ reserved property.
+
+2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
+ Add () calls when processing a project from Import and
+ evaluate_iterator for evaluation.
+
+2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
+ and prepend relative directory of importing project to full path of
+ imported project.
+
+2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildWhen.cs, BuildPropertyGroupCollection.cs,
+ BuildItemGroupCollection.cs, Project.cs: Track API changes.
+
+ * GroupingCollection.cs: Now it needs Project reference so added it.
+
+ * BuildTask.cs: Formatting.
+
+ * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
+
+ * ConditionParser.cs (ParseAndEvaluate): Added.
+
+ * BuildItem.cs: Changed exception message.
+
+2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildWhen.cs, BuildPropertyGroupCollection.cs,
+ BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
+ GroupingCollection doesn't need Project reference.
+
+ * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
+
+ * BuildItemGroup.cs: Added new readOnly parameter to ctor.
+ (Project.EvaluatedItems is a read only item group.)
+ (ReplaceWith): Added.
+
+ * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
+ global property group causes reevaluation of its project.
+
+ * Project.cs: ProcessXml () is internal and can be "safely" invoked by
+ other classes.
+
+ * OldExpression.cs: Removed.
+
+ * BuildProperty.cs (Evaluate): Simplified.
+
+ * ChangeType.cs (TemporaryTransform): Simplified.
+
+ * BuildItem.cs: There are now 3 types of build items: from XML, having
+ parent from XML, virtual. Added SplitParentItem ().
+
+2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * Utilities.cs: Added Unescape ().
+
+ * BuildItemGroup.cs, BuildItem.cs: Pass null project to
+ BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
+ groups (at the moment just unescape).
+
+ * Expression.cs (CopyToExpressionList): Unescape strings.
+
+2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * Target.cs (ctor): Added ImportedProject argument and removed
+ set_IsImported.
+ (AddNewTask): Implemented.
+
+ * TargetCollection.cs (AddNewTarget): Implemented.
+
+ * Project.cs: Track API changes.
+
+2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * Target.cs (Build): Don't throw anything in case of error, just
+ return false.
+
+ * BuildItemGroup.cs (set_Condition): Throw an exception if group is
+ not from XML.
+
+ * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
+ SetMetadata ().
+
+ * BuildProperty.cs (ToString): Throw an exception if property is not
+ from XML.
+ (op_Explicit): Added a null check.
+
+ * Engine.cs: Better error message.
+
+ * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
+ IndexOutOfRangeException.
+
+ * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
+ (MarkProjectAsDirty): Set time.
+
+2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildItemGroup.cs (Clone): Throw exception.
+
+ * Project.cs (Load): Throw InvalidProjectFileException if anything
+ goes wrong.
+
+2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
+ and ConvertToITaskItemArray ().
+
+2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
+ classes that were public in Beta 2 and aren't used.
+
+ * Expression.cs: Added replacement for parsing expressions char by
+ char. It uses regexes to find item/property/metadata references in
+ given text.
+
+ * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
+ Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
+ BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
+
+ * ConditionRelationalExpression.cs: Formatting.
+
+ * OldExpression.cs: Commented everything.
+
+ * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
+ parsing to Expression.
+
+ * BuildItem.cs: Check if project is from XML in set_Condition and
+ set_Exclude.
+
+ * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
+ Project.ctor.
+
+ * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
+ can evaluate expression in CanEvaluateToBool ().
+
+2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
+ which item group is imported.
+
+ * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
+
+2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
+ BuildItemGroup> 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * Import.cs: Check for project.FullFileName (Path.DirectoryName would
+ throw an exception).
+ * BuildItemGroupCollection.cs: Changed exception types.
+
+2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
+ (like comments)
+ * BuildItemGroup.cs: Change return to continue.
+
+2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * ConditionParser.cs: Copyright note.
+ * ExpressionCollection.cs: Fixed arrays passing.
+
+2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
+ BuildPropertyGroupCollection.cs: Fixed to match the tests.
+
+2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
+
+ * 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 <marek.sieradzki@gmail.com>
* ImportedProject.cs: Removed warning.