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