Correctly handle global properties. Correctly log
[mono.git] / mcs / class / Microsoft.Build.Engine / Microsoft.Build.BuildEngine / ChangeLog
1 2009-05-29  Ankit Jain  <jankit@novell.com>
2
3         Correctly handle global properties. Correctly log
4         project/build events.
5
6         * BuildPropertyGroup.cs (Clone): Implement.
7         * Engine.cs (globalProperties): Rename to ..
8         (global_properties): .. this.
9         (currentlyBuildingProjectsStack): New. Used to correctly
10         log and raise project/build start/finish events.
11         (BuildProjectFile): Override any project global properties
12         with explicitly specified ones, here in the param @globalProperties.
13         Mark project for reevaluation, which will update the engine's
14         global properties also.
15         Reset both engine and project's old global properties at the end.
16         (UnregisterAllLoggers): Log build finished only if we are currently
17         building.
18         (StartBuild): Rename to ..
19         (StartProjectBuild): .. this. Keeps track of the projects being built
20         in the new stack, and logs project and build events accordingly.
21         (EndProjectBuild): New. Uses the stack to keep track of projects
22         finishing builds, and raises project and build events accordingly.
23         (LogProjectStarted): Move here from Project.cs
24         (LogProjectFinished): Likewise.
25
26         * Project.cs (Build): Log start of project build.
27         Set current directory to the project file's dir, and reset at end.
28         (BuildInternal): Don't log here, its done in Build.
29         (BuildTarget): Already built targets are keyed by the set of global
30         properties that they were built with.
31         (GlobalPropertiesToString): New.
32         (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
33         (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
34         (Evaluate): Remove built targets only if we are currently building and
35         build settings are None.
36         Merge project's global properties with those of the parent engine.
37         Add missing properties from engine's global properties.
38         (LogTargetSkipped): Fix format string, add the reqd argument.
39
40 2009-05-29  Ankit Jain  <jankit@novell.com>
41
42         * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
43         (HasTrailingSlash): New.
44
45 2009-05-12  Ankit Jain  <jankit@novell.com>
46
47         * Project.cs (.ctor): Init timeOfLastDirty.
48
49 2009-05-05  Miguel de Icaza  <miguel@novell.com>
50
51         * Contribution from Martin Brenn to fix #498154.
52
53 2009-04-27  Ankit Jain  <jankit@novell.com>
54
55         Fix bug #497839.
56         * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
57         one passed as argument.
58
59 2009-04-27  Ankit Jain  <jankit@novell.com>
60
61         * TaskEngine.cs (Prepare): Emit a useful error message property value
62         can't be converted to required type.
63
64 2009-04-27  Ankit Jain  <jankit@novell.com>
65
66         * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
67         as valid true values for bool, and corresponding for false.
68
69 2009-03-27  Jonathan Chambers  <joncham@gmail.com>
70
71         * BuildWhen.cs: Add basic implementation.
72         * BuildChoose.cs: Add basic implementation.
73         * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to 
74         EvaluatedItemsIgnoringCondition.
75         * GroupingCollection.cs: Add evaluation of BuildChoose items.
76
77 2009-03-26  Jonathan Chambers  <joncham@gmail.com>
78
79         * TaskDatabase.cs (RegisterTask): Search for class by name
80         if task was not found using GetType (which uses namespace). 
81
82 2009-02-26  Ankit Jain  <jankit@novell.com>
83
84         * Target.cs: Handle target with no tasks. Log errors.
85
86 2009-02-24  Ankit Jain  <jankit@novell.com>
87
88         Lazily load UsingTask tasks.
89         * UsingTask.cs (Evaluate): Register 'this' with task database,
90         but don't load it yet. Register only if condition evaluates to true.
91         Move the load logic to ..
92         (Load): .. here. Register with the specified task database.
93         * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
94         in a table keyed by task name, but don't load it yet.
95         (GetTypeFromClassName): Try to load UsingTask if task is not already
96         loaded. Move loading logic to ..
97         (GetTypeFromClassNameInternal): .. here.
98         (CopyTasks): Copy the usingTasks table also.
99
100 2009-02-23  Ankit Jain  <jankit@novell.com>
101
102         * BuildItem.cs (AddMetadata): Allow overwriting older values.
103
104 2009-02-22  Ankit Jain  <jankit@novell.com>
105
106         * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
107         instead of XmlElement. Eg. XmlComment
108
109 2009-02-21  Ankit Jain  <jankit@novell.com>
110
111         * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
112         * Project.cs (Load): Use FromMSBuildPath on the path.
113         (InitializeProperties): Set "MSBuildToolsPath" also.
114
115 2009-02-20  Ankit Jain  <jankit@novell.com>
116
117         Fix #449683.
118         * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
119         transforms) in conditions.
120         * ConditionParser.cs: Parse unquoted item, property references.
121         eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
122         * Token.cs (Token.ToString): Override.
123         (TokenType.Transform): Uncomment.
124
125 2009-02-12  Jonathan Chambers  <joncham@gmail.com>
126
127         * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
128         no XmlElement.InnerText. This allows properties to be additional 
129         xml elements.
130
131 2009-02-01  Ankit Jain  <jankit@novell.com>
132
133         * BuildEngine.cs (BuildProjectFile): Use
134         BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
135         * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
136         built. Move logging of project start/finish to ..
137         * Project.cs: .. here. Build a target only if hasn't been built already.
138         Keep track of target outputs, and return those even if an already built
139         target has been invoked again.
140         Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
141
142 2009-01-31  Ankit Jain  <jankit@novell.com>
143
144         * BatchingImpl.cs: Split into ..
145         * BatchingImplBase.cs: .. this,
146         * TaskBatchingImpl.cs: .. this ..
147         * TargetBatchingImpl.cs: .. and this. Implement target batching here.
148
149         * Target.cs (DoBuild): Use TargetBatchingImpl for building.
150         (Log*): Move to TargetBatchingImpl .
151         (BuildTasks): New.
152         (Engine): New.
153
154 2009-01-30  Ankit Jain  <jankit@novell.com>
155
156         * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
157         arrays.
158
159 2009-01-29  Ankit Jain  <jankit@novell.com>
160
161         * BuildItem.cs (child_items): Change type from BuildItemGroup to
162         List<BuildItem>.
163         (HasParent): Rename to ..
164         (HasParentItem): .. this.
165         (ParentItemGroup): Add setter.
166
167         * BuildItemGroup.cs (.ctor): Add overload with @project param.
168         (AddNewItem):
169         (AddItem): Correctly set the ParentItemGroup for new build items.
170         (ParentProject): Add setter.
171         * Project.cs: Set the project for new BuildItemGroup instances.
172         * TaskEngine.cs (PublishItemGroup): Likewise.
173
174 2009-01-06  Ankit Jain  <jankit@novell.com>
175
176         * Project.cs (Build): Honor InitialTargets list.
177
178 2009-01-06  Ankit Jain  <jankit@novell.com>
179
180         * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
181         the property type also.
182         * MSBuild.cs (Execute): Parse 'Properties' task param to set global
183         properties.
184
185 2009-01-06  Ankit Jain  <jankit@novell.com>
186
187         * Project.cs (Build): Correctly handle null targetNames argument.
188
189 2009-01-06  Ankit Jain  <jankit@novell.com>
190
191         * Engine.cs (LogProjectStarted): Add a null check.
192
193 2009-01-01  Ankit Jain  <jankit@novell.com>
194
195         * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
196         * ChangeType (ToBuildItemGroup): Add 'split' param.
197         Track api changes.
198         * Expression.cs (Parse): Add a new overload with a 'split' param.
199         * ExpressionCollection.cs (Add): Add new overload for IReference,
200         remove the ones for Item/Metadata/PropertyReference.
201         (ConvertToArray): Implement correctly.
202         (ConvertToString): Track api changes.
203         (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
204         (ConvertToITaskItemArray): Implement support for concat'ing expressions.
205         (AddItemsToArray): New.
206         (ConvertToITaskItemArrayFromString): Refactor a bit.
207         (ThrowCantConcatError): New.
208         * ItemReference.cs: Update.
209         * MetadataReference.cs: Update.
210         * PropertyReference.cs (ConvertToITaskItemArray): Implement.
211         (GetValue): New.
212         * BuildPropertyGroup.cs: Track api changes.
213         * TaskEngine.cs (PublishOutput): Improve exception message.
214         * Project.cs (DoLoad): Improve exception message. Add a null check.
215
216 2008-12-30  Ankit Jain  <jankit@novell.com>
217
218         * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
219         metadata values for unqualified references.
220         (BuildItemGroupToITaskItemArray): Rename to ..
221         (BuildItemGroupToITaskItems): .. this.
222         (HasTaskItem): New.
223
224 2008-12-18  Ankit Jain  <jankit@novell.com>
225
226         * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
227
228 2008-12-17  Ankit Jain  <jankit@novell.com>
229
230         * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
231         only one instance of unique metadata value is required.
232
233 2008-11-22  Ankit Jain  <jankit@novell.com>
234
235         * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
236         MetadataReference.
237         * MetadataReference.cs (ConvertToITaskItemArray): New.
238         * Project.cs (GetAllItemGroups): New.
239
240 2008-11-21  Ankit Jain  <jankit@novell.com>
241
242         * BatchingImpl.cs: Add task batching implementation.
243         * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
244         * ExpressionCollection.cs (Count): New.
245         (ConvertToString): Handle MetadataReference.
246         * ItemReference.cs (ConvertToString):
247         (ConvertToITaskItemArray): Use the batching api.
248         (ToString): New.
249         * MetadataReference.cs (ConvertToString): New.
250         (ToString): New.
251         * Project.cs: Add api for accessing batched items and metadata.
252         * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
253         item group.
254
255 2008-10-01  Ankit Jain  <jankit@novell.com>
256
257         * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
258         (BuildProjectFile): If filename is null (project.LoadXml) then use
259         engine.BuildProject
260         * BuildTask.cs (InitializeTask): Track api change.
261         * Expression.cs (Parse): Skip empty entries in the expression.
262
263 2008-09-24  Ankit Jain  <jankit@novell.com>
264
265         * Engine.cs: Add argument checks.
266         * Project.cs: Likewise.
267
268 2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
269
270         * Project.cs (Build): Add outputs to targetOutputs.
271
272 2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
273
274         * ExpressionCollection.cs (ConvertToArray): Simplify.
275
276 2007-03-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
277
278         * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
279         simplified. It still needs tests and refactoring.
280
281 2007-02-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
282
283         * BuildEngine.cs (BuildProjectFile): Don't crash on null
284         globalProperties.
285
286         * Target.cs: Add Outputs property.
287
288 2007-02-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
289
290         * Target.cs (Build): Split to GetDependencies () and BuildDependencies
291         (). Support condition.
292         
293         * BatchingImpl.cs (BatchBuildTask): Simplify.
294
295 2007-02-18  Marek Sieradzki  <marek.sieradzki@gmail.com>
296
297         * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
298         Simplified.
299
300         * ConditionFunctionExpression.cs: Removed warnings.
301
302         * BuildTask.cs (Execute): Write exceptions to std err (they should be
303         logged but it's better than swallowing).
304
305 2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
306
307         * ConditionTokenizer.cs: Add Putback ().
308
309         * ConditionParser.cs: Add parsing of functions.
310
311         * ConditionFunctionExpression.cs: Add.
312
313 2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
314
315         * BuildPropertyGroup (SetProperty): Throw an exception when trying to
316         set property in persisted property group.
317
318 2007-01-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
319
320         * BuildTask.cs (Execute): Log errors that happen when invoking ITask
321         .ctor.
322
323         * ConsoleLogger.cs (TargetFinishedHandler)
324         (TaskFinishedHandler): Increment error count.
325
326 2007-01-28  Marek Sieradzki  <marek.sieradzki@gmail.com>
327
328         * BuildItem.cs (RemoveMetadata): Remove from XML.
329         (SetMetadata): Trigger project reevaluation.
330
331 2007-01-26  Marek Sieradzki  <marek.sieradzki@gmail.com>
332
333         * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
334         properties.
335
336 2007-01-23  Marek Sieradzki  <marek.sieradzki@gmail.com>
337
338         * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
339         TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
340         BatchingImpl.cs, BuildProperty.cs: Track API changes.
341
342         * Expression.cs (Parse): Added allowItems parameter and made regexes
343         static.
344
345         * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
346         will try to import a.ext when given a.EXT.
347
348 2007-01-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
349
350         * BuildItemGroup.cs: Store information saying what is the last item
351         group that contains build item name.
352
353         * Project.cs (Build): Pass empty array (build default targets).
354
355 2007-01-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
356
357         * Token.cs: Commented Transform and LiteralSubExpression and added
358         FunctionName token.
359
360         * ConditionParser.cs: Removed redundant casts, rewrote
361         ParseFactorExpression () and added parsing of '!'.
362
363         * ConditionTokenizer.cs: Always skip whitespaces when getting next
364         token (no IgnoreWhiteSpace property). Don't create a token from '->'.
365         Moved ReadChar () in front of all ifs.
366
367 2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
368
369         * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
370         from XML. (not to escape items that have parents twice).
371
372 2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
373
374         * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
375         (Project): Renamed to ParentProject.
376
377         * BuildItem.cs (ctor)
378         (CopyCustomMetadata): Add null check.
379
380         * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
381         (RemoveProperty): Added null check.
382
383         * TargetCollection.cs (RemoveTarget): Added null check.
384
385         * Engine.cs (UnloadProject): Added null check.
386
387         * GroupingCollection.cs (Remove): Check if removed group belongs to
388         current project.
389
390         * Project.cs (AddNewItem): Implemented.
391         (RemoveItem): Reorganized.
392         (SetProjectExtensions): Added null check.
393
394 2007-01-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
395
396         * BuildItemGroup.cs (Detach): Added.
397         (RemoveItem)
398         (RemoveItemAt): Used Detach ().
399
400         * BuildItem.cs: Made FromXml and HasParent internal and added
401         ParentItem and ParentItemGroup properties (internal).
402         (Detach): Added.
403
404         * GroupingCollection.cs (Remove): Used Detach ().
405
406         * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
407         text on Save ().
408         (GetEvaluatedItemsByNameIgnoringCondition)
409         (GetEvaluatedItemsByName)
410         (GetEvaluatedProperty): Reevaluate if needed.
411         (RemoveItem)
412         (RemoveAllItemGroups)
413         (RemoveAllPropertyGroups): Implemented.
414         (DoLoad): Added closing of TextReader.
415
416 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
417
418         * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
419         change but just mark that it needs it.
420
421         * Project.cs: Reevaluate when it needs reevaluation and one of
422         Evaluated* properties is used.
423
424 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
425
426         * Target.cs: Throw an exception when <OnError> is not last element in
427         target.
428
429         * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
430
431         * TargetCollection.cs: If a target is already there replace it with
432         new target.
433
434         * BuildProperty.cs: Added XmlElement property.
435
436 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
437
438         * ImportCollection.cs: Don't add imports that are already added.
439
440         * BuildItemGroup.cs: MonoTODOs.
441
442         * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
443         condition can't be evaluated to bool.
444
445         * BuildPropertyGroup.cs (Evaluate): Simplify.
446
447 2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
448
449         * BuildWhen.cs: Moved BindToXml () code to ctor.
450
451         * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
452         property needed for removing groups.
453
454         * Engine.cs: Added StartBuild () that logs build start when Build ()
455         was first called.
456
457         * GroupingCollection.cs: Added Remove () for item and property groups.
458
459         * Project.cs (AddNewImport): Implemented.
460         (AddNewItemGroup): Implemented.
461         (AddNewPropertyGroup): Implemented.
462         (AddNewUsingTaskFromAssemblyFile): Implemented.
463         (AddNewUsingTaskFromAssemblyName): Implemented.
464         (RemoveItemGroup): Implemented.
465         (RemovePropertyGroup): Implemented.
466
467 2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
468
469         * BuildItemGroup.cs (Clear): Remove from XML.
470
471         * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
472         to Project.EvaluatedProperties.
473         (Clear): Remove from XML.
474
475 2007-01-09  Marek Sieradzki  <marek.sieradzki@gmail.com>
476
477         * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
478         reserved property.
479
480 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
481
482         * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
483         Add () calls when processing a project from Import and
484         evaluate_iterator for evaluation.
485
486 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
487
488         * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
489         and prepend relative directory of importing project to full path of
490         imported project.
491
492 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
493
494         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
495         BuildItemGroupCollection.cs, Project.cs: Track API changes.
496
497         * GroupingCollection.cs: Now it needs Project reference so added it.
498
499         * BuildTask.cs: Formatting.
500
501         * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
502
503         * ConditionParser.cs (ParseAndEvaluate): Added.
504
505         * BuildItem.cs: Changed exception message.
506
507 2007-01-02  Marek Sieradzki  <marek.sieradzki@gmail.com>
508
509         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
510         BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
511         GroupingCollection doesn't need Project reference.
512
513         * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
514
515         * BuildItemGroup.cs: Added new readOnly parameter to ctor.
516         (Project.EvaluatedItems is a read only item group.)
517         (ReplaceWith): Added.
518
519         * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
520         global property group causes reevaluation of its project.
521
522         * Project.cs: ProcessXml () is internal and can be "safely" invoked by
523         other classes.
524
525         * OldExpression.cs: Removed.
526
527         * BuildProperty.cs (Evaluate): Simplified.
528
529         * ChangeType.cs (TemporaryTransform): Simplified.
530
531         * BuildItem.cs: There are now 3 types of build items: from XML, having
532         parent from XML, virtual. Added SplitParentItem ().
533
534 2006-12-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
535
536         * Utilities.cs: Added Unescape ().
537
538         * BuildItemGroup.cs, BuildItem.cs: Pass null project to
539         BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
540         groups (at the moment just unescape).
541
542         * Expression.cs (CopyToExpressionList): Unescape strings.
543
544 2006-12-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
545
546         * Target.cs (ctor): Added ImportedProject argument and removed
547         set_IsImported.
548         (AddNewTask): Implemented.
549
550         * TargetCollection.cs (AddNewTarget): Implemented.
551
552         * Project.cs: Track API changes.
553
554 2006-12-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
555
556         * Target.cs (Build): Don't throw anything in case of error, just
557         return false.
558
559         * BuildItemGroup.cs (set_Condition): Throw an exception if group is
560         not from XML.
561
562         * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
563         SetMetadata ().
564
565         * BuildProperty.cs (ToString): Throw an exception if property is not
566         from XML.
567         (op_Explicit): Added a null check.
568
569         * Engine.cs: Better error message.
570
571         * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
572         IndexOutOfRangeException.
573
574         * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
575         (MarkProjectAsDirty): Set time.
576
577 2006-12-18  Marek Sieradzki  <marek.sieradzki@gmail.com>
578
579         * BuildItemGroup.cs (Clone): Throw exception.
580
581         * Project.cs (Load): Throw InvalidProjectFileException if anything
582         goes wrong.
583
584 2006-12-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
585
586         * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
587         and ConvertToITaskItemArray ().
588
589 2006-12-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
590
591         * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
592         classes that were public in Beta 2 and aren't used.
593
594         * Expression.cs: Added replacement for parsing expressions char by
595         char. It uses regexes to find item/property/metadata references in
596         given text.
597
598         * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
599         Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
600         BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
601
602         * ConditionRelationalExpression.cs: Formatting.
603
604         * OldExpression.cs: Commented everything.
605
606         * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
607         parsing to Expression.
608
609         * BuildItem.cs: Check if project is from XML in set_Condition and
610         set_Exclude.
611
612         * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
613         Project.ctor.
614
615         * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
616         can evaluate expression in CanEvaluateToBool ().
617
618 2006-12-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
619
620         * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
621         which item group is imported.
622
623         * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
624
625 2006-12-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
626
627         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
628         BuildItemGroupCollection.cs: Little changes related to
629         GroupingCollection.
630
631         * ImportCollection.cs: Use GroupingCollection not an internal list.
632
633         * Import.cs (Evaluate): Split to functions and check if
634         EvaluatedProjectPath is empty.
635
636         * GroupingCollection.cs, Project.cs: Move evaluation to
637         GroupingCollection. Change algorithm to use 2 passes: first for property
638         groups and imports and second for item groups.
639
640 2006-12-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
641
642         * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
643         BuildItemGroup> not IDictionary.
644
645         * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
646         evaluated to false because we want to add every item to
647         Project.EvaluatedItemsByNameIgnoringCondition.
648
649         * Project.cs (Build): Don't throw an exception just return false.
650         (GetEvaluatedProperty): Avoid NullReferenceException.
651         (SetProjectExtensions): Implemented.
652
653 2006-12-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
654
655         * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
656
657         * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
658         BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
659         Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
660         
661         * ImportCollection.cs: Added a note.
662
663 2006-12-07  Marek Sieradzki  <marek.sieradzki@gmail.com>
664
665         * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
666
667         * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
668         (UsingTask[] array, int index)
669
670         * TaskEngine.cs: Reformatted PublishOutput () and added copying of
671         items to Project.EvaluatedItems in PublishItemGroup ();
672
673         * BuildItemGroup.cs: Added [MonoTODO].
674
675         * UsingTask.cs: Used expression for AssemblyFile to get around
676         problems with '\' and '/'.
677
678         * BuildItem.cs (ctor): Added null checks.
679         (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
680         (SetMetadata): Don't escape evaluatedMetadata and escape
681         unevaluatedMetadata only when treatPropertyValueAsLiteral.
682
683         * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
684         FromXml () instead of null checks.
685         (SetProperty): Escape propertyValue when it is literal.
686
687         * BuildProperty.cs: Changed exception message.
688
689         * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
690         properties.
691         (GetProjectExtensions): Implemented.
692
693 2006-12-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
694
695         * BuildTask.cs: Remove [MonoTODO], add exception throwing in
696         GetParameterValue (), use expressions in ContinueOnError.
697         * ConditionFactorException.cs: Throw InvalidProjectFileException ()
698         instead of InvalidOperationException ().
699         * ImportCollection.cs: Implement CopyTo ().
700         * Target.cs: Remove redundant variables (XmlAttributes), return
701         String.Empty in DependsOnTargets, add a null check in RemoveTask ().
702         * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
703         * Import.cs: Throw an exception when file does not exist.
704         * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
705         * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
706         need to treat item as a token probably
707
708 2006-12-04  Marek Sieradzki  <marek.sieradzki@gmail.com>
709
710         * Import.cs: Check for project.FullFileName (Path.DirectoryName would
711         throw an exception).
712         * BuildItemGroupCollection.cs: Changed exception types.
713
714 2006-10-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
715
716         * Engine.cs: Removed redundant cast.
717         * BuildWhen.cs:
718         * UsingTaskCollection.cs:
719         * ImportCollection:
720         * BuildChoose.cs:
721         * BuildItem.cs:
722         * TargetCollection.cs: Comment unused variable.
723         * ConditionTokenizer.cs: Simplified checking if current token is a
724         keyword.
725         * Target.cs: Removed old code.
726
727 2006-10-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
728
729         * Target.cs: Changed "" to String.Empty.
730         * TaskEngine.cs: Don't try to convert a parameter to specific type if
731         string was evaluated to String.Empty.
732         * InternalLoggerException.cs:
733         * InvalidProjectFileException.cs: Added LinkDemand before
734         GetObjectData ().
735         * ConsoleLogger.cs: Changed "" to String.Empty.
736         * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
737         with change to generics).
738         * Project.cs: Made Build () throw more meaningful exception.
739
740 2006-10-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
741
742         * Target.cs: Reformatted.
743         * TaskEngine.cs: Removed redundant code.
744         * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
745         * Engine.cs: Made BuildProjectFile () load project file if it's not
746         loaded yet.
747
748 2006-09-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
749
750         * ConditionRelationalExpression.cs: Change comparers to case
751         insensitive.
752         * ImportCollection.cs: Add NotImplementedExceptions.
753         * BuildPropertyGroup.cs: Reformatted a bit.
754         * BuildProperty.cs: The same.
755         * Project.cs: Moved evaluation of imports before evaluation of
756         properties. This may "work" until importing projects is redesigned but
757         probably isn't correct.
758
759 2006-09-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
760
761         * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
762         (like comments)
763         * BuildItemGroup.cs: Change return to continue.
764
765 2006-09-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
766
767         * ConditionParser.cs: Copyright note.
768         * ExpressionCollection.cs: Fixed arrays passing.
769
770 2006-08-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
771
772         * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
773         Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
774         BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
775         TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
776
777 2006-06-25  Marek Sieradzki  <marek.sieradzki@gmail.com>
778
779         * Token.cs: Changed names: removed "than".
780         * ConditionRelationalExpression.cs: Added.
781         * ConditionFactorExpression.cs: Added.
782         * BuildItemGroup.cs: Changed Condition property return value to return
783         String.Empty instead of null.
784         * ConditionParser.cs: Added support for parsing relational expressions
785         and factors.
786         * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
787         abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
788         and CanEvaluateToBool (), CanEvaluateToNumber () and
789         CanEvaluateToString ().
790         * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
791         appropriately to ConditionExpression base class.
792         * ConditionTokenizer.cs: Added null check and changed names in enums:
793         removed "than".
794         * ConditionNotExpression.cs: Added.
795         * BatchingImpl.cs: Changed to use BoolEvaluate ().
796         * Project.cs: Added checks for condition.
797
798 2006-06-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
799
800         * ConditionalTokenizer.cs, ConditionalExpression.cs,
801         ConditionalParser.cs: Changed name,
802         removed -al.
803         * ConditionExpression.cs: Added Evaluate ().
804         * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
805         * BatchingImpl.cs: Added check if task should be executed.
806
807 2006-06-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
808
809         * UsingTask.cs: Changed properties to return null on empty attribute.
810         * UsingTaskCollection.cs: Added object to SyncRoot.
811         * BuildPropertyGroup.cs: Added NotImplementedException throwing.
812
813 2006-06-02  Marek Sieradzki  <marek.sieradzki@gmail.com>
814
815         * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
816         BuildPropertyGroupCollection.cs: Fixed to match the tests.
817
818 2006-05-27  Marek Sieradzki  <marek.sieradzki@gmail.com>
819
820         * Utilities.cs: Implemented Escape ().
821         * BuildItem.cs: Added null checks.
822         * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
823         * Project.cs: Commented out redundant Evaluate ().
824         * BuildChoose.cs: Minor changes.
825
826 2006-05-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
827
828         * Token: Added new few missing tokens.
829         * Target.cs, Project.cs: Patch from Matthew Metnesky.
830         * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
831         ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
832         ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
833         LiteralTokenizer.cs:
834         Removed literal expression parsing based on tokenizer and
835         parser. It needs to be done by regex.
836         
837         Moved tokenizer to ConditionalTokenizer.cs.
838
839 2006-05-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
840
841         * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
842         ItemReference.cs, PropertyReference.cs: Changed name of *Reference
843         methods converting reference to string from ToString () to
844         ConvertToString () to avoid mistakes like using ToString () provided
845         by default.
846
847 2006-05-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
848
849         * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
850         Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
851         PropertyReference.cs, BuildProperty.cs: Changed Expression to
852         OldExpression and changed To* functions to one ConvertTo ().
853         * TaskEngine.cs: Fixed PublishOutput ().
854         * OldExpression.cs: Added. It will be temporarily used before
855         LiteralExpression will be written using Tokenizer.
856         * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
857         ExpressionParseException.cs, LiteralExpression.cs: Added.
858
859 2006-04-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
860
861         * ImportedProject.cs: Removed warning.
862         * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
863         default tasks.
864
865 2006-04-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
866
867         * Project.cs: Removed unnecessary variable.
868         * Engine.cs: Added fixme.
869
870 2006-04-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
871
872         * BuildItem.cs: Moved checking if metadata name is reserved to internal
873         class (Mono.XBuild.Utilities.ReservedNameUtils).
874                 
875 2006-04-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
876
877         * BuildTask.cs: Removed unnecessary variable.
878         * Engine.cs: Added logging of the build start.
879         * Project.cs: Removed unnecessary variable.
880
881 2006-04-07  Marek Sieradzki  <marek.sieradzki@gmail.com>
882
883         * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
884
885 2006-03-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
886
887         * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
888
889 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
890         
891         * BuildItem.cs: Fix typo?
892
893 2006-03-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
894
895         * InternalLoggerException.cs, InvalidProjectFileException.cs,
896         Engine.cs, Project.cs: Coding style fixes.
897
898 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
899         
900         * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
901
902 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
903         
904         * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
905         to pass tests. Wrote serialization constructor.
906         * Engine.cs, Project.cs: Global engine and project unloading, test and
907         formatting fixes.
908
909 2006-03-28  Marek Sieradzki  <marek.sieradzki@gmail.com>
910
911         * UsingTask.cs: Formatting changes.
912
913 2006-03-27  Crestez Leonard  <cdleonard@gmail.com>
914
915         * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
916         to lists instead of hashtables.
917         * Import.cs: Cleaned up, moved importing from Project.cs
918         * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
919         * Engine.cs: Cleaned up properties.
920         * Project.cs: Moved importing to Import.cs, cleaned up properties,
921         Separated evaluation and loading.
922         
923 2006-03-21  Crestez Leonard  <cdleonard@gmail.com>
924
925         * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
926         BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
927         Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
928         binding and evaluation, merge xml binding in constructors.
929         * DirectoryScanner.cs: Includes CAN be empty.
930         * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
931         * ConsoleLogger.cs: Fix compilation warning.
932
933 2006-03-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
934
935         * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
936
937 2006-03-18  Marek Sieradzki  <marek.sieradzki@gmail.com> 
938
939         * Engine.cs: API cleanup.
940
941 2006-03-18  Crestez Leonard  <cdleonard@gmail.com>
942
943         * Project.cs: Cleaned up add.
944         * Expression.cs: Hacked to transform \ and / to path separators.
945         * BuildPropertyGroup.cs: Small cleanup.
946         * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
947         reference.
948         
949 2006-03-11  Marek Sieradzki  <marek.sieradzki@gmail.com> 
950
951         * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
952         * BuildItem.cs: Updated for new API and fixed crashing on non-existent
953         files.
954         * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
955         BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
956         Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
957         API.
958         * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
959         * TaskElement.cs: Temporarily removed.
960         * Xml.cs: Changed to static.
961
962 2006-02-26  Marek Sieradzki  <marek.sieradzki@gmail.com>
963
964         * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
965         IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
966         ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
967         IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
968         ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
969         IBuildPropertyGroupCollection.cs: Removed.
970
971 2006-02-26  Marek Sieradzki  <marek.sieradzki@gmail.com> 
972
973         * BuildItem.cs: Removed IBuildItem references.
974         * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
975         IBuildItemGroup references. Changed Evaluate to internal.
976         * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
977         reference and hidden constructors.
978         * BuildProperty.cs: Removed IBuildProperty reference.
979         * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
980         IBuildPropertyGroup references. Changed Evaluate to internal.
981         * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
982         reference and hidden constructors.
983         * ConsoleLogger.cs: Updated names of event handlers.
984         * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
985         Escape. Added UnloadAllProjects () and UnloadProject ().
986         * FileLogger.cs: Removed ApplyParameter ().
987         * GroupingCollection.cs: Hidden.
988         * InvalidProjectFileException.cs: Removed HasBeenLogged property.
989         * ItemPropertyGroupingBase.cs: Commented.
990         * ProcessingPass.cs: Hidden.
991         * Project.cs: Removed IProject reference. Changed CurrentEncoding to
992         Encoding.
993         * Target.cs: Removed ITarget reference.
994         * TargetCollection.cs: Removed ITargetCollection reference.
995         * TaskElement.cs: Removed ITaskElement reference.
996         * TaskEngineAssemblyResolver.cs: Hidden.
997         * Utilities.cs: Made static class, removed CheckPath (),
998         ValidateCulture (), GetSupportedCultures () and added Escape ().
999
1000 2006-02-24  Marek Sieradzki <marek.sieradzki@gmail.com> 
1001
1002         * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1003         API.
1004
1005 2005-09-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
1006
1007         * Project.cs: Added MonoTODO attributes.
1008         * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1009         ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1010         IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1011         BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1012         SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1013         BuildItemGroup.cs, InvalidProjectFileException.cs,
1014         BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1015         Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1016         PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1017         ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1018         IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1019         IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1020         ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1021         ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1022         IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1023         IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1024         BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1025         ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1026
1027 2005-09-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
1028
1029         * TaskDatabase.cs: Change Shared to Framework.
1030         * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1031         CaseInsensitiveHashCodeProvider
1032
1033 2005-09-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
1034
1035         * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1036         * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1037         property.
1038
1039 2005-09-09  Marek Sieradzki  <marek.sieradzki@gmail.com>
1040
1041         * InternalLoggerException.cs: Changed protected fields to private.
1042
1043 2005-09-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
1044
1045         * Engine.cs: Added check for globalProperties.
1046         * Project.cs: Added using path from importedProject.FullFileName when
1047         adding UsingTask elements.
1048
1049 2005-09-01  Marek Sieradzki  <marek.sieradzki@gmail.com>
1050
1051         * TaskElement.cs: Changed ReflectedType to PropertyType.
1052         * ChangeType.cs (TransformToString): Changed to pass proper Type to
1053         TemporaryTransform. 
1054
1055 2005-09-01  Marek Sieradzki  <marek.sieradzki@gmail.com>
1056
1057         * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1058         new property.
1059         * BuildProperty.cs: Organized PropertyType enum.
1060         * Engine.cs: Added setting CommandLine PropertyType of global
1061         properties.
1062
1063 2005-08-31  Marek Sieradzki  <marek.sieradzki@gmail.com>
1064
1065         * InvalidProjectFileException.cs: Changed Message property.
1066         * ChangeType.cs (TransformToString): Added separator between items.
1067         * TaskEngineAssemblyResolver.cs: Formatting.
1068
1069 2005-08-31  Marek Sieradzki  <marek.sieradzki@gmail.com>
1070
1071         * DirectoryScanner.cs: Added.
1072         * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1073         * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1074         * Project.cs: Removed Evalute* ().
1075
1076 2005-08-30  Marek Sieradzki  <marek.sieradzki@gmail.com>
1077
1078         * Target.cs: Formatting.
1079         * Expression.cs: Added check if array == null.
1080         * BuildItem.cs: Removed 'break' to remove warnings.
1081         * ConsoleLogger.cs: Formatting.
1082         * Engine.cs: Added handling of default target(s).
1083         * Project.cs: Added handling of default target(s).
1084
1085 2005-08-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
1086
1087         * TaskElement.cs: Added check for parameters.
1088         * Target.cs: Added logging of target skipping.
1089         * Expression.cs: Changed returning object[] to string[], bool[]... in
1090         ToArray ().
1091         * ItemReference.cs: Fixed for item references without custom
1092         separators.
1093         * BatchingImpl.cs: Added real inputs/outputs checking.
1094         * Engine.cs: Moved global properties setting.
1095         * Project.cs: Moved global properties setting.
1096
1097 2005-08-27  Marek Sieradzki  <marek.sieradzki@gmail.com>
1098
1099         * Target.cs: Added checks for target existence.
1100         * BuildItemGroup.cs: Changed to use transforms.
1101         * MetadataReference.cs: Wrote real implementation.
1102         * ItemReference.cs: Rewritten to use transforms.
1103         * BuildItem.cs: Changes for transforms and metadata.
1104         * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1105         formatting.
1106         * Project.cs: Fixed project importing.
1107         * ImportedProject.cs: Changed to throw exceptions instead of returning
1108         bool.
1109
1110 2005-08-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
1111
1112         * Engine.cs: Removed FIXME.
1113         * Project.cs: Splitted ProcessElements and added project importing.
1114         * ImportedProject.cs: Rewritten.
1115
1116 2005-08-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
1117
1118         * TaskElement.cs: Added getting of objects of every type.
1119         * BuildItemGroup.cs: Added ToITaskItemArray ().
1120         * Expression.cs: Implemented part that is not using metadata.
1121         * ItemReference.cs: Implemented parsing item references. Need to fix
1122         validity checking.
1123         * BuildItem.cs: Fixed ToITaskItem ().
1124         * PropertyReference.cs: Implemented parsing property references. This
1125         also needs validity checking.
1126
1127 2005-08-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
1128
1129         * TaskElement.cs: Added Output element handling.
1130         * Target.cs: Cleaned up.
1131         * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1132         * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1133         ItemReference.cs, ChangeType.cs: Added.
1134         * BuildItem.cs: Added creating BuildItem from TaskItem.
1135         * BuildPropertyGroup.cs: Small changes.
1136         * BatchingImpl.cs: Fixed to return real task execution result.
1137         * BuildProperty.cs: Fixed FinalValue property.
1138         * Engine.cs: Reformatted logging.
1139         * Project.cs: Added check to EvaluateProperty.
1140
1141 2005-08-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
1142
1143         * TaskElement.cs: Added part of execution engine.
1144         * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1145         * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1146         * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1147         * BuildItem.cs: Added handling of built-in metadata and referencing
1148         Items by name not FullName.
1149         * BatchingImpl.cs: Added temporary task "batching".
1150         * ConsoleLogger.cs: Added temporary workaround to not show sender.
1151         * Project.cs: Added Evaluate. It will be moved to separate class.
1152
1153 2005-08-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1154
1155         * EventSource.cs, Engine.cs: Added CriticalEvents.
1156         * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1157         Project.cs: Added some support for items.
1158         * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1159
1160 2005-08-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
1161
1162         * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1163         of properties.
1164
1165 2005-08-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
1166
1167         * BatchingImpl.cs: Added.
1168         * BuildWhen.cs, BuildEngine.cs, Target.cs,
1169         BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1170         BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1171         TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1172         GroupingCollection.cs: Updated.
1173
1174 2005-08-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
1175
1176         * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1177         BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1178         BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1179         BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1180         EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1181         GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1182         InternalLoggerException.cs, InvalidProjectFileException.cs,
1183         ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1184         ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1185         TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1186         TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1187         Initial check-in of implementations.
1188
1189 2005-07-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
1190
1191         * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1192         IBuildItemGroupCollection.cs, IBuildProperty.cs,
1193         IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1194         ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1195         IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1196         IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1197         Initial check-in of interfaces and a syntax file, real classes are
1198         changing a lot so I'll wait a moment with checking them in.