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