+2009-05-12 Ankit Jain <jankit@novell.com>
+
+ * Project.cs (.ctor): Init timeOfLastDirty.
+
+2009-05-05 Miguel de Icaza <miguel@novell.com>
+
+ * Contribution from Martin Brenn to fix #498154.
+
+2009-04-27 Ankit Jain <jankit@novell.com>
+
+ Fix bug #497839.
+ * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
+ one passed as argument.
+
+2009-04-27 Ankit Jain <jankit@novell.com>
+
+ * TaskEngine.cs (Prepare): Emit a useful error message property value
+ can't be converted to required type.
+
+2009-04-27 Ankit Jain <jankit@novell.com>
+
+ * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
+ as valid true values for bool, and corresponding for false.
+
+2009-03-27 Jonathan Chambers <joncham@gmail.com>
+
+ * BuildWhen.cs: Add basic implementation.
+ * BuildChoose.cs: Add basic implementation.
+ * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
+ EvaluatedItemsIgnoringCondition.
+ * GroupingCollection.cs: Add evaluation of BuildChoose items.
+
+2009-03-26 Jonathan Chambers <joncham@gmail.com>
+
+ * TaskDatabase.cs (RegisterTask): Search for class by name
+ if task was not found using GetType (which uses namespace).
+
+2009-02-26 Ankit Jain <jankit@novell.com>
+
+ * Target.cs: Handle target with no tasks. Log errors.
+
+2009-02-24 Ankit Jain <jankit@novell.com>
+
+ Lazily load UsingTask tasks.
+ * UsingTask.cs (Evaluate): Register 'this' with task database,
+ but don't load it yet. Register only if condition evaluates to true.
+ Move the load logic to ..
+ (Load): .. here. Register with the specified task database.
+ * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
+ in a table keyed by task name, but don't load it yet.
+ (GetTypeFromClassName): Try to load UsingTask if task is not already
+ loaded. Move loading logic to ..
+ (GetTypeFromClassNameInternal): .. here.
+ (CopyTasks): Copy the usingTasks table also.
+
+2009-02-23 Ankit Jain <jankit@novell.com>
+
+ * BuildItem.cs (AddMetadata): Allow overwriting older values.
+
+2009-02-22 Ankit Jain <jankit@novell.com>
+
+ * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
+ instead of XmlElement. Eg. XmlComment
+
+2009-02-21 Ankit Jain <jankit@novell.com>
+
+ * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
+ * Project.cs (Load): Use FromMSBuildPath on the path.
+ (InitializeProperties): Set "MSBuildToolsPath" also.
+
+2009-02-20 Ankit Jain <jankit@novell.com>
+
+ Fix #449683.
+ * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
+ transforms) in conditions.
+ * ConditionParser.cs: Parse unquoted item, property references.
+ eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
+ * Token.cs (Token.ToString): Override.
+ (TokenType.Transform): Uncomment.
+
+2009-02-12 Jonathan Chambers <joncham@gmail.com>
+
+ * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
+ no XmlElement.InnerText. This allows properties to be additional
+ xml elements.
+
+2009-02-01 Ankit Jain <jankit@novell.com>
+
+ * BuildEngine.cs (BuildProjectFile): Use
+ BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
+ * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
+ built. Move logging of project start/finish to ..
+ * Project.cs: .. here. Build a target only if hasn't been built already.
+ Keep track of target outputs, and return those even if an already built
+ target has been invoked again.
+ Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
+
+2009-01-31 Ankit Jain <jankit@novell.com>
+
+ * BatchingImpl.cs: Split into ..
+ * BatchingImplBase.cs: .. this,
+ * TaskBatchingImpl.cs: .. this ..
+ * TargetBatchingImpl.cs: .. and this. Implement target batching here.
+
+ * Target.cs (DoBuild): Use TargetBatchingImpl for building.
+ (Log*): Move to TargetBatchingImpl .
+ (BuildTasks): New.
+ (Engine): New.
+
+2009-01-30 Ankit Jain <jankit@novell.com>
+
+ * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
+ arrays.
+
+2009-01-29 Ankit Jain <jankit@novell.com>
+
+ * BuildItem.cs (child_items): Change type from BuildItemGroup to
+ List<BuildItem>.
+ (HasParent): Rename to ..
+ (HasParentItem): .. this.
+ (ParentItemGroup): Add setter.
+
+ * BuildItemGroup.cs (.ctor): Add overload with @project param.
+ (AddNewItem):
+ (AddItem): Correctly set the ParentItemGroup for new build items.
+ (ParentProject): Add setter.
+ * Project.cs: Set the project for new BuildItemGroup instances.
+ * TaskEngine.cs (PublishItemGroup): Likewise.
+
+2009-01-06 Ankit Jain <jankit@novell.com>
+
+ * Project.cs (Build): Honor InitialTargets list.
+
+2009-01-06 Ankit Jain <jankit@novell.com>
+
+ * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
+ the property type also.
+ * MSBuild.cs (Execute): Parse 'Properties' task param to set global
+ properties.
+
+2009-01-06 Ankit Jain <jankit@novell.com>
+
+ * Project.cs (Build): Correctly handle null targetNames argument.
+
+2009-01-06 Ankit Jain <jankit@novell.com>
+
+ * Engine.cs (LogProjectStarted): Add a null check.
+
+2009-01-01 Ankit Jain <jankit@novell.com>
+
+ * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
+ * ChangeType (ToBuildItemGroup): Add 'split' param.
+ Track api changes.
+ * Expression.cs (Parse): Add a new overload with a 'split' param.
+ * ExpressionCollection.cs (Add): Add new overload for IReference,
+ remove the ones for Item/Metadata/PropertyReference.
+ (ConvertToArray): Implement correctly.
+ (ConvertToString): Track api changes.
+ (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
+ (ConvertToITaskItemArray): Implement support for concat'ing expressions.
+ (AddItemsToArray): New.
+ (ConvertToITaskItemArrayFromString): Refactor a bit.
+ (ThrowCantConcatError): New.
+ * ItemReference.cs: Update.
+ * MetadataReference.cs: Update.
+ * PropertyReference.cs (ConvertToITaskItemArray): Implement.
+ (GetValue): New.
+ * BuildPropertyGroup.cs: Track api changes.
+ * TaskEngine.cs (PublishOutput): Improve exception message.
+ * Project.cs (DoLoad): Improve exception message. Add a null check.
+
+2008-12-30 Ankit Jain <jankit@novell.com>
+
+ * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
+ metadata values for unqualified references.
+ (BuildItemGroupToITaskItemArray): Rename to ..
+ (BuildItemGroupToITaskItems): .. this.
+ (HasTaskItem): New.
+
+2008-12-18 Ankit Jain <jankit@novell.com>
+
+ * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
+
+2008-12-17 Ankit Jain <jankit@novell.com>
+
+ * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
+ only one instance of unique metadata value is required.
+
+2008-11-22 Ankit Jain <jankit@novell.com>
+
+ * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
+ MetadataReference.
+ * MetadataReference.cs (ConvertToITaskItemArray): New.
+ * Project.cs (GetAllItemGroups): New.
+
+2008-11-21 Ankit Jain <jankit@novell.com>
+
+ * BatchingImpl.cs: Add task batching implementation.
+ * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
+ * ExpressionCollection.cs (Count): New.
+ (ConvertToString): Handle MetadataReference.
+ * ItemReference.cs (ConvertToString):
+ (ConvertToITaskItemArray): Use the batching api.
+ (ToString): New.
+ * MetadataReference.cs (ConvertToString): New.
+ (ToString): New.
+ * Project.cs: Add api for accessing batched items and metadata.
+ * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
+ item group.
+
+2008-10-01 Ankit Jain <jankit@novell.com>
+
+ * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
+ (BuildProjectFile): If filename is null (project.LoadXml) then use
+ engine.BuildProject
+ * BuildTask.cs (InitializeTask): Track api change.
+ * Expression.cs (Parse): Skip empty entries in the expression.
+
+2008-09-24 Ankit Jain <jankit@novell.com>
+
+ * Engine.cs: Add argument checks.
+ * Project.cs: Likewise.
+
+2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * Project.cs (Build): Add outputs to targetOutputs.
+
+2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * ExpressionCollection.cs (ConvertToArray): Simplify.
+
+2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
+ simplified. It still needs tests and refactoring.
+
+2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildEngine.cs (BuildProjectFile): Don't crash on null
+ globalProperties.
+
+ * Target.cs: Add Outputs property.
+
+2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * Target.cs (Build): Split to GetDependencies () and BuildDependencies
+ (). Support condition.
+
+ * BatchingImpl.cs (BatchBuildTask): Simplify.
+
+2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
+ Simplified.
+
+ * ConditionFunctionExpression.cs: Removed warnings.
+
+ * BuildTask.cs (Execute): Write exceptions to std err (they should be
+ logged but it's better than swallowing).
+
+2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * ConditionTokenizer.cs: Add Putback ().
+
+ * ConditionParser.cs: Add parsing of functions.
+
+ * ConditionFunctionExpression.cs: Add.
+
+2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildPropertyGroup (SetProperty): Throw an exception when trying to
+ set property in persisted property group.
+
+2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildTask.cs (Execute): Log errors that happen when invoking ITask
+ .ctor.
+
+ * ConsoleLogger.cs (TargetFinishedHandler)
+ (TaskFinishedHandler): Increment error count.
+
+2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildItem.cs (RemoveMetadata): Remove from XML.
+ (SetMetadata): Trigger project reevaluation.
+
+2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
+ properties.
+
+2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
+ TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
+ BatchingImpl.cs, BuildProperty.cs: Track API changes.
+
+ * Expression.cs (Parse): Added allowItems parameter and made regexes
+ static.
+
+ * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
+ will try to import a.ext when given a.EXT.
+
+2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildItemGroup.cs: Store information saying what is the last item
+ group that contains build item name.
+
+ * Project.cs (Build): Pass empty array (build default targets).
+
+2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * Token.cs: Commented Transform and LiteralSubExpression and added
+ FunctionName token.
+
+ * ConditionParser.cs: Removed redundant casts, rewrote
+ ParseFactorExpression () and added parsing of '!'.
+
+ * ConditionTokenizer.cs: Always skip whitespaces when getting next
+ token (no IgnoreWhiteSpace property). Don't create a token from '->'.
+ Moved ReadChar () in front of all ifs.
+
+2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
+ from XML. (not to escape items that have parents twice).
+
+2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
+ (Project): Renamed to ParentProject.
+
+ * BuildItem.cs (ctor)
+ (CopyCustomMetadata): Add null check.
+
+ * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
+ (RemoveProperty): Added null check.
+
+ * TargetCollection.cs (RemoveTarget): Added null check.
+
+ * Engine.cs (UnloadProject): Added null check.
+
+ * GroupingCollection.cs (Remove): Check if removed group belongs to
+ current project.
+
+ * Project.cs (AddNewItem): Implemented.
+ (RemoveItem): Reorganized.
+ (SetProjectExtensions): Added null check.
+
+2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildItemGroup.cs (Detach): Added.
+ (RemoveItem)
+ (RemoveItemAt): Used Detach ().
+
+ * BuildItem.cs: Made FromXml and HasParent internal and added
+ ParentItem and ParentItemGroup properties (internal).
+ (Detach): Added.
+
+ * GroupingCollection.cs (Remove): Used Detach ().
+
+ * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
+ text on Save ().
+ (GetEvaluatedItemsByNameIgnoringCondition)
+ (GetEvaluatedItemsByName)
+ (GetEvaluatedProperty): Reevaluate if needed.
+ (RemoveItem)
+ (RemoveAllItemGroups)
+ (RemoveAllPropertyGroups): Implemented.
+ (DoLoad): Added closing of TextReader.
+
+2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
+ change but just mark that it needs it.
+
+ * Project.cs: Reevaluate when it needs reevaluation and one of
+ Evaluated* properties is used.
+
+2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * Target.cs: Throw an exception when <OnError> is not last element in
+ target.
+
+ * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
+
+ * TargetCollection.cs: If a target is already there replace it with
+ new target.
+
+ * BuildProperty.cs: Added XmlElement property.
+
+2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * ImportCollection.cs: Don't add imports that are already added.
+
+ * BuildItemGroup.cs: MonoTODOs.
+
+ * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
+ condition can't be evaluated to bool.
+
+ * BuildPropertyGroup.cs (Evaluate): Simplify.
+
+2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildWhen.cs: Moved BindToXml () code to ctor.
+
+ * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
+ property needed for removing groups.
+
+ * Engine.cs: Added StartBuild () that logs build start when Build ()
+ was first called.
+
+ * GroupingCollection.cs: Added Remove () for item and property groups.
+
+ * Project.cs (AddNewImport): Implemented.
+ (AddNewItemGroup): Implemented.
+ (AddNewPropertyGroup): Implemented.
+ (AddNewUsingTaskFromAssemblyFile): Implemented.
+ (AddNewUsingTaskFromAssemblyName): Implemented.
+ (RemoveItemGroup): Implemented.
+ (RemovePropertyGroup): Implemented.
+
+2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
+
+ * BuildItemGroup.cs (Clear): Remove from XML.
+
+ * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
+ to Project.EvaluatedProperties.
+ (Clear): Remove from XML.
+
+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.