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