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