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