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