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