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