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