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