2009-02-12 Jonathan Chambers <joncham@gmail.com>
[mcs.git] / class / Microsoft.Build.Engine / Microsoft.Build.BuildEngine / ChangeLog
blob2d5839cf13e6d81144c87d3055ed36e4d34d5e17
1 2009-02-12  Jonathan Chambers  <joncham@gmail.com>
3         * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
4         no XmlElement.InnerText. This allows properties to be additional 
5         xml elements.
7 2009-02-01  Ankit Jain  <jankit@novell.com>
9         * BuildEngine.cs (BuildProjectFile): Use
10         BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
11         * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
12         built. Move logging of project start/finish to ..
13         * Project.cs: .. here. Build a target only if hasn't been built already.
14         Keep track of target outputs, and return those even if an already built
15         target has been invoked again.
16         Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
18 2009-01-31  Ankit Jain  <jankit@novell.com>
20         * BatchingImpl.cs: Split into ..
21         * BatchingImplBase.cs: .. this,
22         * TaskBatchingImpl.cs: .. this ..
23         * TargetBatchingImpl.cs: .. and this. Implement target batching here.
25         * Target.cs (DoBuild): Use TargetBatchingImpl for building.
26         (Log*): Move to TargetBatchingImpl .
27         (BuildTasks): New.
28         (Engine): New.
30 2009-01-30  Ankit Jain  <jankit@novell.com>
32         * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
33         arrays.
35 2009-01-29  Ankit Jain  <jankit@novell.com>
37         * BuildItem.cs (child_items): Change type from BuildItemGroup to
38         List<BuildItem>.
39         (HasParent): Rename to ..
40         (HasParentItem): .. this.
41         (ParentItemGroup): Add setter.
43         * BuildItemGroup.cs (.ctor): Add overload with @project param.
44         (AddNewItem):
45         (AddItem): Correctly set the ParentItemGroup for new build items.
46         (ParentProject): Add setter.
47         * Project.cs: Set the project for new BuildItemGroup instances.
48         * TaskEngine.cs (PublishItemGroup): Likewise.
50 2009-01-06  Ankit Jain  <jankit@novell.com>
52         * Project.cs (Build): Honor InitialTargets list.
54 2009-01-06  Ankit Jain  <jankit@novell.com>
56         * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
57         the property type also.
58         * MSBuild.cs (Execute): Parse 'Properties' task param to set global
59         properties.
61 2009-01-06  Ankit Jain  <jankit@novell.com>
63         * Project.cs (Build): Correctly handle null targetNames argument.
65 2009-01-06  Ankit Jain  <jankit@novell.com>
67         * Engine.cs (LogProjectStarted): Add a null check.
69 2009-01-01  Ankit Jain  <jankit@novell.com>
71         * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
72         * ChangeType (ToBuildItemGroup): Add 'split' param.
73         Track api changes.
74         * Expression.cs (Parse): Add a new overload with a 'split' param.
75         * ExpressionCollection.cs (Add): Add new overload for IReference,
76         remove the ones for Item/Metadata/PropertyReference.
77         (ConvertToArray): Implement correctly.
78         (ConvertToString): Track api changes.
79         (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
80         (ConvertToITaskItemArray): Implement support for concat'ing expressions.
81         (AddItemsToArray): New.
82         (ConvertToITaskItemArrayFromString): Refactor a bit.
83         (ThrowCantConcatError): New.
84         * ItemReference.cs: Update.
85         * MetadataReference.cs: Update.
86         * PropertyReference.cs (ConvertToITaskItemArray): Implement.
87         (GetValue): New.
88         * BuildPropertyGroup.cs: Track api changes.
89         * TaskEngine.cs (PublishOutput): Improve exception message.
90         * Project.cs (DoLoad): Improve exception message. Add a null check.
92 2008-12-30  Ankit Jain  <jankit@novell.com>
94         * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
95         metadata values for unqualified references.
96         (BuildItemGroupToITaskItemArray): Rename to ..
97         (BuildItemGroupToITaskItems): .. this.
98         (HasTaskItem): New.
100 2008-12-18  Ankit Jain  <jankit@novell.com>
102         * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
104 2008-12-17  Ankit Jain  <jankit@novell.com>
106         * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
107         only one instance of unique metadata value is required.
109 2008-11-22  Ankit Jain  <jankit@novell.com>
111         * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
112         MetadataReference.
113         * MetadataReference.cs (ConvertToITaskItemArray): New.
114         * Project.cs (GetAllItemGroups): New.
116 2008-11-21  Ankit Jain  <jankit@novell.com>
118         * BatchingImpl.cs: Add task batching implementation.
119         * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
120         * ExpressionCollection.cs (Count): New.
121         (ConvertToString): Handle MetadataReference.
122         * ItemReference.cs (ConvertToString):
123         (ConvertToITaskItemArray): Use the batching api.
124         (ToString): New.
125         * MetadataReference.cs (ConvertToString): New.
126         (ToString): New.
127         * Project.cs: Add api for accessing batched items and metadata.
128         * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
129         item group.
131 2008-10-01  Ankit Jain  <jankit@novell.com>
133         * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
134         (BuildProjectFile): If filename is null (project.LoadXml) then use
135         engine.BuildProject
136         * BuildTask.cs (InitializeTask): Track api change.
137         * Expression.cs (Parse): Skip empty entries in the expression.
139 2008-09-24  Ankit Jain  <jankit@novell.com>
141         * Engine.cs: Add argument checks.
142         * Project.cs: Likewise.
144 2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
146         * Project.cs (Build): Add outputs to targetOutputs.
148 2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
150         * ExpressionCollection.cs (ConvertToArray): Simplify.
152 2007-03-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
154         * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
155         simplified. It still needs tests and refactoring.
157 2007-02-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
159         * BuildEngine.cs (BuildProjectFile): Don't crash on null
160         globalProperties.
162         * Target.cs: Add Outputs property.
164 2007-02-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
166         * Target.cs (Build): Split to GetDependencies () and BuildDependencies
167         (). Support condition.
168         
169         * BatchingImpl.cs (BatchBuildTask): Simplify.
171 2007-02-18  Marek Sieradzki  <marek.sieradzki@gmail.com>
173         * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
174         Simplified.
176         * ConditionFunctionExpression.cs: Removed warnings.
178         * BuildTask.cs (Execute): Write exceptions to std err (they should be
179         logged but it's better than swallowing).
181 2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
183         * ConditionTokenizer.cs: Add Putback ().
185         * ConditionParser.cs: Add parsing of functions.
187         * ConditionFunctionExpression.cs: Add.
189 2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
191         * BuildPropertyGroup (SetProperty): Throw an exception when trying to
192         set property in persisted property group.
194 2007-01-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
196         * BuildTask.cs (Execute): Log errors that happen when invoking ITask
197         .ctor.
199         * ConsoleLogger.cs (TargetFinishedHandler)
200         (TaskFinishedHandler): Increment error count.
202 2007-01-28  Marek Sieradzki  <marek.sieradzki@gmail.com>
204         * BuildItem.cs (RemoveMetadata): Remove from XML.
205         (SetMetadata): Trigger project reevaluation.
207 2007-01-26  Marek Sieradzki  <marek.sieradzki@gmail.com>
209         * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
210         properties.
212 2007-01-23  Marek Sieradzki  <marek.sieradzki@gmail.com>
214         * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
215         TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
216         BatchingImpl.cs, BuildProperty.cs: Track API changes.
218         * Expression.cs (Parse): Added allowItems parameter and made regexes
219         static.
221         * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
222         will try to import a.ext when given a.EXT.
224 2007-01-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
226         * BuildItemGroup.cs: Store information saying what is the last item
227         group that contains build item name.
229         * Project.cs (Build): Pass empty array (build default targets).
231 2007-01-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
233         * Token.cs: Commented Transform and LiteralSubExpression and added
234         FunctionName token.
236         * ConditionParser.cs: Removed redundant casts, rewrote
237         ParseFactorExpression () and added parsing of '!'.
239         * ConditionTokenizer.cs: Always skip whitespaces when getting next
240         token (no IgnoreWhiteSpace property). Don't create a token from '->'.
241         Moved ReadChar () in front of all ifs.
243 2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
245         * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
246         from XML. (not to escape items that have parents twice).
248 2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
250         * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
251         (Project): Renamed to ParentProject.
253         * BuildItem.cs (ctor)
254         (CopyCustomMetadata): Add null check.
256         * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
257         (RemoveProperty): Added null check.
259         * TargetCollection.cs (RemoveTarget): Added null check.
261         * Engine.cs (UnloadProject): Added null check.
263         * GroupingCollection.cs (Remove): Check if removed group belongs to
264         current project.
266         * Project.cs (AddNewItem): Implemented.
267         (RemoveItem): Reorganized.
268         (SetProjectExtensions): Added null check.
270 2007-01-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
272         * BuildItemGroup.cs (Detach): Added.
273         (RemoveItem)
274         (RemoveItemAt): Used Detach ().
276         * BuildItem.cs: Made FromXml and HasParent internal and added
277         ParentItem and ParentItemGroup properties (internal).
278         (Detach): Added.
280         * GroupingCollection.cs (Remove): Used Detach ().
282         * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
283         text on Save ().
284         (GetEvaluatedItemsByNameIgnoringCondition)
285         (GetEvaluatedItemsByName)
286         (GetEvaluatedProperty): Reevaluate if needed.
287         (RemoveItem)
288         (RemoveAllItemGroups)
289         (RemoveAllPropertyGroups): Implemented.
290         (DoLoad): Added closing of TextReader.
292 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
294         * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
295         change but just mark that it needs it.
297         * Project.cs: Reevaluate when it needs reevaluation and one of
298         Evaluated* properties is used.
300 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
302         * Target.cs: Throw an exception when <OnError> is not last element in
303         target.
305         * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
307         * TargetCollection.cs: If a target is already there replace it with
308         new target.
310         * BuildProperty.cs: Added XmlElement property.
312 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
314         * ImportCollection.cs: Don't add imports that are already added.
316         * BuildItemGroup.cs: MonoTODOs.
318         * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
319         condition can't be evaluated to bool.
321         * BuildPropertyGroup.cs (Evaluate): Simplify.
323 2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
325         * BuildWhen.cs: Moved BindToXml () code to ctor.
327         * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
328         property needed for removing groups.
330         * Engine.cs: Added StartBuild () that logs build start when Build ()
331         was first called.
333         * GroupingCollection.cs: Added Remove () for item and property groups.
335         * Project.cs (AddNewImport): Implemented.
336         (AddNewItemGroup): Implemented.
337         (AddNewPropertyGroup): Implemented.
338         (AddNewUsingTaskFromAssemblyFile): Implemented.
339         (AddNewUsingTaskFromAssemblyName): Implemented.
340         (RemoveItemGroup): Implemented.
341         (RemovePropertyGroup): Implemented.
343 2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
345         * BuildItemGroup.cs (Clear): Remove from XML.
347         * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
348         to Project.EvaluatedProperties.
349         (Clear): Remove from XML.
351 2007-01-09  Marek Sieradzki  <marek.sieradzki@gmail.com>
353         * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
354         reserved property.
356 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
358         * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
359         Add () calls when processing a project from Import and
360         evaluate_iterator for evaluation.
362 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
364         * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
365         and prepend relative directory of importing project to full path of
366         imported project.
368 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
370         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
371         BuildItemGroupCollection.cs, Project.cs: Track API changes.
373         * GroupingCollection.cs: Now it needs Project reference so added it.
375         * BuildTask.cs: Formatting.
377         * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
379         * ConditionParser.cs (ParseAndEvaluate): Added.
381         * BuildItem.cs: Changed exception message.
383 2007-01-02  Marek Sieradzki  <marek.sieradzki@gmail.com>
385         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
386         BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
387         GroupingCollection doesn't need Project reference.
389         * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
391         * BuildItemGroup.cs: Added new readOnly parameter to ctor.
392         (Project.EvaluatedItems is a read only item group.)
393         (ReplaceWith): Added.
395         * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
396         global property group causes reevaluation of its project.
398         * Project.cs: ProcessXml () is internal and can be "safely" invoked by
399         other classes.
401         * OldExpression.cs: Removed.
403         * BuildProperty.cs (Evaluate): Simplified.
405         * ChangeType.cs (TemporaryTransform): Simplified.
407         * BuildItem.cs: There are now 3 types of build items: from XML, having
408         parent from XML, virtual. Added SplitParentItem ().
410 2006-12-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
412         * Utilities.cs: Added Unescape ().
414         * BuildItemGroup.cs, BuildItem.cs: Pass null project to
415         BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
416         groups (at the moment just unescape).
418         * Expression.cs (CopyToExpressionList): Unescape strings.
420 2006-12-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
422         * Target.cs (ctor): Added ImportedProject argument and removed
423         set_IsImported.
424         (AddNewTask): Implemented.
426         * TargetCollection.cs (AddNewTarget): Implemented.
428         * Project.cs: Track API changes.
430 2006-12-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
432         * Target.cs (Build): Don't throw anything in case of error, just
433         return false.
435         * BuildItemGroup.cs (set_Condition): Throw an exception if group is
436         not from XML.
438         * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
439         SetMetadata ().
441         * BuildProperty.cs (ToString): Throw an exception if property is not
442         from XML.
443         (op_Explicit): Added a null check.
445         * Engine.cs: Better error message.
447         * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
448         IndexOutOfRangeException.
450         * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
451         (MarkProjectAsDirty): Set time.
453 2006-12-18  Marek Sieradzki  <marek.sieradzki@gmail.com>
455         * BuildItemGroup.cs (Clone): Throw exception.
457         * Project.cs (Load): Throw InvalidProjectFileException if anything
458         goes wrong.
460 2006-12-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
462         * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
463         and ConvertToITaskItemArray ().
465 2006-12-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
467         * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
468         classes that were public in Beta 2 and aren't used.
470         * Expression.cs: Added replacement for parsing expressions char by
471         char. It uses regexes to find item/property/metadata references in
472         given text.
474         * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
475         Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
476         BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
478         * ConditionRelationalExpression.cs: Formatting.
480         * OldExpression.cs: Commented everything.
482         * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
483         parsing to Expression.
485         * BuildItem.cs: Check if project is from XML in set_Condition and
486         set_Exclude.
488         * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
489         Project.ctor.
491         * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
492         can evaluate expression in CanEvaluateToBool ().
494 2006-12-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
496         * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
497         which item group is imported.
499         * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
501 2006-12-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
503         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
504         BuildItemGroupCollection.cs: Little changes related to
505         GroupingCollection.
507         * ImportCollection.cs: Use GroupingCollection not an internal list.
509         * Import.cs (Evaluate): Split to functions and check if
510         EvaluatedProjectPath is empty.
512         * GroupingCollection.cs, Project.cs: Move evaluation to
513         GroupingCollection. Change algorithm to use 2 passes: first for property
514         groups and imports and second for item groups.
516 2006-12-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
518         * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
519         BuildItemGroup> not IDictionary.
521         * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
522         evaluated to false because we want to add every item to
523         Project.EvaluatedItemsByNameIgnoringCondition.
525         * Project.cs (Build): Don't throw an exception just return false.
526         (GetEvaluatedProperty): Avoid NullReferenceException.
527         (SetProjectExtensions): Implemented.
529 2006-12-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
531         * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
533         * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
534         BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
535         Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
536         
537         * ImportCollection.cs: Added a note.
539 2006-12-07  Marek Sieradzki  <marek.sieradzki@gmail.com>
541         * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
543         * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
544         (UsingTask[] array, int index)
546         * TaskEngine.cs: Reformatted PublishOutput () and added copying of
547         items to Project.EvaluatedItems in PublishItemGroup ();
549         * BuildItemGroup.cs: Added [MonoTODO].
551         * UsingTask.cs: Used expression for AssemblyFile to get around
552         problems with '\' and '/'.
554         * BuildItem.cs (ctor): Added null checks.
555         (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
556         (SetMetadata): Don't escape evaluatedMetadata and escape
557         unevaluatedMetadata only when treatPropertyValueAsLiteral.
559         * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
560         FromXml () instead of null checks.
561         (SetProperty): Escape propertyValue when it is literal.
563         * BuildProperty.cs: Changed exception message.
565         * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
566         properties.
567         (GetProjectExtensions): Implemented.
569 2006-12-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
571         * BuildTask.cs: Remove [MonoTODO], add exception throwing in
572         GetParameterValue (), use expressions in ContinueOnError.
573         * ConditionFactorException.cs: Throw InvalidProjectFileException ()
574         instead of InvalidOperationException ().
575         * ImportCollection.cs: Implement CopyTo ().
576         * Target.cs: Remove redundant variables (XmlAttributes), return
577         String.Empty in DependsOnTargets, add a null check in RemoveTask ().
578         * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
579         * Import.cs: Throw an exception when file does not exist.
580         * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
581         * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
582         need to treat item as a token probably
584 2006-12-04  Marek Sieradzki  <marek.sieradzki@gmail.com>
586         * Import.cs: Check for project.FullFileName (Path.DirectoryName would
587         throw an exception).
588         * BuildItemGroupCollection.cs: Changed exception types.
590 2006-10-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
592         * Engine.cs: Removed redundant cast.
593         * BuildWhen.cs:
594         * UsingTaskCollection.cs:
595         * ImportCollection:
596         * BuildChoose.cs:
597         * BuildItem.cs:
598         * TargetCollection.cs: Comment unused variable.
599         * ConditionTokenizer.cs: Simplified checking if current token is a
600         keyword.
601         * Target.cs: Removed old code.
603 2006-10-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
605         * Target.cs: Changed "" to String.Empty.
606         * TaskEngine.cs: Don't try to convert a parameter to specific type if
607         string was evaluated to String.Empty.
608         * InternalLoggerException.cs:
609         * InvalidProjectFileException.cs: Added LinkDemand before
610         GetObjectData ().
611         * ConsoleLogger.cs: Changed "" to String.Empty.
612         * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
613         with change to generics).
614         * Project.cs: Made Build () throw more meaningful exception.
616 2006-10-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
618         * Target.cs: Reformatted.
619         * TaskEngine.cs: Removed redundant code.
620         * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
621         * Engine.cs: Made BuildProjectFile () load project file if it's not
622         loaded yet.
624 2006-09-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
626         * ConditionRelationalExpression.cs: Change comparers to case
627         insensitive.
628         * ImportCollection.cs: Add NotImplementedExceptions.
629         * BuildPropertyGroup.cs: Reformatted a bit.
630         * BuildProperty.cs: The same.
631         * Project.cs: Moved evaluation of imports before evaluation of
632         properties. This may "work" until importing projects is redesigned but
633         probably isn't correct.
635 2006-09-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
637         * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
638         (like comments)
639         * BuildItemGroup.cs: Change return to continue.
641 2006-09-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
643         * ConditionParser.cs: Copyright note.
644         * ExpressionCollection.cs: Fixed arrays passing.
646 2006-08-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
648         * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
649         Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
650         BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
651         TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
653 2006-06-25  Marek Sieradzki  <marek.sieradzki@gmail.com>
655         * Token.cs: Changed names: removed "than".
656         * ConditionRelationalExpression.cs: Added.
657         * ConditionFactorExpression.cs: Added.
658         * BuildItemGroup.cs: Changed Condition property return value to return
659         String.Empty instead of null.
660         * ConditionParser.cs: Added support for parsing relational expressions
661         and factors.
662         * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
663         abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
664         and CanEvaluateToBool (), CanEvaluateToNumber () and
665         CanEvaluateToString ().
666         * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
667         appropriately to ConditionExpression base class.
668         * ConditionTokenizer.cs: Added null check and changed names in enums:
669         removed "than".
670         * ConditionNotExpression.cs: Added.
671         * BatchingImpl.cs: Changed to use BoolEvaluate ().
672         * Project.cs: Added checks for condition.
674 2006-06-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
676         * ConditionalTokenizer.cs, ConditionalExpression.cs,
677         ConditionalParser.cs: Changed name,
678         removed -al.
679         * ConditionExpression.cs: Added Evaluate ().
680         * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
681         * BatchingImpl.cs: Added check if task should be executed.
683 2006-06-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
685         * UsingTask.cs: Changed properties to return null on empty attribute.
686         * UsingTaskCollection.cs: Added object to SyncRoot.
687         * BuildPropertyGroup.cs: Added NotImplementedException throwing.
689 2006-06-02  Marek Sieradzki  <marek.sieradzki@gmail.com>
691         * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
692         BuildPropertyGroupCollection.cs: Fixed to match the tests.
694 2006-05-27  Marek Sieradzki  <marek.sieradzki@gmail.com>
696         * Utilities.cs: Implemented Escape ().
697         * BuildItem.cs: Added null checks.
698         * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
699         * Project.cs: Commented out redundant Evaluate ().
700         * BuildChoose.cs: Minor changes.
702 2006-05-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
704         * Token: Added new few missing tokens.
705         * Target.cs, Project.cs: Patch from Matthew Metnesky.
706         * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
707         ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
708         ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
709         LiteralTokenizer.cs:
710         Removed literal expression parsing based on tokenizer and
711         parser. It needs to be done by regex.
712         
713         Moved tokenizer to ConditionalTokenizer.cs.
715 2006-05-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
717         * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
718         ItemReference.cs, PropertyReference.cs: Changed name of *Reference
719         methods converting reference to string from ToString () to
720         ConvertToString () to avoid mistakes like using ToString () provided
721         by default.
723 2006-05-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
725         * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
726         Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
727         PropertyReference.cs, BuildProperty.cs: Changed Expression to
728         OldExpression and changed To* functions to one ConvertTo ().
729         * TaskEngine.cs: Fixed PublishOutput ().
730         * OldExpression.cs: Added. It will be temporarily used before
731         LiteralExpression will be written using Tokenizer.
732         * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
733         ExpressionParseException.cs, LiteralExpression.cs: Added.
735 2006-04-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
737         * ImportedProject.cs: Removed warning.
738         * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
739         default tasks.
741 2006-04-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
743         * Project.cs: Removed unnecessary variable.
744         * Engine.cs: Added fixme.
746 2006-04-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
748         * BuildItem.cs: Moved checking if metadata name is reserved to internal
749         class (Mono.XBuild.Utilities.ReservedNameUtils).
750                 
751 2006-04-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
753         * BuildTask.cs: Removed unnecessary variable.
754         * Engine.cs: Added logging of the build start.
755         * Project.cs: Removed unnecessary variable.
757 2006-04-07  Marek Sieradzki  <marek.sieradzki@gmail.com>
759         * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
761 2006-03-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
763         * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
765 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
766         
767         * BuildItem.cs: Fix typo?
769 2006-03-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
771         * InternalLoggerException.cs, InvalidProjectFileException.cs,
772         Engine.cs, Project.cs: Coding style fixes.
774 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
775         
776         * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
778 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
779         
780         * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
781         to pass tests. Wrote serialization constructor.
782         * Engine.cs, Project.cs: Global engine and project unloading, test and
783         formatting fixes.
785 2006-03-28  Marek Sieradzki  <marek.sieradzki@gmail.com>
787         * UsingTask.cs: Formatting changes.
789 2006-03-27  Crestez Leonard  <cdleonard@gmail.com>
791         * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
792         to lists instead of hashtables.
793         * Import.cs: Cleaned up, moved importing from Project.cs
794         * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
795         * Engine.cs: Cleaned up properties.
796         * Project.cs: Moved importing to Import.cs, cleaned up properties,
797         Separated evaluation and loading.
798         
799 2006-03-21  Crestez Leonard  <cdleonard@gmail.com>
801         * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
802         BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
803         Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
804         binding and evaluation, merge xml binding in constructors.
805         * DirectoryScanner.cs: Includes CAN be empty.
806         * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
807         * ConsoleLogger.cs: Fix compilation warning.
809 2006-03-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
811         * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
813 2006-03-18  Marek Sieradzki  <marek.sieradzki@gmail.com> 
815         * Engine.cs: API cleanup.
817 2006-03-18  Crestez Leonard  <cdleonard@gmail.com>
819         * Project.cs: Cleaned up add.
820         * Expression.cs: Hacked to transform \ and / to path separators.
821         * BuildPropertyGroup.cs: Small cleanup.
822         * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
823         reference.
824         
825 2006-03-11  Marek Sieradzki  <marek.sieradzki@gmail.com> 
827         * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
828         * BuildItem.cs: Updated for new API and fixed crashing on non-existent
829         files.
830         * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
831         BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
832         Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
833         API.
834         * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
835         * TaskElement.cs: Temporarily removed.
836         * Xml.cs: Changed to static.
838 2006-02-26  Marek Sieradzki  <marek.sieradzki@gmail.com>
840         * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
841         IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
842         ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
843         IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
844         ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
845         IBuildPropertyGroupCollection.cs: Removed.
847 2006-02-26  Marek Sieradzki  <marek.sieradzki@gmail.com> 
849         * BuildItem.cs: Removed IBuildItem references.
850         * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
851         IBuildItemGroup references. Changed Evaluate to internal.
852         * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
853         reference and hidden constructors.
854         * BuildProperty.cs: Removed IBuildProperty reference.
855         * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
856         IBuildPropertyGroup references. Changed Evaluate to internal.
857         * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
858         reference and hidden constructors.
859         * ConsoleLogger.cs: Updated names of event handlers.
860         * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
861         Escape. Added UnloadAllProjects () and UnloadProject ().
862         * FileLogger.cs: Removed ApplyParameter ().
863         * GroupingCollection.cs: Hidden.
864         * InvalidProjectFileException.cs: Removed HasBeenLogged property.
865         * ItemPropertyGroupingBase.cs: Commented.
866         * ProcessingPass.cs: Hidden.
867         * Project.cs: Removed IProject reference. Changed CurrentEncoding to
868         Encoding.
869         * Target.cs: Removed ITarget reference.
870         * TargetCollection.cs: Removed ITargetCollection reference.
871         * TaskElement.cs: Removed ITaskElement reference.
872         * TaskEngineAssemblyResolver.cs: Hidden.
873         * Utilities.cs: Made static class, removed CheckPath (),
874         ValidateCulture (), GetSupportedCultures () and added Escape ().
876 2006-02-24  Marek Sieradzki <marek.sieradzki@gmail.com> 
878         * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
879         API.
881 2005-09-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
883         * Project.cs: Added MonoTODO attributes.
884         * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
885         ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
886         IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
887         BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
888         SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
889         BuildItemGroup.cs, InvalidProjectFileException.cs,
890         BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
891         Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
892         PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
893         ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
894         IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
895         IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
896         ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
897         ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
898         IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
899         IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
900         BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
901         ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
903 2005-09-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
905         * TaskDatabase.cs: Change Shared to Framework.
906         * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
907         CaseInsensitiveHashCodeProvider
909 2005-09-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
911         * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
912         * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
913         property.
915 2005-09-09  Marek Sieradzki  <marek.sieradzki@gmail.com>
917         * InternalLoggerException.cs: Changed protected fields to private.
919 2005-09-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
921         * Engine.cs: Added check for globalProperties.
922         * Project.cs: Added using path from importedProject.FullFileName when
923         adding UsingTask elements.
925 2005-09-01  Marek Sieradzki  <marek.sieradzki@gmail.com>
927         * TaskElement.cs: Changed ReflectedType to PropertyType.
928         * ChangeType.cs (TransformToString): Changed to pass proper Type to
929         TemporaryTransform. 
931 2005-09-01  Marek Sieradzki  <marek.sieradzki@gmail.com>
933         * BuildPropertyGroup.cs: Added check for PropertyType when adding a
934         new property.
935         * BuildProperty.cs: Organized PropertyType enum.
936         * Engine.cs: Added setting CommandLine PropertyType of global
937         properties.
939 2005-08-31  Marek Sieradzki  <marek.sieradzki@gmail.com>
941         * InvalidProjectFileException.cs: Changed Message property.
942         * ChangeType.cs (TransformToString): Added separator between items.
943         * TaskEngineAssemblyResolver.cs: Formatting.
945 2005-08-31  Marek Sieradzki  <marek.sieradzki@gmail.com>
947         * DirectoryScanner.cs: Added.
948         * BuildItem.cs: Moved file scanning code to DirectoryScanner.
949         * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
950         * Project.cs: Removed Evalute* ().
952 2005-08-30  Marek Sieradzki  <marek.sieradzki@gmail.com>
954         * Target.cs: Formatting.
955         * Expression.cs: Added check if array == null.
956         * BuildItem.cs: Removed 'break' to remove warnings.
957         * ConsoleLogger.cs: Formatting.
958         * Engine.cs: Added handling of default target(s).
959         * Project.cs: Added handling of default target(s).
961 2005-08-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
963         * TaskElement.cs: Added check for parameters.
964         * Target.cs: Added logging of target skipping.
965         * Expression.cs: Changed returning object[] to string[], bool[]... in
966         ToArray ().
967         * ItemReference.cs: Fixed for item references without custom
968         separators.
969         * BatchingImpl.cs: Added real inputs/outputs checking.
970         * Engine.cs: Moved global properties setting.
971         * Project.cs: Moved global properties setting.
973 2005-08-27  Marek Sieradzki  <marek.sieradzki@gmail.com>
975         * Target.cs: Added checks for target existence.
976         * BuildItemGroup.cs: Changed to use transforms.
977         * MetadataReference.cs: Wrote real implementation.
978         * ItemReference.cs: Rewritten to use transforms.
979         * BuildItem.cs: Changes for transforms and metadata.
980         * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
981         formatting.
982         * Project.cs: Fixed project importing.
983         * ImportedProject.cs: Changed to throw exceptions instead of returning
984         bool.
986 2005-08-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
988         * Engine.cs: Removed FIXME.
989         * Project.cs: Splitted ProcessElements and added project importing.
990         * ImportedProject.cs: Rewritten.
992 2005-08-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
994         * TaskElement.cs: Added getting of objects of every type.
995         * BuildItemGroup.cs: Added ToITaskItemArray ().
996         * Expression.cs: Implemented part that is not using metadata.
997         * ItemReference.cs: Implemented parsing item references. Need to fix
998         validity checking.
999         * BuildItem.cs: Fixed ToITaskItem ().
1000         * PropertyReference.cs: Implemented parsing property references. This
1001         also needs validity checking.
1003 2005-08-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
1005         * TaskElement.cs: Added Output element handling.
1006         * Target.cs: Cleaned up.
1007         * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1008         * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1009         ItemReference.cs, ChangeType.cs: Added.
1010         * BuildItem.cs: Added creating BuildItem from TaskItem.
1011         * BuildPropertyGroup.cs: Small changes.
1012         * BatchingImpl.cs: Fixed to return real task execution result.
1013         * BuildProperty.cs: Fixed FinalValue property.
1014         * Engine.cs: Reformatted logging.
1015         * Project.cs: Added check to EvaluateProperty.
1017 2005-08-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
1019         * TaskElement.cs: Added part of execution engine.
1020         * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1021         * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1022         * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1023         * BuildItem.cs: Added handling of built-in metadata and referencing
1024         Items by name not FullName.
1025         * BatchingImpl.cs: Added temporary task "batching".
1026         * ConsoleLogger.cs: Added temporary workaround to not show sender.
1027         * Project.cs: Added Evaluate. It will be moved to separate class.
1029 2005-08-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1031         * EventSource.cs, Engine.cs: Added CriticalEvents.
1032         * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1033         Project.cs: Added some support for items.
1034         * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1036 2005-08-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
1038         * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1039         of properties.
1041 2005-08-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
1043         * BatchingImpl.cs: Added.
1044         * BuildWhen.cs, BuildEngine.cs, Target.cs,
1045         BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1046         BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1047         TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1048         GroupingCollection.cs: Updated.
1050 2005-08-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
1052         * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1053         BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1054         BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1055         BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1056         EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1057         GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1058         InternalLoggerException.cs, InvalidProjectFileException.cs,
1059         ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1060         ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1061         TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1062         TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1063         Initial check-in of implementations.
1065 2005-07-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
1067         * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1068         IBuildItemGroupCollection.cs, IBuildProperty.cs,
1069         IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1070         ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1071         IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1072         IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1073         Initial check-in of interfaces and a syntax file, real classes are
1074         changing a lot so I'll wait a moment with checking them in.