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