1 2009-02-23 Ankit Jain <jankit@novell.com>
3 * BuildItem.cs (AddMetadata): Allow overwriting older values.
5 2009-02-22 Ankit Jain <jankit@novell.com>
7 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
8 instead of XmlElement. Eg. XmlComment
10 2009-02-21 Ankit Jain <jankit@novell.com>
12 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
13 * Project.cs (Load): Use FromMSBuildPath on the path.
14 (InitializeProperties): Set "MSBuildToolsPath" also.
16 2009-02-20 Ankit Jain <jankit@novell.com>
19 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
20 transforms) in conditions.
21 * ConditionParser.cs: Parse unquoted item, property references.
22 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
23 * Token.cs (Token.ToString): Override.
24 (TokenType.Transform): Uncomment.
26 2009-02-12 Jonathan Chambers <joncham@gmail.com>
28 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
29 no XmlElement.InnerText. This allows properties to be additional
32 2009-02-01 Ankit Jain <jankit@novell.com>
34 * BuildEngine.cs (BuildProjectFile): Use
35 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
36 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
37 built. Move logging of project start/finish to ..
38 * Project.cs: .. here. Build a target only if hasn't been built already.
39 Keep track of target outputs, and return those even if an already built
40 target has been invoked again.
41 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
43 2009-01-31 Ankit Jain <jankit@novell.com>
45 * BatchingImpl.cs: Split into ..
46 * BatchingImplBase.cs: .. this,
47 * TaskBatchingImpl.cs: .. this ..
48 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
50 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
51 (Log*): Move to TargetBatchingImpl .
55 2009-01-30 Ankit Jain <jankit@novell.com>
57 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
60 2009-01-29 Ankit Jain <jankit@novell.com>
62 * BuildItem.cs (child_items): Change type from BuildItemGroup to
64 (HasParent): Rename to ..
65 (HasParentItem): .. this.
66 (ParentItemGroup): Add setter.
68 * BuildItemGroup.cs (.ctor): Add overload with @project param.
70 (AddItem): Correctly set the ParentItemGroup for new build items.
71 (ParentProject): Add setter.
72 * Project.cs: Set the project for new BuildItemGroup instances.
73 * TaskEngine.cs (PublishItemGroup): Likewise.
75 2009-01-06 Ankit Jain <jankit@novell.com>
77 * Project.cs (Build): Honor InitialTargets list.
79 2009-01-06 Ankit Jain <jankit@novell.com>
81 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
82 the property type also.
83 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
86 2009-01-06 Ankit Jain <jankit@novell.com>
88 * Project.cs (Build): Correctly handle null targetNames argument.
90 2009-01-06 Ankit Jain <jankit@novell.com>
92 * Engine.cs (LogProjectStarted): Add a null check.
94 2009-01-01 Ankit Jain <jankit@novell.com>
96 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
97 * ChangeType (ToBuildItemGroup): Add 'split' param.
99 * Expression.cs (Parse): Add a new overload with a 'split' param.
100 * ExpressionCollection.cs (Add): Add new overload for IReference,
101 remove the ones for Item/Metadata/PropertyReference.
102 (ConvertToArray): Implement correctly.
103 (ConvertToString): Track api changes.
104 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
105 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
106 (AddItemsToArray): New.
107 (ConvertToITaskItemArrayFromString): Refactor a bit.
108 (ThrowCantConcatError): New.
109 * ItemReference.cs: Update.
110 * MetadataReference.cs: Update.
111 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
113 * BuildPropertyGroup.cs: Track api changes.
114 * TaskEngine.cs (PublishOutput): Improve exception message.
115 * Project.cs (DoLoad): Improve exception message. Add a null check.
117 2008-12-30 Ankit Jain <jankit@novell.com>
119 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
120 metadata values for unqualified references.
121 (BuildItemGroupToITaskItemArray): Rename to ..
122 (BuildItemGroupToITaskItems): .. this.
125 2008-12-18 Ankit Jain <jankit@novell.com>
127 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
129 2008-12-17 Ankit Jain <jankit@novell.com>
131 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
132 only one instance of unique metadata value is required.
134 2008-11-22 Ankit Jain <jankit@novell.com>
136 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
138 * MetadataReference.cs (ConvertToITaskItemArray): New.
139 * Project.cs (GetAllItemGroups): New.
141 2008-11-21 Ankit Jain <jankit@novell.com>
143 * BatchingImpl.cs: Add task batching implementation.
144 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
145 * ExpressionCollection.cs (Count): New.
146 (ConvertToString): Handle MetadataReference.
147 * ItemReference.cs (ConvertToString):
148 (ConvertToITaskItemArray): Use the batching api.
150 * MetadataReference.cs (ConvertToString): New.
152 * Project.cs: Add api for accessing batched items and metadata.
153 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
156 2008-10-01 Ankit Jain <jankit@novell.com>
158 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
159 (BuildProjectFile): If filename is null (project.LoadXml) then use
161 * BuildTask.cs (InitializeTask): Track api change.
162 * Expression.cs (Parse): Skip empty entries in the expression.
164 2008-09-24 Ankit Jain <jankit@novell.com>
166 * Engine.cs: Add argument checks.
167 * Project.cs: Likewise.
169 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
171 * Project.cs (Build): Add outputs to targetOutputs.
173 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
175 * ExpressionCollection.cs (ConvertToArray): Simplify.
177 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
179 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
180 simplified. It still needs tests and refactoring.
182 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
184 * BuildEngine.cs (BuildProjectFile): Don't crash on null
187 * Target.cs: Add Outputs property.
189 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
191 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
192 (). Support condition.
194 * BatchingImpl.cs (BatchBuildTask): Simplify.
196 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
198 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
201 * ConditionFunctionExpression.cs: Removed warnings.
203 * BuildTask.cs (Execute): Write exceptions to std err (they should be
204 logged but it's better than swallowing).
206 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
208 * ConditionTokenizer.cs: Add Putback ().
210 * ConditionParser.cs: Add parsing of functions.
212 * ConditionFunctionExpression.cs: Add.
214 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
216 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
217 set property in persisted property group.
219 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
221 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
224 * ConsoleLogger.cs (TargetFinishedHandler)
225 (TaskFinishedHandler): Increment error count.
227 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
229 * BuildItem.cs (RemoveMetadata): Remove from XML.
230 (SetMetadata): Trigger project reevaluation.
232 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
234 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
237 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
239 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
240 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
241 BatchingImpl.cs, BuildProperty.cs: Track API changes.
243 * Expression.cs (Parse): Added allowItems parameter and made regexes
246 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
247 will try to import a.ext when given a.EXT.
249 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
251 * BuildItemGroup.cs: Store information saying what is the last item
252 group that contains build item name.
254 * Project.cs (Build): Pass empty array (build default targets).
256 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
258 * Token.cs: Commented Transform and LiteralSubExpression and added
261 * ConditionParser.cs: Removed redundant casts, rewrote
262 ParseFactorExpression () and added parsing of '!'.
264 * ConditionTokenizer.cs: Always skip whitespaces when getting next
265 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
266 Moved ReadChar () in front of all ifs.
268 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
270 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
271 from XML. (not to escape items that have parents twice).
273 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
275 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
276 (Project): Renamed to ParentProject.
278 * BuildItem.cs (ctor)
279 (CopyCustomMetadata): Add null check.
281 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
282 (RemoveProperty): Added null check.
284 * TargetCollection.cs (RemoveTarget): Added null check.
286 * Engine.cs (UnloadProject): Added null check.
288 * GroupingCollection.cs (Remove): Check if removed group belongs to
291 * Project.cs (AddNewItem): Implemented.
292 (RemoveItem): Reorganized.
293 (SetProjectExtensions): Added null check.
295 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
297 * BuildItemGroup.cs (Detach): Added.
299 (RemoveItemAt): Used Detach ().
301 * BuildItem.cs: Made FromXml and HasParent internal and added
302 ParentItem and ParentItemGroup properties (internal).
305 * GroupingCollection.cs (Remove): Used Detach ().
307 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
309 (GetEvaluatedItemsByNameIgnoringCondition)
310 (GetEvaluatedItemsByName)
311 (GetEvaluatedProperty): Reevaluate if needed.
313 (RemoveAllItemGroups)
314 (RemoveAllPropertyGroups): Implemented.
315 (DoLoad): Added closing of TextReader.
317 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
319 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
320 change but just mark that it needs it.
322 * Project.cs: Reevaluate when it needs reevaluation and one of
323 Evaluated* properties is used.
325 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
327 * Target.cs: Throw an exception when <OnError> is not last element in
330 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
332 * TargetCollection.cs: If a target is already there replace it with
335 * BuildProperty.cs: Added XmlElement property.
337 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
339 * ImportCollection.cs: Don't add imports that are already added.
341 * BuildItemGroup.cs: MonoTODOs.
343 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
344 condition can't be evaluated to bool.
346 * BuildPropertyGroup.cs (Evaluate): Simplify.
348 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
350 * BuildWhen.cs: Moved BindToXml () code to ctor.
352 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
353 property needed for removing groups.
355 * Engine.cs: Added StartBuild () that logs build start when Build ()
358 * GroupingCollection.cs: Added Remove () for item and property groups.
360 * Project.cs (AddNewImport): Implemented.
361 (AddNewItemGroup): Implemented.
362 (AddNewPropertyGroup): Implemented.
363 (AddNewUsingTaskFromAssemblyFile): Implemented.
364 (AddNewUsingTaskFromAssemblyName): Implemented.
365 (RemoveItemGroup): Implemented.
366 (RemovePropertyGroup): Implemented.
368 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
370 * BuildItemGroup.cs (Clear): Remove from XML.
372 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
373 to Project.EvaluatedProperties.
374 (Clear): Remove from XML.
376 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
378 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
381 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
383 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
384 Add () calls when processing a project from Import and
385 evaluate_iterator for evaluation.
387 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
389 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
390 and prepend relative directory of importing project to full path of
393 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
395 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
396 BuildItemGroupCollection.cs, Project.cs: Track API changes.
398 * GroupingCollection.cs: Now it needs Project reference so added it.
400 * BuildTask.cs: Formatting.
402 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
404 * ConditionParser.cs (ParseAndEvaluate): Added.
406 * BuildItem.cs: Changed exception message.
408 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
410 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
411 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
412 GroupingCollection doesn't need Project reference.
414 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
416 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
417 (Project.EvaluatedItems is a read only item group.)
418 (ReplaceWith): Added.
420 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
421 global property group causes reevaluation of its project.
423 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
426 * OldExpression.cs: Removed.
428 * BuildProperty.cs (Evaluate): Simplified.
430 * ChangeType.cs (TemporaryTransform): Simplified.
432 * BuildItem.cs: There are now 3 types of build items: from XML, having
433 parent from XML, virtual. Added SplitParentItem ().
435 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
437 * Utilities.cs: Added Unescape ().
439 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
440 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
441 groups (at the moment just unescape).
443 * Expression.cs (CopyToExpressionList): Unescape strings.
445 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
447 * Target.cs (ctor): Added ImportedProject argument and removed
449 (AddNewTask): Implemented.
451 * TargetCollection.cs (AddNewTarget): Implemented.
453 * Project.cs: Track API changes.
455 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
457 * Target.cs (Build): Don't throw anything in case of error, just
460 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
463 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
466 * BuildProperty.cs (ToString): Throw an exception if property is not
468 (op_Explicit): Added a null check.
470 * Engine.cs: Better error message.
472 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
473 IndexOutOfRangeException.
475 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
476 (MarkProjectAsDirty): Set time.
478 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
480 * BuildItemGroup.cs (Clone): Throw exception.
482 * Project.cs (Load): Throw InvalidProjectFileException if anything
485 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
487 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
488 and ConvertToITaskItemArray ().
490 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
492 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
493 classes that were public in Beta 2 and aren't used.
495 * Expression.cs: Added replacement for parsing expressions char by
496 char. It uses regexes to find item/property/metadata references in
499 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
500 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
501 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
503 * ConditionRelationalExpression.cs: Formatting.
505 * OldExpression.cs: Commented everything.
507 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
508 parsing to Expression.
510 * BuildItem.cs: Check if project is from XML in set_Condition and
513 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
516 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
517 can evaluate expression in CanEvaluateToBool ().
519 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
521 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
522 which item group is imported.
524 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
526 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
528 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
529 BuildItemGroupCollection.cs: Little changes related to
532 * ImportCollection.cs: Use GroupingCollection not an internal list.
534 * Import.cs (Evaluate): Split to functions and check if
535 EvaluatedProjectPath is empty.
537 * GroupingCollection.cs, Project.cs: Move evaluation to
538 GroupingCollection. Change algorithm to use 2 passes: first for property
539 groups and imports and second for item groups.
541 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
543 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
544 BuildItemGroup> not IDictionary.
546 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
547 evaluated to false because we want to add every item to
548 Project.EvaluatedItemsByNameIgnoringCondition.
550 * Project.cs (Build): Don't throw an exception just return false.
551 (GetEvaluatedProperty): Avoid NullReferenceException.
552 (SetProjectExtensions): Implemented.
554 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
556 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
558 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
559 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
560 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
562 * ImportCollection.cs: Added a note.
564 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
566 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
568 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
569 (UsingTask[] array, int index)
571 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
572 items to Project.EvaluatedItems in PublishItemGroup ();
574 * BuildItemGroup.cs: Added [MonoTODO].
576 * UsingTask.cs: Used expression for AssemblyFile to get around
577 problems with '\' and '/'.
579 * BuildItem.cs (ctor): Added null checks.
580 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
581 (SetMetadata): Don't escape evaluatedMetadata and escape
582 unevaluatedMetadata only when treatPropertyValueAsLiteral.
584 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
585 FromXml () instead of null checks.
586 (SetProperty): Escape propertyValue when it is literal.
588 * BuildProperty.cs: Changed exception message.
590 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
592 (GetProjectExtensions): Implemented.
594 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
596 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
597 GetParameterValue (), use expressions in ContinueOnError.
598 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
599 instead of InvalidOperationException ().
600 * ImportCollection.cs: Implement CopyTo ().
601 * Target.cs: Remove redundant variables (XmlAttributes), return
602 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
603 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
604 * Import.cs: Throw an exception when file does not exist.
605 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
606 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
607 need to treat item as a token probably
609 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
611 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
613 * BuildItemGroupCollection.cs: Changed exception types.
615 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
617 * Engine.cs: Removed redundant cast.
619 * UsingTaskCollection.cs:
623 * TargetCollection.cs: Comment unused variable.
624 * ConditionTokenizer.cs: Simplified checking if current token is a
626 * Target.cs: Removed old code.
628 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
630 * Target.cs: Changed "" to String.Empty.
631 * TaskEngine.cs: Don't try to convert a parameter to specific type if
632 string was evaluated to String.Empty.
633 * InternalLoggerException.cs:
634 * InvalidProjectFileException.cs: Added LinkDemand before
636 * ConsoleLogger.cs: Changed "" to String.Empty.
637 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
638 with change to generics).
639 * Project.cs: Made Build () throw more meaningful exception.
641 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
643 * Target.cs: Reformatted.
644 * TaskEngine.cs: Removed redundant code.
645 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
646 * Engine.cs: Made BuildProjectFile () load project file if it's not
649 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
651 * ConditionRelationalExpression.cs: Change comparers to case
653 * ImportCollection.cs: Add NotImplementedExceptions.
654 * BuildPropertyGroup.cs: Reformatted a bit.
655 * BuildProperty.cs: The same.
656 * Project.cs: Moved evaluation of imports before evaluation of
657 properties. This may "work" until importing projects is redesigned but
658 probably isn't correct.
660 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
662 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
664 * BuildItemGroup.cs: Change return to continue.
666 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
668 * ConditionParser.cs: Copyright note.
669 * ExpressionCollection.cs: Fixed arrays passing.
671 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
673 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
674 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
675 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
676 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
678 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
680 * Token.cs: Changed names: removed "than".
681 * ConditionRelationalExpression.cs: Added.
682 * ConditionFactorExpression.cs: Added.
683 * BuildItemGroup.cs: Changed Condition property return value to return
684 String.Empty instead of null.
685 * ConditionParser.cs: Added support for parsing relational expressions
687 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
688 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
689 and CanEvaluateToBool (), CanEvaluateToNumber () and
690 CanEvaluateToString ().
691 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
692 appropriately to ConditionExpression base class.
693 * ConditionTokenizer.cs: Added null check and changed names in enums:
695 * ConditionNotExpression.cs: Added.
696 * BatchingImpl.cs: Changed to use BoolEvaluate ().
697 * Project.cs: Added checks for condition.
699 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
701 * ConditionalTokenizer.cs, ConditionalExpression.cs,
702 ConditionalParser.cs: Changed name,
704 * ConditionExpression.cs: Added Evaluate ().
705 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
706 * BatchingImpl.cs: Added check if task should be executed.
708 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
710 * UsingTask.cs: Changed properties to return null on empty attribute.
711 * UsingTaskCollection.cs: Added object to SyncRoot.
712 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
714 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
716 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
717 BuildPropertyGroupCollection.cs: Fixed to match the tests.
719 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
721 * Utilities.cs: Implemented Escape ().
722 * BuildItem.cs: Added null checks.
723 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
724 * Project.cs: Commented out redundant Evaluate ().
725 * BuildChoose.cs: Minor changes.
727 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
729 * Token: Added new few missing tokens.
730 * Target.cs, Project.cs: Patch from Matthew Metnesky.
731 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
732 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
733 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
735 Removed literal expression parsing based on tokenizer and
736 parser. It needs to be done by regex.
738 Moved tokenizer to ConditionalTokenizer.cs.
740 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
742 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
743 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
744 methods converting reference to string from ToString () to
745 ConvertToString () to avoid mistakes like using ToString () provided
748 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
750 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
751 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
752 PropertyReference.cs, BuildProperty.cs: Changed Expression to
753 OldExpression and changed To* functions to one ConvertTo ().
754 * TaskEngine.cs: Fixed PublishOutput ().
755 * OldExpression.cs: Added. It will be temporarily used before
756 LiteralExpression will be written using Tokenizer.
757 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
758 ExpressionParseException.cs, LiteralExpression.cs: Added.
760 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
762 * ImportedProject.cs: Removed warning.
763 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
766 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
768 * Project.cs: Removed unnecessary variable.
769 * Engine.cs: Added fixme.
771 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
773 * BuildItem.cs: Moved checking if metadata name is reserved to internal
774 class (Mono.XBuild.Utilities.ReservedNameUtils).
776 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
778 * BuildTask.cs: Removed unnecessary variable.
779 * Engine.cs: Added logging of the build start.
780 * Project.cs: Removed unnecessary variable.
782 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
784 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
786 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
788 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
790 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
792 * BuildItem.cs: Fix typo?
794 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
796 * InternalLoggerException.cs, InvalidProjectFileException.cs,
797 Engine.cs, Project.cs: Coding style fixes.
799 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
801 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
803 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
805 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
806 to pass tests. Wrote serialization constructor.
807 * Engine.cs, Project.cs: Global engine and project unloading, test and
810 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
812 * UsingTask.cs: Formatting changes.
814 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
816 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
817 to lists instead of hashtables.
818 * Import.cs: Cleaned up, moved importing from Project.cs
819 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
820 * Engine.cs: Cleaned up properties.
821 * Project.cs: Moved importing to Import.cs, cleaned up properties,
822 Separated evaluation and loading.
824 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
826 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
827 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
828 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
829 binding and evaluation, merge xml binding in constructors.
830 * DirectoryScanner.cs: Includes CAN be empty.
831 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
832 * ConsoleLogger.cs: Fix compilation warning.
834 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
836 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
838 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
840 * Engine.cs: API cleanup.
842 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
844 * Project.cs: Cleaned up add.
845 * Expression.cs: Hacked to transform \ and / to path separators.
846 * BuildPropertyGroup.cs: Small cleanup.
847 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
850 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
852 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
853 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
855 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
856 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
857 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
859 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
860 * TaskElement.cs: Temporarily removed.
861 * Xml.cs: Changed to static.
863 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
865 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
866 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
867 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
868 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
869 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
870 IBuildPropertyGroupCollection.cs: Removed.
872 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
874 * BuildItem.cs: Removed IBuildItem references.
875 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
876 IBuildItemGroup references. Changed Evaluate to internal.
877 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
878 reference and hidden constructors.
879 * BuildProperty.cs: Removed IBuildProperty reference.
880 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
881 IBuildPropertyGroup references. Changed Evaluate to internal.
882 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
883 reference and hidden constructors.
884 * ConsoleLogger.cs: Updated names of event handlers.
885 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
886 Escape. Added UnloadAllProjects () and UnloadProject ().
887 * FileLogger.cs: Removed ApplyParameter ().
888 * GroupingCollection.cs: Hidden.
889 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
890 * ItemPropertyGroupingBase.cs: Commented.
891 * ProcessingPass.cs: Hidden.
892 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
894 * Target.cs: Removed ITarget reference.
895 * TargetCollection.cs: Removed ITargetCollection reference.
896 * TaskElement.cs: Removed ITaskElement reference.
897 * TaskEngineAssemblyResolver.cs: Hidden.
898 * Utilities.cs: Made static class, removed CheckPath (),
899 ValidateCulture (), GetSupportedCultures () and added Escape ().
901 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
903 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
906 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
908 * Project.cs: Added MonoTODO attributes.
909 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
910 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
911 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
912 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
913 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
914 BuildItemGroup.cs, InvalidProjectFileException.cs,
915 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
916 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
917 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
918 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
919 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
920 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
921 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
922 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
923 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
924 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
925 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
926 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
928 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
930 * TaskDatabase.cs: Change Shared to Framework.
931 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
932 CaseInsensitiveHashCodeProvider
934 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
936 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
937 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
940 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
942 * InternalLoggerException.cs: Changed protected fields to private.
944 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
946 * Engine.cs: Added check for globalProperties.
947 * Project.cs: Added using path from importedProject.FullFileName when
948 adding UsingTask elements.
950 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
952 * TaskElement.cs: Changed ReflectedType to PropertyType.
953 * ChangeType.cs (TransformToString): Changed to pass proper Type to
956 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
958 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
960 * BuildProperty.cs: Organized PropertyType enum.
961 * Engine.cs: Added setting CommandLine PropertyType of global
964 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
966 * InvalidProjectFileException.cs: Changed Message property.
967 * ChangeType.cs (TransformToString): Added separator between items.
968 * TaskEngineAssemblyResolver.cs: Formatting.
970 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
972 * DirectoryScanner.cs: Added.
973 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
974 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
975 * Project.cs: Removed Evalute* ().
977 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
979 * Target.cs: Formatting.
980 * Expression.cs: Added check if array == null.
981 * BuildItem.cs: Removed 'break' to remove warnings.
982 * ConsoleLogger.cs: Formatting.
983 * Engine.cs: Added handling of default target(s).
984 * Project.cs: Added handling of default target(s).
986 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
988 * TaskElement.cs: Added check for parameters.
989 * Target.cs: Added logging of target skipping.
990 * Expression.cs: Changed returning object[] to string[], bool[]... in
992 * ItemReference.cs: Fixed for item references without custom
994 * BatchingImpl.cs: Added real inputs/outputs checking.
995 * Engine.cs: Moved global properties setting.
996 * Project.cs: Moved global properties setting.
998 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1000 * Target.cs: Added checks for target existence.
1001 * BuildItemGroup.cs: Changed to use transforms.
1002 * MetadataReference.cs: Wrote real implementation.
1003 * ItemReference.cs: Rewritten to use transforms.
1004 * BuildItem.cs: Changes for transforms and metadata.
1005 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1007 * Project.cs: Fixed project importing.
1008 * ImportedProject.cs: Changed to throw exceptions instead of returning
1011 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1013 * Engine.cs: Removed FIXME.
1014 * Project.cs: Splitted ProcessElements and added project importing.
1015 * ImportedProject.cs: Rewritten.
1017 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1019 * TaskElement.cs: Added getting of objects of every type.
1020 * BuildItemGroup.cs: Added ToITaskItemArray ().
1021 * Expression.cs: Implemented part that is not using metadata.
1022 * ItemReference.cs: Implemented parsing item references. Need to fix
1024 * BuildItem.cs: Fixed ToITaskItem ().
1025 * PropertyReference.cs: Implemented parsing property references. This
1026 also needs validity checking.
1028 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1030 * TaskElement.cs: Added Output element handling.
1031 * Target.cs: Cleaned up.
1032 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1033 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1034 ItemReference.cs, ChangeType.cs: Added.
1035 * BuildItem.cs: Added creating BuildItem from TaskItem.
1036 * BuildPropertyGroup.cs: Small changes.
1037 * BatchingImpl.cs: Fixed to return real task execution result.
1038 * BuildProperty.cs: Fixed FinalValue property.
1039 * Engine.cs: Reformatted logging.
1040 * Project.cs: Added check to EvaluateProperty.
1042 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1044 * TaskElement.cs: Added part of execution engine.
1045 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1046 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1047 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1048 * BuildItem.cs: Added handling of built-in metadata and referencing
1049 Items by name not FullName.
1050 * BatchingImpl.cs: Added temporary task "batching".
1051 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1052 * Project.cs: Added Evaluate. It will be moved to separate class.
1054 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1056 * EventSource.cs, Engine.cs: Added CriticalEvents.
1057 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1058 Project.cs: Added some support for items.
1059 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1061 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1063 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1066 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1068 * BatchingImpl.cs: Added.
1069 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1070 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1071 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1072 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1073 GroupingCollection.cs: Updated.
1075 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1077 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1078 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1079 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1080 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1081 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1082 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1083 InternalLoggerException.cs, InvalidProjectFileException.cs,
1084 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1085 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1086 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1087 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1088 Initial check-in of implementations.
1090 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1092 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1093 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1094 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1095 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1096 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1097 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1098 Initial check-in of interfaces and a syntax file, real classes are
1099 changing a lot so I'll wait a moment with checking them in.