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