1 2009-02-21 Ankit Jain <jankit@novell.com>
3 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
4 * Project.cs (Load): Use FromMSBuildPath on the path.
5 (InitializeProperties): Set "MSBuildToolsPath" also.
7 2009-02-20 Ankit Jain <jankit@novell.com>
10 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
11 transforms) in conditions.
12 * ConditionParser.cs: Parse unquoted item, property references.
13 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
14 * Token.cs (Token.ToString): Override.
15 (TokenType.Transform): Uncomment.
17 2009-02-12 Jonathan Chambers <joncham@gmail.com>
19 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
20 no XmlElement.InnerText. This allows properties to be additional
23 2009-02-01 Ankit Jain <jankit@novell.com>
25 * BuildEngine.cs (BuildProjectFile): Use
26 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
27 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
28 built. Move logging of project start/finish to ..
29 * Project.cs: .. here. Build a target only if hasn't been built already.
30 Keep track of target outputs, and return those even if an already built
31 target has been invoked again.
32 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
34 2009-01-31 Ankit Jain <jankit@novell.com>
36 * BatchingImpl.cs: Split into ..
37 * BatchingImplBase.cs: .. this,
38 * TaskBatchingImpl.cs: .. this ..
39 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
41 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
42 (Log*): Move to TargetBatchingImpl .
46 2009-01-30 Ankit Jain <jankit@novell.com>
48 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
51 2009-01-29 Ankit Jain <jankit@novell.com>
53 * BuildItem.cs (child_items): Change type from BuildItemGroup to
55 (HasParent): Rename to ..
56 (HasParentItem): .. this.
57 (ParentItemGroup): Add setter.
59 * BuildItemGroup.cs (.ctor): Add overload with @project param.
61 (AddItem): Correctly set the ParentItemGroup for new build items.
62 (ParentProject): Add setter.
63 * Project.cs: Set the project for new BuildItemGroup instances.
64 * TaskEngine.cs (PublishItemGroup): Likewise.
66 2009-01-06 Ankit Jain <jankit@novell.com>
68 * Project.cs (Build): Honor InitialTargets list.
70 2009-01-06 Ankit Jain <jankit@novell.com>
72 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
73 the property type also.
74 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
77 2009-01-06 Ankit Jain <jankit@novell.com>
79 * Project.cs (Build): Correctly handle null targetNames argument.
81 2009-01-06 Ankit Jain <jankit@novell.com>
83 * Engine.cs (LogProjectStarted): Add a null check.
85 2009-01-01 Ankit Jain <jankit@novell.com>
87 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
88 * ChangeType (ToBuildItemGroup): Add 'split' param.
90 * Expression.cs (Parse): Add a new overload with a 'split' param.
91 * ExpressionCollection.cs (Add): Add new overload for IReference,
92 remove the ones for Item/Metadata/PropertyReference.
93 (ConvertToArray): Implement correctly.
94 (ConvertToString): Track api changes.
95 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
96 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
97 (AddItemsToArray): New.
98 (ConvertToITaskItemArrayFromString): Refactor a bit.
99 (ThrowCantConcatError): New.
100 * ItemReference.cs: Update.
101 * MetadataReference.cs: Update.
102 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
104 * BuildPropertyGroup.cs: Track api changes.
105 * TaskEngine.cs (PublishOutput): Improve exception message.
106 * Project.cs (DoLoad): Improve exception message. Add a null check.
108 2008-12-30 Ankit Jain <jankit@novell.com>
110 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
111 metadata values for unqualified references.
112 (BuildItemGroupToITaskItemArray): Rename to ..
113 (BuildItemGroupToITaskItems): .. this.
116 2008-12-18 Ankit Jain <jankit@novell.com>
118 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
120 2008-12-17 Ankit Jain <jankit@novell.com>
122 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
123 only one instance of unique metadata value is required.
125 2008-11-22 Ankit Jain <jankit@novell.com>
127 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
129 * MetadataReference.cs (ConvertToITaskItemArray): New.
130 * Project.cs (GetAllItemGroups): New.
132 2008-11-21 Ankit Jain <jankit@novell.com>
134 * BatchingImpl.cs: Add task batching implementation.
135 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
136 * ExpressionCollection.cs (Count): New.
137 (ConvertToString): Handle MetadataReference.
138 * ItemReference.cs (ConvertToString):
139 (ConvertToITaskItemArray): Use the batching api.
141 * MetadataReference.cs (ConvertToString): New.
143 * Project.cs: Add api for accessing batched items and metadata.
144 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
147 2008-10-01 Ankit Jain <jankit@novell.com>
149 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
150 (BuildProjectFile): If filename is null (project.LoadXml) then use
152 * BuildTask.cs (InitializeTask): Track api change.
153 * Expression.cs (Parse): Skip empty entries in the expression.
155 2008-09-24 Ankit Jain <jankit@novell.com>
157 * Engine.cs: Add argument checks.
158 * Project.cs: Likewise.
160 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
162 * Project.cs (Build): Add outputs to targetOutputs.
164 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
166 * ExpressionCollection.cs (ConvertToArray): Simplify.
168 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
170 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
171 simplified. It still needs tests and refactoring.
173 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
175 * BuildEngine.cs (BuildProjectFile): Don't crash on null
178 * Target.cs: Add Outputs property.
180 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
182 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
183 (). Support condition.
185 * BatchingImpl.cs (BatchBuildTask): Simplify.
187 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
189 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
192 * ConditionFunctionExpression.cs: Removed warnings.
194 * BuildTask.cs (Execute): Write exceptions to std err (they should be
195 logged but it's better than swallowing).
197 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
199 * ConditionTokenizer.cs: Add Putback ().
201 * ConditionParser.cs: Add parsing of functions.
203 * ConditionFunctionExpression.cs: Add.
205 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
207 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
208 set property in persisted property group.
210 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
212 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
215 * ConsoleLogger.cs (TargetFinishedHandler)
216 (TaskFinishedHandler): Increment error count.
218 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
220 * BuildItem.cs (RemoveMetadata): Remove from XML.
221 (SetMetadata): Trigger project reevaluation.
223 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
225 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
228 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
230 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
231 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
232 BatchingImpl.cs, BuildProperty.cs: Track API changes.
234 * Expression.cs (Parse): Added allowItems parameter and made regexes
237 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
238 will try to import a.ext when given a.EXT.
240 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
242 * BuildItemGroup.cs: Store information saying what is the last item
243 group that contains build item name.
245 * Project.cs (Build): Pass empty array (build default targets).
247 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
249 * Token.cs: Commented Transform and LiteralSubExpression and added
252 * ConditionParser.cs: Removed redundant casts, rewrote
253 ParseFactorExpression () and added parsing of '!'.
255 * ConditionTokenizer.cs: Always skip whitespaces when getting next
256 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
257 Moved ReadChar () in front of all ifs.
259 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
261 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
262 from XML. (not to escape items that have parents twice).
264 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
266 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
267 (Project): Renamed to ParentProject.
269 * BuildItem.cs (ctor)
270 (CopyCustomMetadata): Add null check.
272 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
273 (RemoveProperty): Added null check.
275 * TargetCollection.cs (RemoveTarget): Added null check.
277 * Engine.cs (UnloadProject): Added null check.
279 * GroupingCollection.cs (Remove): Check if removed group belongs to
282 * Project.cs (AddNewItem): Implemented.
283 (RemoveItem): Reorganized.
284 (SetProjectExtensions): Added null check.
286 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
288 * BuildItemGroup.cs (Detach): Added.
290 (RemoveItemAt): Used Detach ().
292 * BuildItem.cs: Made FromXml and HasParent internal and added
293 ParentItem and ParentItemGroup properties (internal).
296 * GroupingCollection.cs (Remove): Used Detach ().
298 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
300 (GetEvaluatedItemsByNameIgnoringCondition)
301 (GetEvaluatedItemsByName)
302 (GetEvaluatedProperty): Reevaluate if needed.
304 (RemoveAllItemGroups)
305 (RemoveAllPropertyGroups): Implemented.
306 (DoLoad): Added closing of TextReader.
308 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
310 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
311 change but just mark that it needs it.
313 * Project.cs: Reevaluate when it needs reevaluation and one of
314 Evaluated* properties is used.
316 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
318 * Target.cs: Throw an exception when <OnError> is not last element in
321 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
323 * TargetCollection.cs: If a target is already there replace it with
326 * BuildProperty.cs: Added XmlElement property.
328 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
330 * ImportCollection.cs: Don't add imports that are already added.
332 * BuildItemGroup.cs: MonoTODOs.
334 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
335 condition can't be evaluated to bool.
337 * BuildPropertyGroup.cs (Evaluate): Simplify.
339 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
341 * BuildWhen.cs: Moved BindToXml () code to ctor.
343 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
344 property needed for removing groups.
346 * Engine.cs: Added StartBuild () that logs build start when Build ()
349 * GroupingCollection.cs: Added Remove () for item and property groups.
351 * Project.cs (AddNewImport): Implemented.
352 (AddNewItemGroup): Implemented.
353 (AddNewPropertyGroup): Implemented.
354 (AddNewUsingTaskFromAssemblyFile): Implemented.
355 (AddNewUsingTaskFromAssemblyName): Implemented.
356 (RemoveItemGroup): Implemented.
357 (RemovePropertyGroup): Implemented.
359 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
361 * BuildItemGroup.cs (Clear): Remove from XML.
363 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
364 to Project.EvaluatedProperties.
365 (Clear): Remove from XML.
367 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
369 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
372 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
374 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
375 Add () calls when processing a project from Import and
376 evaluate_iterator for evaluation.
378 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
380 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
381 and prepend relative directory of importing project to full path of
384 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
386 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
387 BuildItemGroupCollection.cs, Project.cs: Track API changes.
389 * GroupingCollection.cs: Now it needs Project reference so added it.
391 * BuildTask.cs: Formatting.
393 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
395 * ConditionParser.cs (ParseAndEvaluate): Added.
397 * BuildItem.cs: Changed exception message.
399 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
401 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
402 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
403 GroupingCollection doesn't need Project reference.
405 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
407 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
408 (Project.EvaluatedItems is a read only item group.)
409 (ReplaceWith): Added.
411 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
412 global property group causes reevaluation of its project.
414 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
417 * OldExpression.cs: Removed.
419 * BuildProperty.cs (Evaluate): Simplified.
421 * ChangeType.cs (TemporaryTransform): Simplified.
423 * BuildItem.cs: There are now 3 types of build items: from XML, having
424 parent from XML, virtual. Added SplitParentItem ().
426 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
428 * Utilities.cs: Added Unescape ().
430 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
431 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
432 groups (at the moment just unescape).
434 * Expression.cs (CopyToExpressionList): Unescape strings.
436 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
438 * Target.cs (ctor): Added ImportedProject argument and removed
440 (AddNewTask): Implemented.
442 * TargetCollection.cs (AddNewTarget): Implemented.
444 * Project.cs: Track API changes.
446 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
448 * Target.cs (Build): Don't throw anything in case of error, just
451 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
454 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
457 * BuildProperty.cs (ToString): Throw an exception if property is not
459 (op_Explicit): Added a null check.
461 * Engine.cs: Better error message.
463 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
464 IndexOutOfRangeException.
466 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
467 (MarkProjectAsDirty): Set time.
469 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
471 * BuildItemGroup.cs (Clone): Throw exception.
473 * Project.cs (Load): Throw InvalidProjectFileException if anything
476 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
478 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
479 and ConvertToITaskItemArray ().
481 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
483 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
484 classes that were public in Beta 2 and aren't used.
486 * Expression.cs: Added replacement for parsing expressions char by
487 char. It uses regexes to find item/property/metadata references in
490 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
491 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
492 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
494 * ConditionRelationalExpression.cs: Formatting.
496 * OldExpression.cs: Commented everything.
498 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
499 parsing to Expression.
501 * BuildItem.cs: Check if project is from XML in set_Condition and
504 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
507 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
508 can evaluate expression in CanEvaluateToBool ().
510 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
512 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
513 which item group is imported.
515 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
517 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
519 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
520 BuildItemGroupCollection.cs: Little changes related to
523 * ImportCollection.cs: Use GroupingCollection not an internal list.
525 * Import.cs (Evaluate): Split to functions and check if
526 EvaluatedProjectPath is empty.
528 * GroupingCollection.cs, Project.cs: Move evaluation to
529 GroupingCollection. Change algorithm to use 2 passes: first for property
530 groups and imports and second for item groups.
532 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
534 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
535 BuildItemGroup> not IDictionary.
537 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
538 evaluated to false because we want to add every item to
539 Project.EvaluatedItemsByNameIgnoringCondition.
541 * Project.cs (Build): Don't throw an exception just return false.
542 (GetEvaluatedProperty): Avoid NullReferenceException.
543 (SetProjectExtensions): Implemented.
545 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
547 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
549 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
550 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
551 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
553 * ImportCollection.cs: Added a note.
555 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
557 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
559 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
560 (UsingTask[] array, int index)
562 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
563 items to Project.EvaluatedItems in PublishItemGroup ();
565 * BuildItemGroup.cs: Added [MonoTODO].
567 * UsingTask.cs: Used expression for AssemblyFile to get around
568 problems with '\' and '/'.
570 * BuildItem.cs (ctor): Added null checks.
571 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
572 (SetMetadata): Don't escape evaluatedMetadata and escape
573 unevaluatedMetadata only when treatPropertyValueAsLiteral.
575 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
576 FromXml () instead of null checks.
577 (SetProperty): Escape propertyValue when it is literal.
579 * BuildProperty.cs: Changed exception message.
581 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
583 (GetProjectExtensions): Implemented.
585 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
587 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
588 GetParameterValue (), use expressions in ContinueOnError.
589 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
590 instead of InvalidOperationException ().
591 * ImportCollection.cs: Implement CopyTo ().
592 * Target.cs: Remove redundant variables (XmlAttributes), return
593 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
594 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
595 * Import.cs: Throw an exception when file does not exist.
596 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
597 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
598 need to treat item as a token probably
600 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
602 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
604 * BuildItemGroupCollection.cs: Changed exception types.
606 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
608 * Engine.cs: Removed redundant cast.
610 * UsingTaskCollection.cs:
614 * TargetCollection.cs: Comment unused variable.
615 * ConditionTokenizer.cs: Simplified checking if current token is a
617 * Target.cs: Removed old code.
619 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
621 * Target.cs: Changed "" to String.Empty.
622 * TaskEngine.cs: Don't try to convert a parameter to specific type if
623 string was evaluated to String.Empty.
624 * InternalLoggerException.cs:
625 * InvalidProjectFileException.cs: Added LinkDemand before
627 * ConsoleLogger.cs: Changed "" to String.Empty.
628 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
629 with change to generics).
630 * Project.cs: Made Build () throw more meaningful exception.
632 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
634 * Target.cs: Reformatted.
635 * TaskEngine.cs: Removed redundant code.
636 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
637 * Engine.cs: Made BuildProjectFile () load project file if it's not
640 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
642 * ConditionRelationalExpression.cs: Change comparers to case
644 * ImportCollection.cs: Add NotImplementedExceptions.
645 * BuildPropertyGroup.cs: Reformatted a bit.
646 * BuildProperty.cs: The same.
647 * Project.cs: Moved evaluation of imports before evaluation of
648 properties. This may "work" until importing projects is redesigned but
649 probably isn't correct.
651 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
653 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
655 * BuildItemGroup.cs: Change return to continue.
657 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
659 * ConditionParser.cs: Copyright note.
660 * ExpressionCollection.cs: Fixed arrays passing.
662 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
664 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
665 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
666 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
667 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
669 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
671 * Token.cs: Changed names: removed "than".
672 * ConditionRelationalExpression.cs: Added.
673 * ConditionFactorExpression.cs: Added.
674 * BuildItemGroup.cs: Changed Condition property return value to return
675 String.Empty instead of null.
676 * ConditionParser.cs: Added support for parsing relational expressions
678 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
679 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
680 and CanEvaluateToBool (), CanEvaluateToNumber () and
681 CanEvaluateToString ().
682 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
683 appropriately to ConditionExpression base class.
684 * ConditionTokenizer.cs: Added null check and changed names in enums:
686 * ConditionNotExpression.cs: Added.
687 * BatchingImpl.cs: Changed to use BoolEvaluate ().
688 * Project.cs: Added checks for condition.
690 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
692 * ConditionalTokenizer.cs, ConditionalExpression.cs,
693 ConditionalParser.cs: Changed name,
695 * ConditionExpression.cs: Added Evaluate ().
696 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
697 * BatchingImpl.cs: Added check if task should be executed.
699 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
701 * UsingTask.cs: Changed properties to return null on empty attribute.
702 * UsingTaskCollection.cs: Added object to SyncRoot.
703 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
705 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
707 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
708 BuildPropertyGroupCollection.cs: Fixed to match the tests.
710 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
712 * Utilities.cs: Implemented Escape ().
713 * BuildItem.cs: Added null checks.
714 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
715 * Project.cs: Commented out redundant Evaluate ().
716 * BuildChoose.cs: Minor changes.
718 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
720 * Token: Added new few missing tokens.
721 * Target.cs, Project.cs: Patch from Matthew Metnesky.
722 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
723 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
724 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
726 Removed literal expression parsing based on tokenizer and
727 parser. It needs to be done by regex.
729 Moved tokenizer to ConditionalTokenizer.cs.
731 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
733 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
734 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
735 methods converting reference to string from ToString () to
736 ConvertToString () to avoid mistakes like using ToString () provided
739 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
741 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
742 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
743 PropertyReference.cs, BuildProperty.cs: Changed Expression to
744 OldExpression and changed To* functions to one ConvertTo ().
745 * TaskEngine.cs: Fixed PublishOutput ().
746 * OldExpression.cs: Added. It will be temporarily used before
747 LiteralExpression will be written using Tokenizer.
748 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
749 ExpressionParseException.cs, LiteralExpression.cs: Added.
751 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
753 * ImportedProject.cs: Removed warning.
754 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
757 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
759 * Project.cs: Removed unnecessary variable.
760 * Engine.cs: Added fixme.
762 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
764 * BuildItem.cs: Moved checking if metadata name is reserved to internal
765 class (Mono.XBuild.Utilities.ReservedNameUtils).
767 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
769 * BuildTask.cs: Removed unnecessary variable.
770 * Engine.cs: Added logging of the build start.
771 * Project.cs: Removed unnecessary variable.
773 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
775 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
777 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
779 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
781 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
783 * BuildItem.cs: Fix typo?
785 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
787 * InternalLoggerException.cs, InvalidProjectFileException.cs,
788 Engine.cs, Project.cs: Coding style fixes.
790 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
792 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
794 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
796 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
797 to pass tests. Wrote serialization constructor.
798 * Engine.cs, Project.cs: Global engine and project unloading, test and
801 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
803 * UsingTask.cs: Formatting changes.
805 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
807 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
808 to lists instead of hashtables.
809 * Import.cs: Cleaned up, moved importing from Project.cs
810 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
811 * Engine.cs: Cleaned up properties.
812 * Project.cs: Moved importing to Import.cs, cleaned up properties,
813 Separated evaluation and loading.
815 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
817 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
818 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
819 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
820 binding and evaluation, merge xml binding in constructors.
821 * DirectoryScanner.cs: Includes CAN be empty.
822 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
823 * ConsoleLogger.cs: Fix compilation warning.
825 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
827 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
829 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
831 * Engine.cs: API cleanup.
833 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
835 * Project.cs: Cleaned up add.
836 * Expression.cs: Hacked to transform \ and / to path separators.
837 * BuildPropertyGroup.cs: Small cleanup.
838 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
841 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
843 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
844 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
846 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
847 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
848 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
850 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
851 * TaskElement.cs: Temporarily removed.
852 * Xml.cs: Changed to static.
854 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
856 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
857 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
858 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
859 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
860 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
861 IBuildPropertyGroupCollection.cs: Removed.
863 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
865 * BuildItem.cs: Removed IBuildItem references.
866 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
867 IBuildItemGroup references. Changed Evaluate to internal.
868 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
869 reference and hidden constructors.
870 * BuildProperty.cs: Removed IBuildProperty reference.
871 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
872 IBuildPropertyGroup references. Changed Evaluate to internal.
873 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
874 reference and hidden constructors.
875 * ConsoleLogger.cs: Updated names of event handlers.
876 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
877 Escape. Added UnloadAllProjects () and UnloadProject ().
878 * FileLogger.cs: Removed ApplyParameter ().
879 * GroupingCollection.cs: Hidden.
880 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
881 * ItemPropertyGroupingBase.cs: Commented.
882 * ProcessingPass.cs: Hidden.
883 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
885 * Target.cs: Removed ITarget reference.
886 * TargetCollection.cs: Removed ITargetCollection reference.
887 * TaskElement.cs: Removed ITaskElement reference.
888 * TaskEngineAssemblyResolver.cs: Hidden.
889 * Utilities.cs: Made static class, removed CheckPath (),
890 ValidateCulture (), GetSupportedCultures () and added Escape ().
892 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
894 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
897 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
899 * Project.cs: Added MonoTODO attributes.
900 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
901 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
902 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
903 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
904 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
905 BuildItemGroup.cs, InvalidProjectFileException.cs,
906 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
907 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
908 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
909 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
910 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
911 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
912 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
913 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
914 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
915 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
916 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
917 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
919 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
921 * TaskDatabase.cs: Change Shared to Framework.
922 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
923 CaseInsensitiveHashCodeProvider
925 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
927 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
928 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
931 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
933 * InternalLoggerException.cs: Changed protected fields to private.
935 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
937 * Engine.cs: Added check for globalProperties.
938 * Project.cs: Added using path from importedProject.FullFileName when
939 adding UsingTask elements.
941 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
943 * TaskElement.cs: Changed ReflectedType to PropertyType.
944 * ChangeType.cs (TransformToString): Changed to pass proper Type to
947 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
949 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
951 * BuildProperty.cs: Organized PropertyType enum.
952 * Engine.cs: Added setting CommandLine PropertyType of global
955 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
957 * InvalidProjectFileException.cs: Changed Message property.
958 * ChangeType.cs (TransformToString): Added separator between items.
959 * TaskEngineAssemblyResolver.cs: Formatting.
961 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
963 * DirectoryScanner.cs: Added.
964 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
965 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
966 * Project.cs: Removed Evalute* ().
968 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
970 * Target.cs: Formatting.
971 * Expression.cs: Added check if array == null.
972 * BuildItem.cs: Removed 'break' to remove warnings.
973 * ConsoleLogger.cs: Formatting.
974 * Engine.cs: Added handling of default target(s).
975 * Project.cs: Added handling of default target(s).
977 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
979 * TaskElement.cs: Added check for parameters.
980 * Target.cs: Added logging of target skipping.
981 * Expression.cs: Changed returning object[] to string[], bool[]... in
983 * ItemReference.cs: Fixed for item references without custom
985 * BatchingImpl.cs: Added real inputs/outputs checking.
986 * Engine.cs: Moved global properties setting.
987 * Project.cs: Moved global properties setting.
989 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
991 * Target.cs: Added checks for target existence.
992 * BuildItemGroup.cs: Changed to use transforms.
993 * MetadataReference.cs: Wrote real implementation.
994 * ItemReference.cs: Rewritten to use transforms.
995 * BuildItem.cs: Changes for transforms and metadata.
996 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
998 * Project.cs: Fixed project importing.
999 * ImportedProject.cs: Changed to throw exceptions instead of returning
1002 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1004 * Engine.cs: Removed FIXME.
1005 * Project.cs: Splitted ProcessElements and added project importing.
1006 * ImportedProject.cs: Rewritten.
1008 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1010 * TaskElement.cs: Added getting of objects of every type.
1011 * BuildItemGroup.cs: Added ToITaskItemArray ().
1012 * Expression.cs: Implemented part that is not using metadata.
1013 * ItemReference.cs: Implemented parsing item references. Need to fix
1015 * BuildItem.cs: Fixed ToITaskItem ().
1016 * PropertyReference.cs: Implemented parsing property references. This
1017 also needs validity checking.
1019 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1021 * TaskElement.cs: Added Output element handling.
1022 * Target.cs: Cleaned up.
1023 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1024 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1025 ItemReference.cs, ChangeType.cs: Added.
1026 * BuildItem.cs: Added creating BuildItem from TaskItem.
1027 * BuildPropertyGroup.cs: Small changes.
1028 * BatchingImpl.cs: Fixed to return real task execution result.
1029 * BuildProperty.cs: Fixed FinalValue property.
1030 * Engine.cs: Reformatted logging.
1031 * Project.cs: Added check to EvaluateProperty.
1033 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1035 * TaskElement.cs: Added part of execution engine.
1036 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1037 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1038 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1039 * BuildItem.cs: Added handling of built-in metadata and referencing
1040 Items by name not FullName.
1041 * BatchingImpl.cs: Added temporary task "batching".
1042 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1043 * Project.cs: Added Evaluate. It will be moved to separate class.
1045 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1047 * EventSource.cs, Engine.cs: Added CriticalEvents.
1048 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1049 Project.cs: Added some support for items.
1050 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1052 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1054 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1057 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1059 * BatchingImpl.cs: Added.
1060 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1061 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1062 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1063 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1064 GroupingCollection.cs: Updated.
1066 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1068 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1069 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1070 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1071 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1072 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1073 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1074 InternalLoggerException.cs, InvalidProjectFileException.cs,
1075 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1076 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1077 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1078 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1079 Initial check-in of implementations.
1081 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1083 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1084 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1085 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1086 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1087 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1088 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1089 Initial check-in of interfaces and a syntax file, real classes are
1090 changing a lot so I'll wait a moment with checking them in.