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