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