1 2009-02-24 Ankit Jain <jankit@novell.com>
3 Lazily load UsingTask tasks.
4 * UsingTask.cs (Evaluate): Register 'this' with task database,
5 but don't load it yet. Register only if condition evaluates to true.
6 Move the load logic to ..
7 (Load): .. here. Register with the specified task database.
8 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
9 in a table keyed by task name, but don't load it yet.
10 (GetTypeFromClassName): Try to load UsingTask if task is not already
11 loaded. Move loading logic to ..
12 (GetTypeFromClassNameInternal): .. here.
13 (CopyTasks): Copy the usingTasks table also.
15 2009-02-23 Ankit Jain <jankit@novell.com>
17 * BuildItem.cs (AddMetadata): Allow overwriting older values.
19 2009-02-22 Ankit Jain <jankit@novell.com>
21 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
22 instead of XmlElement. Eg. XmlComment
24 2009-02-21 Ankit Jain <jankit@novell.com>
26 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
27 * Project.cs (Load): Use FromMSBuildPath on the path.
28 (InitializeProperties): Set "MSBuildToolsPath" also.
30 2009-02-20 Ankit Jain <jankit@novell.com>
33 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
34 transforms) in conditions.
35 * ConditionParser.cs: Parse unquoted item, property references.
36 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
37 * Token.cs (Token.ToString): Override.
38 (TokenType.Transform): Uncomment.
40 2009-02-12 Jonathan Chambers <joncham@gmail.com>
42 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
43 no XmlElement.InnerText. This allows properties to be additional
46 2009-02-01 Ankit Jain <jankit@novell.com>
48 * BuildEngine.cs (BuildProjectFile): Use
49 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
50 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
51 built. Move logging of project start/finish to ..
52 * Project.cs: .. here. Build a target only if hasn't been built already.
53 Keep track of target outputs, and return those even if an already built
54 target has been invoked again.
55 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
57 2009-01-31 Ankit Jain <jankit@novell.com>
59 * BatchingImpl.cs: Split into ..
60 * BatchingImplBase.cs: .. this,
61 * TaskBatchingImpl.cs: .. this ..
62 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
64 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
65 (Log*): Move to TargetBatchingImpl .
69 2009-01-30 Ankit Jain <jankit@novell.com>
71 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
74 2009-01-29 Ankit Jain <jankit@novell.com>
76 * BuildItem.cs (child_items): Change type from BuildItemGroup to
78 (HasParent): Rename to ..
79 (HasParentItem): .. this.
80 (ParentItemGroup): Add setter.
82 * BuildItemGroup.cs (.ctor): Add overload with @project param.
84 (AddItem): Correctly set the ParentItemGroup for new build items.
85 (ParentProject): Add setter.
86 * Project.cs: Set the project for new BuildItemGroup instances.
87 * TaskEngine.cs (PublishItemGroup): Likewise.
89 2009-01-06 Ankit Jain <jankit@novell.com>
91 * Project.cs (Build): Honor InitialTargets list.
93 2009-01-06 Ankit Jain <jankit@novell.com>
95 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
96 the property type also.
97 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
100 2009-01-06 Ankit Jain <jankit@novell.com>
102 * Project.cs (Build): Correctly handle null targetNames argument.
104 2009-01-06 Ankit Jain <jankit@novell.com>
106 * Engine.cs (LogProjectStarted): Add a null check.
108 2009-01-01 Ankit Jain <jankit@novell.com>
110 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
111 * ChangeType (ToBuildItemGroup): Add 'split' param.
113 * Expression.cs (Parse): Add a new overload with a 'split' param.
114 * ExpressionCollection.cs (Add): Add new overload for IReference,
115 remove the ones for Item/Metadata/PropertyReference.
116 (ConvertToArray): Implement correctly.
117 (ConvertToString): Track api changes.
118 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
119 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
120 (AddItemsToArray): New.
121 (ConvertToITaskItemArrayFromString): Refactor a bit.
122 (ThrowCantConcatError): New.
123 * ItemReference.cs: Update.
124 * MetadataReference.cs: Update.
125 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
127 * BuildPropertyGroup.cs: Track api changes.
128 * TaskEngine.cs (PublishOutput): Improve exception message.
129 * Project.cs (DoLoad): Improve exception message. Add a null check.
131 2008-12-30 Ankit Jain <jankit@novell.com>
133 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
134 metadata values for unqualified references.
135 (BuildItemGroupToITaskItemArray): Rename to ..
136 (BuildItemGroupToITaskItems): .. this.
139 2008-12-18 Ankit Jain <jankit@novell.com>
141 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
143 2008-12-17 Ankit Jain <jankit@novell.com>
145 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
146 only one instance of unique metadata value is required.
148 2008-11-22 Ankit Jain <jankit@novell.com>
150 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
152 * MetadataReference.cs (ConvertToITaskItemArray): New.
153 * Project.cs (GetAllItemGroups): New.
155 2008-11-21 Ankit Jain <jankit@novell.com>
157 * BatchingImpl.cs: Add task batching implementation.
158 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
159 * ExpressionCollection.cs (Count): New.
160 (ConvertToString): Handle MetadataReference.
161 * ItemReference.cs (ConvertToString):
162 (ConvertToITaskItemArray): Use the batching api.
164 * MetadataReference.cs (ConvertToString): New.
166 * Project.cs: Add api for accessing batched items and metadata.
167 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
170 2008-10-01 Ankit Jain <jankit@novell.com>
172 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
173 (BuildProjectFile): If filename is null (project.LoadXml) then use
175 * BuildTask.cs (InitializeTask): Track api change.
176 * Expression.cs (Parse): Skip empty entries in the expression.
178 2008-09-24 Ankit Jain <jankit@novell.com>
180 * Engine.cs: Add argument checks.
181 * Project.cs: Likewise.
183 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
185 * Project.cs (Build): Add outputs to targetOutputs.
187 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
189 * ExpressionCollection.cs (ConvertToArray): Simplify.
191 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
193 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
194 simplified. It still needs tests and refactoring.
196 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
198 * BuildEngine.cs (BuildProjectFile): Don't crash on null
201 * Target.cs: Add Outputs property.
203 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
205 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
206 (). Support condition.
208 * BatchingImpl.cs (BatchBuildTask): Simplify.
210 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
212 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
215 * ConditionFunctionExpression.cs: Removed warnings.
217 * BuildTask.cs (Execute): Write exceptions to std err (they should be
218 logged but it's better than swallowing).
220 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
222 * ConditionTokenizer.cs: Add Putback ().
224 * ConditionParser.cs: Add parsing of functions.
226 * ConditionFunctionExpression.cs: Add.
228 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
230 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
231 set property in persisted property group.
233 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
235 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
238 * ConsoleLogger.cs (TargetFinishedHandler)
239 (TaskFinishedHandler): Increment error count.
241 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
243 * BuildItem.cs (RemoveMetadata): Remove from XML.
244 (SetMetadata): Trigger project reevaluation.
246 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
248 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
251 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
253 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
254 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
255 BatchingImpl.cs, BuildProperty.cs: Track API changes.
257 * Expression.cs (Parse): Added allowItems parameter and made regexes
260 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
261 will try to import a.ext when given a.EXT.
263 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
265 * BuildItemGroup.cs: Store information saying what is the last item
266 group that contains build item name.
268 * Project.cs (Build): Pass empty array (build default targets).
270 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
272 * Token.cs: Commented Transform and LiteralSubExpression and added
275 * ConditionParser.cs: Removed redundant casts, rewrote
276 ParseFactorExpression () and added parsing of '!'.
278 * ConditionTokenizer.cs: Always skip whitespaces when getting next
279 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
280 Moved ReadChar () in front of all ifs.
282 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
284 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
285 from XML. (not to escape items that have parents twice).
287 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
289 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
290 (Project): Renamed to ParentProject.
292 * BuildItem.cs (ctor)
293 (CopyCustomMetadata): Add null check.
295 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
296 (RemoveProperty): Added null check.
298 * TargetCollection.cs (RemoveTarget): Added null check.
300 * Engine.cs (UnloadProject): Added null check.
302 * GroupingCollection.cs (Remove): Check if removed group belongs to
305 * Project.cs (AddNewItem): Implemented.
306 (RemoveItem): Reorganized.
307 (SetProjectExtensions): Added null check.
309 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
311 * BuildItemGroup.cs (Detach): Added.
313 (RemoveItemAt): Used Detach ().
315 * BuildItem.cs: Made FromXml and HasParent internal and added
316 ParentItem and ParentItemGroup properties (internal).
319 * GroupingCollection.cs (Remove): Used Detach ().
321 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
323 (GetEvaluatedItemsByNameIgnoringCondition)
324 (GetEvaluatedItemsByName)
325 (GetEvaluatedProperty): Reevaluate if needed.
327 (RemoveAllItemGroups)
328 (RemoveAllPropertyGroups): Implemented.
329 (DoLoad): Added closing of TextReader.
331 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
333 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
334 change but just mark that it needs it.
336 * Project.cs: Reevaluate when it needs reevaluation and one of
337 Evaluated* properties is used.
339 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
341 * Target.cs: Throw an exception when <OnError> is not last element in
344 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
346 * TargetCollection.cs: If a target is already there replace it with
349 * BuildProperty.cs: Added XmlElement property.
351 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
353 * ImportCollection.cs: Don't add imports that are already added.
355 * BuildItemGroup.cs: MonoTODOs.
357 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
358 condition can't be evaluated to bool.
360 * BuildPropertyGroup.cs (Evaluate): Simplify.
362 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
364 * BuildWhen.cs: Moved BindToXml () code to ctor.
366 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
367 property needed for removing groups.
369 * Engine.cs: Added StartBuild () that logs build start when Build ()
372 * GroupingCollection.cs: Added Remove () for item and property groups.
374 * Project.cs (AddNewImport): Implemented.
375 (AddNewItemGroup): Implemented.
376 (AddNewPropertyGroup): Implemented.
377 (AddNewUsingTaskFromAssemblyFile): Implemented.
378 (AddNewUsingTaskFromAssemblyName): Implemented.
379 (RemoveItemGroup): Implemented.
380 (RemovePropertyGroup): Implemented.
382 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
384 * BuildItemGroup.cs (Clear): Remove from XML.
386 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
387 to Project.EvaluatedProperties.
388 (Clear): Remove from XML.
390 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
392 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
395 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
397 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
398 Add () calls when processing a project from Import and
399 evaluate_iterator for evaluation.
401 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
403 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
404 and prepend relative directory of importing project to full path of
407 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
409 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
410 BuildItemGroupCollection.cs, Project.cs: Track API changes.
412 * GroupingCollection.cs: Now it needs Project reference so added it.
414 * BuildTask.cs: Formatting.
416 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
418 * ConditionParser.cs (ParseAndEvaluate): Added.
420 * BuildItem.cs: Changed exception message.
422 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
424 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
425 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
426 GroupingCollection doesn't need Project reference.
428 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
430 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
431 (Project.EvaluatedItems is a read only item group.)
432 (ReplaceWith): Added.
434 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
435 global property group causes reevaluation of its project.
437 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
440 * OldExpression.cs: Removed.
442 * BuildProperty.cs (Evaluate): Simplified.
444 * ChangeType.cs (TemporaryTransform): Simplified.
446 * BuildItem.cs: There are now 3 types of build items: from XML, having
447 parent from XML, virtual. Added SplitParentItem ().
449 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
451 * Utilities.cs: Added Unescape ().
453 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
454 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
455 groups (at the moment just unescape).
457 * Expression.cs (CopyToExpressionList): Unescape strings.
459 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
461 * Target.cs (ctor): Added ImportedProject argument and removed
463 (AddNewTask): Implemented.
465 * TargetCollection.cs (AddNewTarget): Implemented.
467 * Project.cs: Track API changes.
469 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
471 * Target.cs (Build): Don't throw anything in case of error, just
474 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
477 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
480 * BuildProperty.cs (ToString): Throw an exception if property is not
482 (op_Explicit): Added a null check.
484 * Engine.cs: Better error message.
486 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
487 IndexOutOfRangeException.
489 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
490 (MarkProjectAsDirty): Set time.
492 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
494 * BuildItemGroup.cs (Clone): Throw exception.
496 * Project.cs (Load): Throw InvalidProjectFileException if anything
499 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
501 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
502 and ConvertToITaskItemArray ().
504 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
506 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
507 classes that were public in Beta 2 and aren't used.
509 * Expression.cs: Added replacement for parsing expressions char by
510 char. It uses regexes to find item/property/metadata references in
513 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
514 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
515 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
517 * ConditionRelationalExpression.cs: Formatting.
519 * OldExpression.cs: Commented everything.
521 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
522 parsing to Expression.
524 * BuildItem.cs: Check if project is from XML in set_Condition and
527 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
530 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
531 can evaluate expression in CanEvaluateToBool ().
533 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
535 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
536 which item group is imported.
538 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
540 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
542 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
543 BuildItemGroupCollection.cs: Little changes related to
546 * ImportCollection.cs: Use GroupingCollection not an internal list.
548 * Import.cs (Evaluate): Split to functions and check if
549 EvaluatedProjectPath is empty.
551 * GroupingCollection.cs, Project.cs: Move evaluation to
552 GroupingCollection. Change algorithm to use 2 passes: first for property
553 groups and imports and second for item groups.
555 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
557 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
558 BuildItemGroup> not IDictionary.
560 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
561 evaluated to false because we want to add every item to
562 Project.EvaluatedItemsByNameIgnoringCondition.
564 * Project.cs (Build): Don't throw an exception just return false.
565 (GetEvaluatedProperty): Avoid NullReferenceException.
566 (SetProjectExtensions): Implemented.
568 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
570 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
572 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
573 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
574 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
576 * ImportCollection.cs: Added a note.
578 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
580 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
582 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
583 (UsingTask[] array, int index)
585 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
586 items to Project.EvaluatedItems in PublishItemGroup ();
588 * BuildItemGroup.cs: Added [MonoTODO].
590 * UsingTask.cs: Used expression for AssemblyFile to get around
591 problems with '\' and '/'.
593 * BuildItem.cs (ctor): Added null checks.
594 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
595 (SetMetadata): Don't escape evaluatedMetadata and escape
596 unevaluatedMetadata only when treatPropertyValueAsLiteral.
598 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
599 FromXml () instead of null checks.
600 (SetProperty): Escape propertyValue when it is literal.
602 * BuildProperty.cs: Changed exception message.
604 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
606 (GetProjectExtensions): Implemented.
608 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
610 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
611 GetParameterValue (), use expressions in ContinueOnError.
612 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
613 instead of InvalidOperationException ().
614 * ImportCollection.cs: Implement CopyTo ().
615 * Target.cs: Remove redundant variables (XmlAttributes), return
616 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
617 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
618 * Import.cs: Throw an exception when file does not exist.
619 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
620 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
621 need to treat item as a token probably
623 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
625 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
627 * BuildItemGroupCollection.cs: Changed exception types.
629 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
631 * Engine.cs: Removed redundant cast.
633 * UsingTaskCollection.cs:
637 * TargetCollection.cs: Comment unused variable.
638 * ConditionTokenizer.cs: Simplified checking if current token is a
640 * Target.cs: Removed old code.
642 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
644 * Target.cs: Changed "" to String.Empty.
645 * TaskEngine.cs: Don't try to convert a parameter to specific type if
646 string was evaluated to String.Empty.
647 * InternalLoggerException.cs:
648 * InvalidProjectFileException.cs: Added LinkDemand before
650 * ConsoleLogger.cs: Changed "" to String.Empty.
651 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
652 with change to generics).
653 * Project.cs: Made Build () throw more meaningful exception.
655 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
657 * Target.cs: Reformatted.
658 * TaskEngine.cs: Removed redundant code.
659 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
660 * Engine.cs: Made BuildProjectFile () load project file if it's not
663 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
665 * ConditionRelationalExpression.cs: Change comparers to case
667 * ImportCollection.cs: Add NotImplementedExceptions.
668 * BuildPropertyGroup.cs: Reformatted a bit.
669 * BuildProperty.cs: The same.
670 * Project.cs: Moved evaluation of imports before evaluation of
671 properties. This may "work" until importing projects is redesigned but
672 probably isn't correct.
674 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
676 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
678 * BuildItemGroup.cs: Change return to continue.
680 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
682 * ConditionParser.cs: Copyright note.
683 * ExpressionCollection.cs: Fixed arrays passing.
685 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
687 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
688 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
689 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
690 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
692 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
694 * Token.cs: Changed names: removed "than".
695 * ConditionRelationalExpression.cs: Added.
696 * ConditionFactorExpression.cs: Added.
697 * BuildItemGroup.cs: Changed Condition property return value to return
698 String.Empty instead of null.
699 * ConditionParser.cs: Added support for parsing relational expressions
701 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
702 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
703 and CanEvaluateToBool (), CanEvaluateToNumber () and
704 CanEvaluateToString ().
705 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
706 appropriately to ConditionExpression base class.
707 * ConditionTokenizer.cs: Added null check and changed names in enums:
709 * ConditionNotExpression.cs: Added.
710 * BatchingImpl.cs: Changed to use BoolEvaluate ().
711 * Project.cs: Added checks for condition.
713 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
715 * ConditionalTokenizer.cs, ConditionalExpression.cs,
716 ConditionalParser.cs: Changed name,
718 * ConditionExpression.cs: Added Evaluate ().
719 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
720 * BatchingImpl.cs: Added check if task should be executed.
722 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
724 * UsingTask.cs: Changed properties to return null on empty attribute.
725 * UsingTaskCollection.cs: Added object to SyncRoot.
726 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
728 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
730 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
731 BuildPropertyGroupCollection.cs: Fixed to match the tests.
733 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
735 * Utilities.cs: Implemented Escape ().
736 * BuildItem.cs: Added null checks.
737 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
738 * Project.cs: Commented out redundant Evaluate ().
739 * BuildChoose.cs: Minor changes.
741 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
743 * Token: Added new few missing tokens.
744 * Target.cs, Project.cs: Patch from Matthew Metnesky.
745 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
746 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
747 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
749 Removed literal expression parsing based on tokenizer and
750 parser. It needs to be done by regex.
752 Moved tokenizer to ConditionalTokenizer.cs.
754 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
756 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
757 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
758 methods converting reference to string from ToString () to
759 ConvertToString () to avoid mistakes like using ToString () provided
762 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
764 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
765 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
766 PropertyReference.cs, BuildProperty.cs: Changed Expression to
767 OldExpression and changed To* functions to one ConvertTo ().
768 * TaskEngine.cs: Fixed PublishOutput ().
769 * OldExpression.cs: Added. It will be temporarily used before
770 LiteralExpression will be written using Tokenizer.
771 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
772 ExpressionParseException.cs, LiteralExpression.cs: Added.
774 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
776 * ImportedProject.cs: Removed warning.
777 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
780 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
782 * Project.cs: Removed unnecessary variable.
783 * Engine.cs: Added fixme.
785 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
787 * BuildItem.cs: Moved checking if metadata name is reserved to internal
788 class (Mono.XBuild.Utilities.ReservedNameUtils).
790 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
792 * BuildTask.cs: Removed unnecessary variable.
793 * Engine.cs: Added logging of the build start.
794 * Project.cs: Removed unnecessary variable.
796 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
798 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
800 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
802 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
804 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
806 * BuildItem.cs: Fix typo?
808 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
810 * InternalLoggerException.cs, InvalidProjectFileException.cs,
811 Engine.cs, Project.cs: Coding style fixes.
813 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
815 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
817 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
819 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
820 to pass tests. Wrote serialization constructor.
821 * Engine.cs, Project.cs: Global engine and project unloading, test and
824 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
826 * UsingTask.cs: Formatting changes.
828 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
830 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
831 to lists instead of hashtables.
832 * Import.cs: Cleaned up, moved importing from Project.cs
833 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
834 * Engine.cs: Cleaned up properties.
835 * Project.cs: Moved importing to Import.cs, cleaned up properties,
836 Separated evaluation and loading.
838 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
840 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
841 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
842 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
843 binding and evaluation, merge xml binding in constructors.
844 * DirectoryScanner.cs: Includes CAN be empty.
845 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
846 * ConsoleLogger.cs: Fix compilation warning.
848 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
850 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
852 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
854 * Engine.cs: API cleanup.
856 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
858 * Project.cs: Cleaned up add.
859 * Expression.cs: Hacked to transform \ and / to path separators.
860 * BuildPropertyGroup.cs: Small cleanup.
861 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
864 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
866 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
867 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
869 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
870 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
871 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
873 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
874 * TaskElement.cs: Temporarily removed.
875 * Xml.cs: Changed to static.
877 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
879 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
880 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
881 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
882 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
883 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
884 IBuildPropertyGroupCollection.cs: Removed.
886 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
888 * BuildItem.cs: Removed IBuildItem references.
889 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
890 IBuildItemGroup references. Changed Evaluate to internal.
891 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
892 reference and hidden constructors.
893 * BuildProperty.cs: Removed IBuildProperty reference.
894 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
895 IBuildPropertyGroup references. Changed Evaluate to internal.
896 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
897 reference and hidden constructors.
898 * ConsoleLogger.cs: Updated names of event handlers.
899 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
900 Escape. Added UnloadAllProjects () and UnloadProject ().
901 * FileLogger.cs: Removed ApplyParameter ().
902 * GroupingCollection.cs: Hidden.
903 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
904 * ItemPropertyGroupingBase.cs: Commented.
905 * ProcessingPass.cs: Hidden.
906 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
908 * Target.cs: Removed ITarget reference.
909 * TargetCollection.cs: Removed ITargetCollection reference.
910 * TaskElement.cs: Removed ITaskElement reference.
911 * TaskEngineAssemblyResolver.cs: Hidden.
912 * Utilities.cs: Made static class, removed CheckPath (),
913 ValidateCulture (), GetSupportedCultures () and added Escape ().
915 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
917 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
920 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
922 * Project.cs: Added MonoTODO attributes.
923 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
924 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
925 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
926 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
927 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
928 BuildItemGroup.cs, InvalidProjectFileException.cs,
929 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
930 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
931 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
932 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
933 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
934 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
935 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
936 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
937 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
938 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
939 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
940 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
942 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
944 * TaskDatabase.cs: Change Shared to Framework.
945 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
946 CaseInsensitiveHashCodeProvider
948 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
950 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
951 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
954 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
956 * InternalLoggerException.cs: Changed protected fields to private.
958 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
960 * Engine.cs: Added check for globalProperties.
961 * Project.cs: Added using path from importedProject.FullFileName when
962 adding UsingTask elements.
964 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
966 * TaskElement.cs: Changed ReflectedType to PropertyType.
967 * ChangeType.cs (TransformToString): Changed to pass proper Type to
970 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
972 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
974 * BuildProperty.cs: Organized PropertyType enum.
975 * Engine.cs: Added setting CommandLine PropertyType of global
978 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
980 * InvalidProjectFileException.cs: Changed Message property.
981 * ChangeType.cs (TransformToString): Added separator between items.
982 * TaskEngineAssemblyResolver.cs: Formatting.
984 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
986 * DirectoryScanner.cs: Added.
987 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
988 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
989 * Project.cs: Removed Evalute* ().
991 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
993 * Target.cs: Formatting.
994 * Expression.cs: Added check if array == null.
995 * BuildItem.cs: Removed 'break' to remove warnings.
996 * ConsoleLogger.cs: Formatting.
997 * Engine.cs: Added handling of default target(s).
998 * Project.cs: Added handling of default target(s).
1000 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1002 * TaskElement.cs: Added check for parameters.
1003 * Target.cs: Added logging of target skipping.
1004 * Expression.cs: Changed returning object[] to string[], bool[]... in
1006 * ItemReference.cs: Fixed for item references without custom
1008 * BatchingImpl.cs: Added real inputs/outputs checking.
1009 * Engine.cs: Moved global properties setting.
1010 * Project.cs: Moved global properties setting.
1012 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1014 * Target.cs: Added checks for target existence.
1015 * BuildItemGroup.cs: Changed to use transforms.
1016 * MetadataReference.cs: Wrote real implementation.
1017 * ItemReference.cs: Rewritten to use transforms.
1018 * BuildItem.cs: Changes for transforms and metadata.
1019 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1021 * Project.cs: Fixed project importing.
1022 * ImportedProject.cs: Changed to throw exceptions instead of returning
1025 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1027 * Engine.cs: Removed FIXME.
1028 * Project.cs: Splitted ProcessElements and added project importing.
1029 * ImportedProject.cs: Rewritten.
1031 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1033 * TaskElement.cs: Added getting of objects of every type.
1034 * BuildItemGroup.cs: Added ToITaskItemArray ().
1035 * Expression.cs: Implemented part that is not using metadata.
1036 * ItemReference.cs: Implemented parsing item references. Need to fix
1038 * BuildItem.cs: Fixed ToITaskItem ().
1039 * PropertyReference.cs: Implemented parsing property references. This
1040 also needs validity checking.
1042 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1044 * TaskElement.cs: Added Output element handling.
1045 * Target.cs: Cleaned up.
1046 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1047 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1048 ItemReference.cs, ChangeType.cs: Added.
1049 * BuildItem.cs: Added creating BuildItem from TaskItem.
1050 * BuildPropertyGroup.cs: Small changes.
1051 * BatchingImpl.cs: Fixed to return real task execution result.
1052 * BuildProperty.cs: Fixed FinalValue property.
1053 * Engine.cs: Reformatted logging.
1054 * Project.cs: Added check to EvaluateProperty.
1056 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1058 * TaskElement.cs: Added part of execution engine.
1059 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1060 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1061 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1062 * BuildItem.cs: Added handling of built-in metadata and referencing
1063 Items by name not FullName.
1064 * BatchingImpl.cs: Added temporary task "batching".
1065 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1066 * Project.cs: Added Evaluate. It will be moved to separate class.
1068 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1070 * EventSource.cs, Engine.cs: Added CriticalEvents.
1071 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1072 Project.cs: Added some support for items.
1073 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1075 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1077 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1080 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1082 * BatchingImpl.cs: Added.
1083 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1084 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1085 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1086 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1087 GroupingCollection.cs: Updated.
1089 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1091 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1092 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1093 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1094 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1095 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1096 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1097 InternalLoggerException.cs, InvalidProjectFileException.cs,
1098 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1099 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1100 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1101 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1102 Initial check-in of implementations.
1104 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1106 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1107 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1108 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1109 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1110 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1111 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1112 Initial check-in of interfaces and a syntax file, real classes are
1113 changing a lot so I'll wait a moment with checking them in.