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