In class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine:
[mono.git] / mcs / class / Microsoft.Build.Engine / Microsoft.Build.BuildEngine / ChangeLog
1 2009-10-08  Ankit Jain  <jankit@novell.com>
2
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.
6
7 2009-10-08  Ankit Jain  <jankit@novell.com>
8
9         * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
10         of the 'Output' element also.
11         * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
12
13 2009-10-07  Ankit Jain  <jankit@novell.com>
14
15         * ConsoleLogger.cs: Mark build as failed, if any project failed.
16
17 2009-10-06  Ankit Jain  <jankit@novell.com>
18
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.
23
24 2009-10-03  Ankit Jain  <jankit@novell.com>
25
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.
29
30 2009-10-02  Ankit Jain  <jankit@novell.com>
31
32         * Expression.cs (Parse): Don't change '/' to '\\', not required.
33
34 2009-10-01  Ankit Jain  <jankit@novell.com>
35
36         * Project.cs (AddImport): Show the correct source file name, when
37         the import is in the main project file.
38
39 2009-10-01  Ankit Jain  <jankit@novell.com>
40
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.
49
50 2009-09-29  Ankit Jain  <jankit@novell.com>
51
52         * GroupingCollection.cs (Evaluate): Mark internal.
53         * Project.cs (AddImport): Only evaluate the properties,
54         till before the import.
55
56 2009-09-29  Ankit Jain  <jankit@novell.com>
57
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 ().
61
62 2009-09-27  Ankit Jain  <jankit@novell.com>
63
64         * ConditionParser.cs: Show the condition being parsed in the
65         exception message.
66
67 2009-09-26  Ankit Jain  <jankit@novell.com>
68
69         * Expression.cs: Allow '-' in item, property and metadata names.
70
71 2009-09-26  Ankit Jain  <jankit@novell.com>
72
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.
83
84 2009-09-26  Ankit Jain  <jankit@novell.com>
85
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.
91
92 2009-09-25  Ankit Jain  <jankit@novell.com>
93
94         * Project.cs (BuildTarget): Handle skipped targets.
95
96 2009-09-25  Ankit Jain  <jankit@novell.com>
97
98         * Project.cs (DoLoad): If a VS2003 project is detected, then throw
99         InvalidProjectFileException with useful error.
100
101 2009-09-24  Ankit Jain  <jankit@novell.com>
102
103         * Project.cs (Load): Emit the .sln.proj file only if env var
104         XBUILD_EMIT_SOLUTION is set.
105
106 2009-09-24  Ankit Jain  <jankit@novell.com>
107
108         * Project.cs (GetKeyForTarget): Make target name, case insensitive.
109
110 2009-09-24  Ankit Jain  <jankit@novell.com>
111
112         * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
113         reserved property.
114
115 2009-09-10  Ankit Jain  <jankit@novell.com>
116
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.
126
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.
131
132         * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
133         as we need separate task items.
134
135 2009-09-01  Ankit Jain  <jankit@novell.com>
136
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.
141
142 2009-09-01  Ankit Jain  <jankit@novell.com>
143
144         * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
145         excludes.
146
147 2009-09-01  Ankit Jain  <jankit@novell.com>
148
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.
157
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.
163
164         * MetadataReference.cs (.ctor): Add a 'original string' param.
165
166 2009-08-29  Ankit Jain  <jankit@novell.com>
167
168         * Expression.cs (ExpressionOptions): New.
169
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.
189
190         * TaskEngine.cs: Throw on unsupported types. Correctly handle
191         properties in case of empty values.
192
193 2009-08-26  Ankit Jain  <jankit@novell.com>
194
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.
199
200 2009-08-26  Ankit Jain  <jankit@novell.com>
201
202         * Utilities.cs (UnescapeFromXml): New. From md.
203         * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
204         of the property element.
205
206 2009-08-26  Ankit Jain  <jankit@novell.com>
207
208         * BuildProperty.cs (ConvertToString): New.
209         (ConvertoToITaskItemArray): New. Parse the property value.
210         * PropertyReference.cs (ConvertToString): Use BuildProperty's
211         ConvertToString.
212         (ConvertoToITaskItemArray): Likewise.   
213
214 2009-08-21  Ankit Jain  <jankit@novell.com>
215
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.
227
228 2009-08-20  Ankit Jain  <jankit@novell.com>
229
230         Fix bug #532264
231         * Project.cs (Load): Add support for loading .sln files.
232
233 2009-08-20  Ankit Jain  <jankit@novell.com>
234
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.
239
240 2009-08-18  Ankit Jain  <jankit@novell.com>
241
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.
246
247 2009-08-09  Miguel de Icaza  <miguel@novell.com>
248
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.
253
254 2009-07-31  Ankit Jain  <jankit@novell.com>
255
256         * ConsoleLogger.cs: Keep track of all the errors and warnings
257         and show them at the end.
258
259 2009-07-31  Ankit Jain  <jankit@novell.com>
260
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.
264
265 2009-07-30  Ankit Jain  <jankit@novell.com>
266
267         * Engine.cs (.ctor): Set default BinPath. Currently this assumes
268         v2.0, this will change when multi-targeting lands.
269
270 2009-07-30  Ankit Jain  <jankit@novell.com>
271
272         * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
273         'MSBuildProjectName' properties.
274
275 2009-07-28  Ankit Jain  <jankit@novell.com>
276
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.
280
281 2009-07-23  Ankit Jain  <jankit@novell.com>
282
283         Fix bug #511370.
284         * Project.cs (ExtensionsPath): New.
285         (InitializeProperties): Set "MSBuildExtensionsPath" property.
286
287 2009-06-12  Ankit Jain  <jankit@novell.com>
288
289         Fix bug #512535.
290         * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
291         itemref is allowed if the prev/next element is ";".
292
293 2009-06-12  Ankit Jain  <jankit@novell.com>
294
295         * Utilities.cs (FromMSBuildPath): Return null if the path contains
296         "drive:" only on windows.
297
298 2009-06-07  Ankit Jain  <jankit@novell.com>
299
300         * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
301         the metadata.
302
303 2009-05-29  Ankit Jain  <jankit@novell.com>
304
305         Correctly handle global properties. Correctly log
306         project/build events.
307
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.
327
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.
341
342 2009-05-29  Ankit Jain  <jankit@novell.com>
343
344         * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
345         (HasTrailingSlash): New.
346
347 2009-05-12  Ankit Jain  <jankit@novell.com>
348
349         * Project.cs (.ctor): Init timeOfLastDirty.
350
351 2009-05-05  Miguel de Icaza  <miguel@novell.com>
352
353         * Contribution from Martin Brenn to fix #498154.
354
355 2009-04-27  Ankit Jain  <jankit@novell.com>
356
357         Fix bug #497839.
358         * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
359         one passed as argument.
360
361 2009-04-27  Ankit Jain  <jankit@novell.com>
362
363         * TaskEngine.cs (Prepare): Emit a useful error message property value
364         can't be converted to required type.
365
366 2009-04-27  Ankit Jain  <jankit@novell.com>
367
368         * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
369         as valid true values for bool, and corresponding for false.
370
371 2009-03-27  Jonathan Chambers  <joncham@gmail.com>
372
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.
378
379 2009-03-26  Jonathan Chambers  <joncham@gmail.com>
380
381         * TaskDatabase.cs (RegisterTask): Search for class by name
382         if task was not found using GetType (which uses namespace). 
383
384 2009-02-26  Ankit Jain  <jankit@novell.com>
385
386         * Target.cs: Handle target with no tasks. Log errors.
387
388 2009-02-24  Ankit Jain  <jankit@novell.com>
389
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.
401
402 2009-02-23  Ankit Jain  <jankit@novell.com>
403
404         * BuildItem.cs (AddMetadata): Allow overwriting older values.
405
406 2009-02-22  Ankit Jain  <jankit@novell.com>
407
408         * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
409         instead of XmlElement. Eg. XmlComment
410
411 2009-02-21  Ankit Jain  <jankit@novell.com>
412
413         * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
414         * Project.cs (Load): Use FromMSBuildPath on the path.
415         (InitializeProperties): Set "MSBuildToolsPath" also.
416
417 2009-02-20  Ankit Jain  <jankit@novell.com>
418
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.
426
427 2009-02-12  Jonathan Chambers  <joncham@gmail.com>
428
429         * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
430         no XmlElement.InnerText. This allows properties to be additional 
431         xml elements.
432
433 2009-02-01  Ankit Jain  <jankit@novell.com>
434
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 .
443
444 2009-01-31  Ankit Jain  <jankit@novell.com>
445
446         * BatchingImpl.cs: Split into ..
447         * BatchingImplBase.cs: .. this,
448         * TaskBatchingImpl.cs: .. this ..
449         * TargetBatchingImpl.cs: .. and this. Implement target batching here.
450
451         * Target.cs (DoBuild): Use TargetBatchingImpl for building.
452         (Log*): Move to TargetBatchingImpl .
453         (BuildTasks): New.
454         (Engine): New.
455
456 2009-01-30  Ankit Jain  <jankit@novell.com>
457
458         * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
459         arrays.
460
461 2009-01-29  Ankit Jain  <jankit@novell.com>
462
463         * BuildItem.cs (child_items): Change type from BuildItemGroup to
464         List<BuildItem>.
465         (HasParent): Rename to ..
466         (HasParentItem): .. this.
467         (ParentItemGroup): Add setter.
468
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.
475
476 2009-01-06  Ankit Jain  <jankit@novell.com>
477
478         * Project.cs (Build): Honor InitialTargets list.
479
480 2009-01-06  Ankit Jain  <jankit@novell.com>
481
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.
486
487 2009-01-06  Ankit Jain  <jankit@novell.com>
488
489         * Project.cs (Build): Correctly handle null targetNames argument.
490
491 2009-01-06  Ankit Jain  <jankit@novell.com>
492
493         * Engine.cs (LogProjectStarted): Add a null check.
494
495 2009-01-01  Ankit Jain  <jankit@novell.com>
496
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.
517
518 2008-12-30  Ankit Jain  <jankit@novell.com>
519
520         * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
521         metadata values for unqualified references.
522         (BuildItemGroupToITaskItemArray): Rename to ..
523         (BuildItemGroupToITaskItems): .. this.
524         (HasTaskItem): New.
525
526 2008-12-18  Ankit Jain  <jankit@novell.com>
527
528         * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
529
530 2008-12-17  Ankit Jain  <jankit@novell.com>
531
532         * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
533         only one instance of unique metadata value is required.
534
535 2008-11-22  Ankit Jain  <jankit@novell.com>
536
537         * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
538         MetadataReference.
539         * MetadataReference.cs (ConvertToITaskItemArray): New.
540         * Project.cs (GetAllItemGroups): New.
541
542 2008-11-21  Ankit Jain  <jankit@novell.com>
543
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.
556
557 2008-10-01  Ankit Jain  <jankit@novell.com>
558
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.
564
565 2008-09-24  Ankit Jain  <jankit@novell.com>
566
567         * Engine.cs: Add argument checks.
568         * Project.cs: Likewise.
569
570 2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
571
572         * Project.cs (Build): Add outputs to targetOutputs.
573
574 2007-03-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
575
576         * ExpressionCollection.cs (ConvertToArray): Simplify.
577
578 2007-03-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
579
580         * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
581         simplified. It still needs tests and refactoring.
582
583 2007-02-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
584
585         * BuildEngine.cs (BuildProjectFile): Don't crash on null
586         globalProperties.
587
588         * Target.cs: Add Outputs property.
589
590 2007-02-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
591
592         * Target.cs (Build): Split to GetDependencies () and BuildDependencies
593         (). Support condition.
594         
595         * BatchingImpl.cs (BatchBuildTask): Simplify.
596
597 2007-02-18  Marek Sieradzki  <marek.sieradzki@gmail.com>
598
599         * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
600         Simplified.
601
602         * ConditionFunctionExpression.cs: Removed warnings.
603
604         * BuildTask.cs (Execute): Write exceptions to std err (they should be
605         logged but it's better than swallowing).
606
607 2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
608
609         * ConditionTokenizer.cs: Add Putback ().
610
611         * ConditionParser.cs: Add parsing of functions.
612
613         * ConditionFunctionExpression.cs: Add.
614
615 2007-02-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
616
617         * BuildPropertyGroup (SetProperty): Throw an exception when trying to
618         set property in persisted property group.
619
620 2007-01-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
621
622         * BuildTask.cs (Execute): Log errors that happen when invoking ITask
623         .ctor.
624
625         * ConsoleLogger.cs (TargetFinishedHandler)
626         (TaskFinishedHandler): Increment error count.
627
628 2007-01-28  Marek Sieradzki  <marek.sieradzki@gmail.com>
629
630         * BuildItem.cs (RemoveMetadata): Remove from XML.
631         (SetMetadata): Trigger project reevaluation.
632
633 2007-01-26  Marek Sieradzki  <marek.sieradzki@gmail.com>
634
635         * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
636         properties.
637
638 2007-01-23  Marek Sieradzki  <marek.sieradzki@gmail.com>
639
640         * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
641         TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
642         BatchingImpl.cs, BuildProperty.cs: Track API changes.
643
644         * Expression.cs (Parse): Added allowItems parameter and made regexes
645         static.
646
647         * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
648         will try to import a.ext when given a.EXT.
649
650 2007-01-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
651
652         * BuildItemGroup.cs: Store information saying what is the last item
653         group that contains build item name.
654
655         * Project.cs (Build): Pass empty array (build default targets).
656
657 2007-01-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
658
659         * Token.cs: Commented Transform and LiteralSubExpression and added
660         FunctionName token.
661
662         * ConditionParser.cs: Removed redundant casts, rewrote
663         ParseFactorExpression () and added parsing of '!'.
664
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.
668
669 2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
670
671         * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
672         from XML. (not to escape items that have parents twice).
673
674 2007-01-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
675
676         * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
677         (Project): Renamed to ParentProject.
678
679         * BuildItem.cs (ctor)
680         (CopyCustomMetadata): Add null check.
681
682         * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
683         (RemoveProperty): Added null check.
684
685         * TargetCollection.cs (RemoveTarget): Added null check.
686
687         * Engine.cs (UnloadProject): Added null check.
688
689         * GroupingCollection.cs (Remove): Check if removed group belongs to
690         current project.
691
692         * Project.cs (AddNewItem): Implemented.
693         (RemoveItem): Reorganized.
694         (SetProjectExtensions): Added null check.
695
696 2007-01-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
697
698         * BuildItemGroup.cs (Detach): Added.
699         (RemoveItem)
700         (RemoveItemAt): Used Detach ().
701
702         * BuildItem.cs: Made FromXml and HasParent internal and added
703         ParentItem and ParentItemGroup properties (internal).
704         (Detach): Added.
705
706         * GroupingCollection.cs (Remove): Used Detach ().
707
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.
717
718 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
719
720         * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
721         change but just mark that it needs it.
722
723         * Project.cs: Reevaluate when it needs reevaluation and one of
724         Evaluated* properties is used.
725
726 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
727
728         * Target.cs: Throw an exception when <OnError> is not last element in
729         target.
730
731         * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
732
733         * TargetCollection.cs: If a target is already there replace it with
734         new target.
735
736         * BuildProperty.cs: Added XmlElement property.
737
738 2007-01-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
739
740         * ImportCollection.cs: Don't add imports that are already added.
741
742         * BuildItemGroup.cs: MonoTODOs.
743
744         * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
745         condition can't be evaluated to bool.
746
747         * BuildPropertyGroup.cs (Evaluate): Simplify.
748
749 2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
750
751         * BuildWhen.cs: Moved BindToXml () code to ctor.
752
753         * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
754         property needed for removing groups.
755
756         * Engine.cs: Added StartBuild () that logs build start when Build ()
757         was first called.
758
759         * GroupingCollection.cs: Added Remove () for item and property groups.
760
761         * Project.cs (AddNewImport): Implemented.
762         (AddNewItemGroup): Implemented.
763         (AddNewPropertyGroup): Implemented.
764         (AddNewUsingTaskFromAssemblyFile): Implemented.
765         (AddNewUsingTaskFromAssemblyName): Implemented.
766         (RemoveItemGroup): Implemented.
767         (RemovePropertyGroup): Implemented.
768
769 2007-01-10  Marek Sieradzki  <marek.sieradzki@gmail.com>
770
771         * BuildItemGroup.cs (Clear): Remove from XML.
772
773         * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
774         to Project.EvaluatedProperties.
775         (Clear): Remove from XML.
776
777 2007-01-09  Marek Sieradzki  <marek.sieradzki@gmail.com>
778
779         * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
780         reserved property.
781
782 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
783
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.
787
788 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
789
790         * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
791         and prepend relative directory of importing project to full path of
792         imported project.
793
794 2007-01-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
795
796         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
797         BuildItemGroupCollection.cs, Project.cs: Track API changes.
798
799         * GroupingCollection.cs: Now it needs Project reference so added it.
800
801         * BuildTask.cs: Formatting.
802
803         * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
804
805         * ConditionParser.cs (ParseAndEvaluate): Added.
806
807         * BuildItem.cs: Changed exception message.
808
809 2007-01-02  Marek Sieradzki  <marek.sieradzki@gmail.com>
810
811         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
812         BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
813         GroupingCollection doesn't need Project reference.
814
815         * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
816
817         * BuildItemGroup.cs: Added new readOnly parameter to ctor.
818         (Project.EvaluatedItems is a read only item group.)
819         (ReplaceWith): Added.
820
821         * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
822         global property group causes reevaluation of its project.
823
824         * Project.cs: ProcessXml () is internal and can be "safely" invoked by
825         other classes.
826
827         * OldExpression.cs: Removed.
828
829         * BuildProperty.cs (Evaluate): Simplified.
830
831         * ChangeType.cs (TemporaryTransform): Simplified.
832
833         * BuildItem.cs: There are now 3 types of build items: from XML, having
834         parent from XML, virtual. Added SplitParentItem ().
835
836 2006-12-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
837
838         * Utilities.cs: Added Unescape ().
839
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).
843
844         * Expression.cs (CopyToExpressionList): Unescape strings.
845
846 2006-12-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
847
848         * Target.cs (ctor): Added ImportedProject argument and removed
849         set_IsImported.
850         (AddNewTask): Implemented.
851
852         * TargetCollection.cs (AddNewTarget): Implemented.
853
854         * Project.cs: Track API changes.
855
856 2006-12-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
857
858         * Target.cs (Build): Don't throw anything in case of error, just
859         return false.
860
861         * BuildItemGroup.cs (set_Condition): Throw an exception if group is
862         not from XML.
863
864         * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
865         SetMetadata ().
866
867         * BuildProperty.cs (ToString): Throw an exception if property is not
868         from XML.
869         (op_Explicit): Added a null check.
870
871         * Engine.cs: Better error message.
872
873         * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
874         IndexOutOfRangeException.
875
876         * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
877         (MarkProjectAsDirty): Set time.
878
879 2006-12-18  Marek Sieradzki  <marek.sieradzki@gmail.com>
880
881         * BuildItemGroup.cs (Clone): Throw exception.
882
883         * Project.cs (Load): Throw InvalidProjectFileException if anything
884         goes wrong.
885
886 2006-12-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
887
888         * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
889         and ConvertToITaskItemArray ().
890
891 2006-12-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
892
893         * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
894         classes that were public in Beta 2 and aren't used.
895
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.
899
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.
903
904         * ConditionRelationalExpression.cs: Formatting.
905
906         * OldExpression.cs: Commented everything.
907
908         * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
909         parsing to Expression.
910
911         * BuildItem.cs: Check if project is from XML in set_Condition and
912         set_Exclude.
913
914         * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
915         Project.ctor.
916
917         * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
918         can evaluate expression in CanEvaluateToBool ().
919
920 2006-12-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
921
922         * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
923         which item group is imported.
924
925         * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
926
927 2006-12-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
928
929         * BuildWhen.cs, BuildPropertyGroupCollection.cs,
930         BuildItemGroupCollection.cs: Little changes related to
931         GroupingCollection.
932
933         * ImportCollection.cs: Use GroupingCollection not an internal list.
934
935         * Import.cs (Evaluate): Split to functions and check if
936         EvaluatedProjectPath is empty.
937
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.
941
942 2006-12-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
943
944         * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
945         BuildItemGroup> not IDictionary.
946
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.
950
951         * Project.cs (Build): Don't throw an exception just return false.
952         (GetEvaluatedProperty): Avoid NullReferenceException.
953         (SetProjectExtensions): Implemented.
954
955 2006-12-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
956
957         * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
958
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.
964
965 2006-12-07  Marek Sieradzki  <marek.sieradzki@gmail.com>
966
967         * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
968
969         * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
970         (UsingTask[] array, int index)
971
972         * TaskEngine.cs: Reformatted PublishOutput () and added copying of
973         items to Project.EvaluatedItems in PublishItemGroup ();
974
975         * BuildItemGroup.cs: Added [MonoTODO].
976
977         * UsingTask.cs: Used expression for AssemblyFile to get around
978         problems with '\' and '/'.
979
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.
984
985         * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
986         FromXml () instead of null checks.
987         (SetProperty): Escape propertyValue when it is literal.
988
989         * BuildProperty.cs: Changed exception message.
990
991         * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
992         properties.
993         (GetProjectExtensions): Implemented.
994
995 2006-12-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
996
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
1009
1010 2006-12-04  Marek Sieradzki  <marek.sieradzki@gmail.com>
1011
1012         * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1013         throw an exception).
1014         * BuildItemGroupCollection.cs: Changed exception types.
1015
1016 2006-10-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1017
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.
1028
1029 2006-10-08  Marek Sieradzki  <marek.sieradzki@gmail.com>
1030
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.
1041
1042 2006-10-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
1043
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.
1049
1050 2006-09-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
1051
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.
1060
1061 2006-09-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
1062
1063         * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1064         (like comments)
1065         * BuildItemGroup.cs: Change return to continue.
1066
1067 2006-09-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
1068
1069         * ConditionParser.cs: Copyright note.
1070         * ExpressionCollection.cs: Fixed arrays passing.
1071
1072 2006-08-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
1073
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.
1078
1079 2006-06-25  Marek Sieradzki  <marek.sieradzki@gmail.com>
1080
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.
1099
1100 2006-06-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
1101
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.
1108
1109 2006-06-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1110
1111         * UsingTask.cs: Changed properties to return null on empty attribute.
1112         * UsingTaskCollection.cs: Added object to SyncRoot.
1113         * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1114
1115 2006-06-02  Marek Sieradzki  <marek.sieradzki@gmail.com>
1116
1117         * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1118         BuildPropertyGroupCollection.cs: Fixed to match the tests.
1119
1120 2006-05-27  Marek Sieradzki  <marek.sieradzki@gmail.com>
1121
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.
1127
1128 2006-05-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
1129
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.
1140
1141 2006-05-05  Marek Sieradzki  <marek.sieradzki@gmail.com>
1142
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.
1148
1149 2006-05-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
1150
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.
1160
1161 2006-04-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
1162
1163         * ImportedProject.cs: Removed warning.
1164         * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1165         default tasks.
1166
1167 2006-04-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
1168
1169         * Project.cs: Removed unnecessary variable.
1170         * Engine.cs: Added fixme.
1171
1172 2006-04-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1173
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>
1178
1179         * BuildTask.cs: Removed unnecessary variable.
1180         * Engine.cs: Added logging of the build start.
1181         * Project.cs: Removed unnecessary variable.
1182
1183 2006-04-07  Marek Sieradzki  <marek.sieradzki@gmail.com>
1184
1185         * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1186
1187 2006-03-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
1188
1189         * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1190
1191 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
1192         
1193         * BuildItem.cs: Fix typo?
1194
1195 2006-03-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
1196
1197         * InternalLoggerException.cs, InvalidProjectFileException.cs,
1198         Engine.cs, Project.cs: Coding style fixes.
1199
1200 2006-03-29  Crestez Leonard  <cdleonard@gmail.com>
1201         
1202         * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1203
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.
1210
1211 2006-03-28  Marek Sieradzki  <marek.sieradzki@gmail.com>
1212
1213         * UsingTask.cs: Formatting changes.
1214
1215 2006-03-27  Crestez Leonard  <cdleonard@gmail.com>
1216
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>
1226
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.
1234
1235 2006-03-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
1236
1237         * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1238
1239 2006-03-18  Marek Sieradzki  <marek.sieradzki@gmail.com> 
1240
1241         * Engine.cs: API cleanup.
1242
1243 2006-03-18  Crestez Leonard  <cdleonard@gmail.com>
1244
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> 
1252
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.
1263
1264 2006-02-26  Marek Sieradzki  <marek.sieradzki@gmail.com>
1265
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.
1272
1273 2006-02-26  Marek Sieradzki  <marek.sieradzki@gmail.com> 
1274
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 ().
1301
1302 2006-02-24  Marek Sieradzki <marek.sieradzki@gmail.com> 
1303
1304         * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1305         API.
1306
1307 2005-09-22  Marek Sieradzki  <marek.sieradzki@gmail.com>
1308
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.
1328
1329 2005-09-21  Marek Sieradzki  <marek.sieradzki@gmail.com>
1330
1331         * TaskDatabase.cs: Change Shared to Framework.
1332         * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1333         CaseInsensitiveHashCodeProvider
1334
1335 2005-09-11  Marek Sieradzki  <marek.sieradzki@gmail.com>
1336
1337         * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1338         * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1339         property.
1340
1341 2005-09-09  Marek Sieradzki  <marek.sieradzki@gmail.com>
1342
1343         * InternalLoggerException.cs: Changed protected fields to private.
1344
1345 2005-09-03  Marek Sieradzki  <marek.sieradzki@gmail.com>
1346
1347         * Engine.cs: Added check for globalProperties.
1348         * Project.cs: Added using path from importedProject.FullFileName when
1349         adding UsingTask elements.
1350
1351 2005-09-01  Marek Sieradzki  <marek.sieradzki@gmail.com>
1352
1353         * TaskElement.cs: Changed ReflectedType to PropertyType.
1354         * ChangeType.cs (TransformToString): Changed to pass proper Type to
1355         TemporaryTransform. 
1356
1357 2005-09-01  Marek Sieradzki  <marek.sieradzki@gmail.com>
1358
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.
1364
1365 2005-08-31  Marek Sieradzki  <marek.sieradzki@gmail.com>
1366
1367         * InvalidProjectFileException.cs: Changed Message property.
1368         * ChangeType.cs (TransformToString): Added separator between items.
1369         * TaskEngineAssemblyResolver.cs: Formatting.
1370
1371 2005-08-31  Marek Sieradzki  <marek.sieradzki@gmail.com>
1372
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* ().
1377
1378 2005-08-30  Marek Sieradzki  <marek.sieradzki@gmail.com>
1379
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).
1386
1387 2005-08-29  Marek Sieradzki  <marek.sieradzki@gmail.com>
1388
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.
1398
1399 2005-08-27  Marek Sieradzki  <marek.sieradzki@gmail.com>
1400
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.
1411
1412 2005-08-24  Marek Sieradzki  <marek.sieradzki@gmail.com>
1413
1414         * Engine.cs: Removed FIXME.
1415         * Project.cs: Splitted ProcessElements and added project importing.
1416         * ImportedProject.cs: Rewritten.
1417
1418 2005-08-20  Marek Sieradzki  <marek.sieradzki@gmail.com>
1419
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.
1428
1429 2005-08-19  Marek Sieradzki  <marek.sieradzki@gmail.com>
1430
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.
1442
1443 2005-08-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
1444
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.
1454
1455 2005-08-14  Marek Sieradzki  <marek.sieradzki@gmail.com>
1456
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.
1461
1462 2005-08-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
1463
1464         * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1465         of properties.
1466
1467 2005-08-12  Marek Sieradzki  <marek.sieradzki@gmail.com>
1468
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.
1475
1476 2005-08-06  Marek Sieradzki  <marek.sieradzki@gmail.com>
1477
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.
1490
1491 2005-07-16  Marek Sieradzki  <marek.sieradzki@gmail.com>
1492
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.