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