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