1 2009-12-22 Ankit Jain <jankit@novell.com>
4 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
5 * BuildItem.cs: Track api changes.
7 2009-12-02 Ankit Jain <jankit@novell.com>
10 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
11 being iterated over. Patch by Laurent Etiemble
12 <laurent.etiemble@gmail.com>
14 2009-11-28 Ankit Jain <jankit@novell.com>
17 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
18 * Project.cs (Batch): New. Contains the perBatchItems and the
19 commonItems for the batch.
20 Use a stack of batches, instead of directly setting the current
24 (SetBatchedItems): Make this private.
25 (GlobalProperties.set): Re-evaluating the project is not required
27 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
29 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
31 * Target.cs (Build): Reset the current batch to nil before evaluating
32 and building this target.
34 2009-11-28 Ankit Jain <jankit@novell.com>
36 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
37 available in either perBatchItemsByName or commonItemsByName
38 or the evaluatedItemsByName collection. Allows the use of
39 items which are not batched, but are consumed in case of batching.
41 2009-11-26 Ankit Jain <jankit@novell.com>
43 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
44 refs also, for Inputs and Outputs.
46 2009-10-13 Ankit Jain <jankit@novell.com>
48 * DirectoryScanner.cs:
49 * ExpressionCollection.cs:
50 * GroupingCollection.cs:
52 * Target.cs: Fix warnings.
54 2009-10-12 Ankit Jain <jankit@novell.com>
56 * Target.cs (TargetFile): New. Gives the name of the file
57 containing the target definition.
58 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
59 return this for ProjectFileOfTaskNode.
60 * BuildTask.cs (LogTaskStarted):
61 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
63 (InitializeTask): Set BuildEngine's task file to parent target's
65 * Engine.cs (LogProjectStarted): Incase of default targets, set
66 TargetNames to String.Empty .
67 * TargetBatchingImpl.cs (LogTargetStarted):
68 (LogTargetFinished): Use target.TargetFile for the event.
70 * ConsoleLogger.cs: Keep a stack of project/target/task being
71 executed. And corresponding list of errors and warnings.
72 (EventsToString): Stringifies the current "stack", to be used
73 as key to the table of errors/warnings and for show messages
74 at the end of the build.
76 2009-10-12 Ankit Jain <jankit@novell.com>
78 * Project.cs (Load): Add argument checks.
80 2009-10-11 Ankit Jain <jankit@novell.com>
82 * ConsoleLogger.cs (no_colors): Rename to ..
83 (use_colors): .. this. Fix the case when XBUILD_COLORS
86 2009-10-11 Ankit Jain <jankit@novell.com>
88 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
89 Support 'XBUILD_COLORS' to set colors for errors, warnings,
92 2009-10-10 Ankit Jain <jankit@novell.com>
94 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
95 becomes true, don't reset it. We are looking for "atleast one
98 2009-10-08 Ankit Jain <jankit@novell.com>
100 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
101 directly using DirectoryInfo ("z:"), that doesn't return
104 2009-10-08 Ankit Jain <jankit@novell.com>
106 * DirectoryScanner.cs: Handle absolute paths. Fix to work
107 correctly on windows. Change order of adding paths to match
108 msbuild, useful to have.
110 2009-10-08 Ankit Jain <jankit@novell.com>
112 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
113 of the 'Output' element also.
114 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
116 2009-10-07 Ankit Jain <jankit@novell.com>
118 * ConsoleLogger.cs: Mark build as failed, if any project failed.
120 2009-10-06 Ankit Jain <jankit@novell.com>
122 * ConsoleLogger: Improve error reporting. Don't count failed task,
123 target or project as another error. Show "errors" after "warnings",
124 more useful to the user.
125 * Project.cs (BuildTarget): Log error instead of using CWL.
127 2009-10-03 Ankit Jain <jankit@novell.com>
129 * Project.cs (OS): New.
130 (InitializeProperties): Set 'OS' as a pre-defined property, set to
131 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
133 2009-10-02 Ankit Jain <jankit@novell.com>
135 * Expression.cs (Parse): Don't change '/' to '\\', not required.
137 2009-10-01 Ankit Jain <jankit@novell.com>
139 * Project.cs (AddImport): Show the correct source file name, when
140 the import is in the main project file.
142 2009-10-01 Ankit Jain <jankit@novell.com>
145 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
146 the full path of the imported project here itself, instead of ..
148 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
150 * Project.cs (AddImport): Don't process if condition is false.
151 Warn if a circular reference is detected, and ignore the import.
153 2009-09-29 Ankit Jain <jankit@novell.com>
155 * GroupingCollection.cs (Evaluate): Mark internal.
156 * Project.cs (AddImport): Only evaluate the properties,
157 till before the import.
159 2009-09-29 Ankit Jain <jankit@novell.com>
161 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
162 the project xml, as returned Xml*Reader normalizes the newlines.
163 Instead directly use the TextReader with XmlDocument.Load ().
165 2009-09-27 Ankit Jain <jankit@novell.com>
167 * ConditionParser.cs: Show the condition being parsed in the
170 2009-09-26 Ankit Jain <jankit@novell.com>
172 * Expression.cs: Allow '-' in item, property and metadata names.
174 2009-09-26 Ankit Jain <jankit@novell.com>
176 * Project.cs (Evaluate): Split into this and ..
177 (PrepareForEvaluate): .. this.
178 (AddImport): Evaluate the current set of properties/items etc,
179 before processing the imported project. Honor the Condition
181 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
183 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
184 * BuildItemGroup.cs (Evaluate): Evaluate only once.
185 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
187 2009-09-26 Ankit Jain <jankit@novell.com>
189 * Project.cs: Get InitialTargets from the imported projects also.
190 The combined list of targets are executed, in the order they were
192 DefaultTargets are also read in from imported projects, and the first
193 non-empty DefaultTargets found is used.
195 2009-09-25 Ankit Jain <jankit@novell.com>
197 * Project.cs (BuildTarget): Handle skipped targets.
199 2009-09-25 Ankit Jain <jankit@novell.com>
201 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
202 InvalidProjectFileException with useful error.
204 2009-09-24 Ankit Jain <jankit@novell.com>
206 * Project.cs (Load): Emit the .sln.proj file only if env var
207 XBUILD_EMIT_SOLUTION is set.
209 2009-09-24 Ankit Jain <jankit@novell.com>
211 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
213 2009-09-24 Ankit Jain <jankit@novell.com>
215 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
218 2009-09-10 Ankit Jain <jankit@novell.com>
220 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
221 preserved, so use ConvertTo ITaskItem, rather than string.
222 Ensure that the new items have the metadata from references _in_
223 Include, and the metadata of _this_ builditem.
224 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
225 (MatchedFilenames): Rename to ..
226 (MatchedItems): .. this, and change type of array of ITaskItem.
227 Ensure that metadata of items in Includes are retained in the
230 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
231 param. If separator is present, then just return a "Join'ed"
232 string as the single task item.
233 * ItemReference.cs: Track api changes.
235 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
236 as we need separate task items.
238 2009-09-01 Ankit Jain <jankit@novell.com>
241 * Project.cs (BuildTarget): Move caching of target outputs to ..
242 * Target.cs: .. here. Move LogTargetSkipped also here.
243 Ensure that caching happens for target dependencies also.
245 2009-09-01 Ankit Jain <jankit@novell.com>
247 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
250 2009-09-01 Ankit Jain <jankit@novell.com>
252 * Expression.cs (ParseOptions): New enum. Replace the bool params
253 of exression.Parse with this. Add option to control expansion of
255 (CopyToExpressionCollection): Track api changes.
257 Update all expr.Parse calls to use the new enum.
258 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
259 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
261 * BatchingImplBase.cs: Track api changes. Allow metadata refs
263 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
264 * ItemReference.cs: Allow metadata in transforms.
265 * TaskEngine.cs: Allow metadata refs.
267 * MetadataReference.cs (.ctor): Add a 'original string' param.
269 2009-08-29 Ankit Jain <jankit@novell.com>
271 * Expression.cs (ExpressionOptions): New.
273 Introduce a ExpressionOptions argument to all ConvertTo*
274 methods. Implement the rule: in evaluation phase, expand
275 all items completely, but dont expand item refs in properties.
276 At other times, expand the item refs in the properties.
277 See comments in Expression.cs, for a full explanation.
278 * BuildItem.cs: Track api changes.
279 * BuildItemGroup.cs: Likewise.
280 * BuildProperty.cs: Track api changes. Handle self-references.
281 * BuildTask.cs: Track api changes.
282 * IReference.cs: Add ExpressionOptions param.
283 * ItemReference.cs: Track api changes.
284 * PropertyReference.cs: Likewise.
285 * MetadataReference.cs: Likewise.
286 * ExpressionCollection.cs: Track api changes. Add support for
287 converting all primitive types and DateTime, instead of a fixed
289 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
290 * TaskBatchingImpl.cs: Handle the case when batching is required,
291 but no items are available.
293 * TaskEngine.cs: Throw on unsupported types. Correctly handle
294 properties in case of empty values.
296 2009-08-26 Ankit Jain <jankit@novell.com>
298 * Expression.cs: Correctly handle a item reference with transform
299 when allowItems is false. If item ref is ignored, then the transform
300 will get incorrectly matched as a metadata ref.
301 * ItemReference.cs (.ctor): Add a @original_string param.
303 2009-08-26 Ankit Jain <jankit@novell.com>
305 * Utilities.cs (UnescapeFromXml): New. From md.
306 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
307 of the property element.
309 2009-08-26 Ankit Jain <jankit@novell.com>
311 * BuildProperty.cs (ConvertToString): New.
312 (ConvertoToITaskItemArray): New. Parse the property value.
313 * PropertyReference.cs (ConvertToString): Use BuildProperty's
315 (ConvertoToITaskItemArray): Likewise.
317 2009-08-21 Ankit Jain <jankit@novell.com>
319 * Engine.cs (EndProjectBuild): Use the @succeeded argument
320 instead of hardcoding 'true'.
321 * Target.cs (Build): Add an overload to return executeOnErrors
322 value for the target executed. If building dependencies fails,
323 and executeOnErrors is true, then execute OnError tasks.
324 Add the new param to ..
325 (BuildDependencies): this, ..
327 (GetDependencies): Improve error message and variable name.
328 (ExecuteOnErrors): Honor OnError tag's Condition also.
329 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
331 2009-08-20 Ankit Jain <jankit@novell.com>
334 * Project.cs (Load): Add support for loading .sln files.
336 2009-08-20 Ankit Jain <jankit@novell.com>
338 * BuildTask.cs (Execute): Use task_logger only after the task
339 has been initialized. Catch and report task loading errors.
340 * Target.cs (DoBuild): Dont rethrow the exception, and emit
341 the stacktrace as a low importance message.
343 2009-08-18 Ankit Jain <jankit@novell.com>
345 * BatchingImplBase.cs: Make the item name lookups and metadata be case
347 * TaskDatabase.cs: Likewise.
348 * TaskEngine.cs: Make property name looks, case insensitive.
350 2009-08-09 Miguel de Icaza <miguel@novell.com>
352 * ConsoleLogger.cs: Change the format of the error and warnings
353 strings to work when invoked inside Emacs by not rendering the
354 column if available, by using lowercase "error"/"warning" strings
355 instead of camelcased versions and to not have unnecessary padding.
357 2009-07-31 Ankit Jain <jankit@novell.com>
359 * ConsoleLogger.cs: Keep track of all the errors and warnings
360 and show them at the end.
362 2009-07-31 Ankit Jain <jankit@novell.com>
364 * Target.cs (Build): Log a message if a target is skipped.
366 * BuildTask.cs (Execute): Log error if task execution fails.
368 2009-07-30 Ankit Jain <jankit@novell.com>
370 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
371 v2.0, this will change when multi-targeting lands.
373 2009-07-30 Ankit Jain <jankit@novell.com>
375 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
376 'MSBuildProjectName' properties.
378 2009-07-28 Ankit Jain <jankit@novell.com>
380 * TaskEngine.cs (Prepare): Fix formatting mistake.
381 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
382 fails. Also, emit result of project at Normal verbosity level.
384 2009-07-23 Ankit Jain <jankit@novell.com>
387 * Project.cs (ExtensionsPath): New.
388 (InitializeProperties): Set "MSBuildExtensionsPath" property.
390 2009-06-12 Ankit Jain <jankit@novell.com>
393 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
394 itemref is allowed if the prev/next element is ";".
396 2009-06-12 Ankit Jain <jankit@novell.com>
398 * Utilities.cs (FromMSBuildPath): Return null if the path contains
399 "drive:" only on windows.
401 2009-06-07 Ankit Jain <jankit@novell.com>
403 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
406 2009-05-29 Ankit Jain <jankit@novell.com>
408 Correctly handle global properties. Correctly log
409 project/build events.
411 * BuildPropertyGroup.cs (Clone): Implement.
412 * Engine.cs (globalProperties): Rename to ..
413 (global_properties): .. this.
414 (currentlyBuildingProjectsStack): New. Used to correctly
415 log and raise project/build start/finish events.
416 (BuildProjectFile): Override any project global properties
417 with explicitly specified ones, here in the param @globalProperties.
418 Mark project for reevaluation, which will update the engine's
419 global properties also.
420 Reset both engine and project's old global properties at the end.
421 (UnregisterAllLoggers): Log build finished only if we are currently
423 (StartBuild): Rename to ..
424 (StartProjectBuild): .. this. Keeps track of the projects being built
425 in the new stack, and logs project and build events accordingly.
426 (EndProjectBuild): New. Uses the stack to keep track of projects
427 finishing builds, and raises project and build events accordingly.
428 (LogProjectStarted): Move here from Project.cs
429 (LogProjectFinished): Likewise.
431 * Project.cs (Build): Log start of project build.
432 Set current directory to the project file's dir, and reset at end.
433 (BuildInternal): Don't log here, its done in Build.
434 (BuildTarget): Already built targets are keyed by the set of global
435 properties that they were built with.
436 (GlobalPropertiesToString): New.
437 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
438 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
439 (Evaluate): Remove built targets only if we are currently building and
440 build settings are None.
441 Merge project's global properties with those of the parent engine.
442 Add missing properties from engine's global properties.
443 (LogTargetSkipped): Fix format string, add the reqd argument.
445 2009-05-29 Ankit Jain <jankit@novell.com>
447 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
448 (HasTrailingSlash): New.
450 2009-05-12 Ankit Jain <jankit@novell.com>
452 * Project.cs (.ctor): Init timeOfLastDirty.
454 2009-05-05 Miguel de Icaza <miguel@novell.com>
456 * Contribution from Martin Brenn to fix #498154.
458 2009-04-27 Ankit Jain <jankit@novell.com>
461 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
462 one passed as argument.
464 2009-04-27 Ankit Jain <jankit@novell.com>
466 * TaskEngine.cs (Prepare): Emit a useful error message property value
467 can't be converted to required type.
469 2009-04-27 Ankit Jain <jankit@novell.com>
471 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
472 as valid true values for bool, and corresponding for false.
474 2009-03-27 Jonathan Chambers <joncham@gmail.com>
476 * BuildWhen.cs: Add basic implementation.
477 * BuildChoose.cs: Add basic implementation.
478 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
479 EvaluatedItemsIgnoringCondition.
480 * GroupingCollection.cs: Add evaluation of BuildChoose items.
482 2009-03-26 Jonathan Chambers <joncham@gmail.com>
484 * TaskDatabase.cs (RegisterTask): Search for class by name
485 if task was not found using GetType (which uses namespace).
487 2009-02-26 Ankit Jain <jankit@novell.com>
489 * Target.cs: Handle target with no tasks. Log errors.
491 2009-02-24 Ankit Jain <jankit@novell.com>
493 Lazily load UsingTask tasks.
494 * UsingTask.cs (Evaluate): Register 'this' with task database,
495 but don't load it yet. Register only if condition evaluates to true.
496 Move the load logic to ..
497 (Load): .. here. Register with the specified task database.
498 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
499 in a table keyed by task name, but don't load it yet.
500 (GetTypeFromClassName): Try to load UsingTask if task is not already
501 loaded. Move loading logic to ..
502 (GetTypeFromClassNameInternal): .. here.
503 (CopyTasks): Copy the usingTasks table also.
505 2009-02-23 Ankit Jain <jankit@novell.com>
507 * BuildItem.cs (AddMetadata): Allow overwriting older values.
509 2009-02-22 Ankit Jain <jankit@novell.com>
511 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
512 instead of XmlElement. Eg. XmlComment
514 2009-02-21 Ankit Jain <jankit@novell.com>
516 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
517 * Project.cs (Load): Use FromMSBuildPath on the path.
518 (InitializeProperties): Set "MSBuildToolsPath" also.
520 2009-02-20 Ankit Jain <jankit@novell.com>
523 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
524 transforms) in conditions.
525 * ConditionParser.cs: Parse unquoted item, property references.
526 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
527 * Token.cs (Token.ToString): Override.
528 (TokenType.Transform): Uncomment.
530 2009-02-12 Jonathan Chambers <joncham@gmail.com>
532 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
533 no XmlElement.InnerText. This allows properties to be additional
536 2009-02-01 Ankit Jain <jankit@novell.com>
538 * BuildEngine.cs (BuildProjectFile): Use
539 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
540 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
541 built. Move logging of project start/finish to ..
542 * Project.cs: .. here. Build a target only if hasn't been built already.
543 Keep track of target outputs, and return those even if an already built
544 target has been invoked again.
545 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
547 2009-01-31 Ankit Jain <jankit@novell.com>
549 * BatchingImpl.cs: Split into ..
550 * BatchingImplBase.cs: .. this,
551 * TaskBatchingImpl.cs: .. this ..
552 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
554 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
555 (Log*): Move to TargetBatchingImpl .
559 2009-01-30 Ankit Jain <jankit@novell.com>
561 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
564 2009-01-29 Ankit Jain <jankit@novell.com>
566 * BuildItem.cs (child_items): Change type from BuildItemGroup to
568 (HasParent): Rename to ..
569 (HasParentItem): .. this.
570 (ParentItemGroup): Add setter.
572 * BuildItemGroup.cs (.ctor): Add overload with @project param.
574 (AddItem): Correctly set the ParentItemGroup for new build items.
575 (ParentProject): Add setter.
576 * Project.cs: Set the project for new BuildItemGroup instances.
577 * TaskEngine.cs (PublishItemGroup): Likewise.
579 2009-01-06 Ankit Jain <jankit@novell.com>
581 * Project.cs (Build): Honor InitialTargets list.
583 2009-01-06 Ankit Jain <jankit@novell.com>
585 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
586 the property type also.
587 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
590 2009-01-06 Ankit Jain <jankit@novell.com>
592 * Project.cs (Build): Correctly handle null targetNames argument.
594 2009-01-06 Ankit Jain <jankit@novell.com>
596 * Engine.cs (LogProjectStarted): Add a null check.
598 2009-01-01 Ankit Jain <jankit@novell.com>
600 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
601 * ChangeType (ToBuildItemGroup): Add 'split' param.
603 * Expression.cs (Parse): Add a new overload with a 'split' param.
604 * ExpressionCollection.cs (Add): Add new overload for IReference,
605 remove the ones for Item/Metadata/PropertyReference.
606 (ConvertToArray): Implement correctly.
607 (ConvertToString): Track api changes.
608 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
609 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
610 (AddItemsToArray): New.
611 (ConvertToITaskItemArrayFromString): Refactor a bit.
612 (ThrowCantConcatError): New.
613 * ItemReference.cs: Update.
614 * MetadataReference.cs: Update.
615 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
617 * BuildPropertyGroup.cs: Track api changes.
618 * TaskEngine.cs (PublishOutput): Improve exception message.
619 * Project.cs (DoLoad): Improve exception message. Add a null check.
621 2008-12-30 Ankit Jain <jankit@novell.com>
623 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
624 metadata values for unqualified references.
625 (BuildItemGroupToITaskItemArray): Rename to ..
626 (BuildItemGroupToITaskItems): .. this.
629 2008-12-18 Ankit Jain <jankit@novell.com>
631 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
633 2008-12-17 Ankit Jain <jankit@novell.com>
635 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
636 only one instance of unique metadata value is required.
638 2008-11-22 Ankit Jain <jankit@novell.com>
640 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
642 * MetadataReference.cs (ConvertToITaskItemArray): New.
643 * Project.cs (GetAllItemGroups): New.
645 2008-11-21 Ankit Jain <jankit@novell.com>
647 * BatchingImpl.cs: Add task batching implementation.
648 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
649 * ExpressionCollection.cs (Count): New.
650 (ConvertToString): Handle MetadataReference.
651 * ItemReference.cs (ConvertToString):
652 (ConvertToITaskItemArray): Use the batching api.
654 * MetadataReference.cs (ConvertToString): New.
656 * Project.cs: Add api for accessing batched items and metadata.
657 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
660 2008-10-01 Ankit Jain <jankit@novell.com>
662 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
663 (BuildProjectFile): If filename is null (project.LoadXml) then use
665 * BuildTask.cs (InitializeTask): Track api change.
666 * Expression.cs (Parse): Skip empty entries in the expression.
668 2008-09-24 Ankit Jain <jankit@novell.com>
670 * Engine.cs: Add argument checks.
671 * Project.cs: Likewise.
673 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
675 * Project.cs (Build): Add outputs to targetOutputs.
677 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
679 * ExpressionCollection.cs (ConvertToArray): Simplify.
681 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
683 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
684 simplified. It still needs tests and refactoring.
686 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
688 * BuildEngine.cs (BuildProjectFile): Don't crash on null
691 * Target.cs: Add Outputs property.
693 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
695 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
696 (). Support condition.
698 * BatchingImpl.cs (BatchBuildTask): Simplify.
700 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
702 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
705 * ConditionFunctionExpression.cs: Removed warnings.
707 * BuildTask.cs (Execute): Write exceptions to std err (they should be
708 logged but it's better than swallowing).
710 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
712 * ConditionTokenizer.cs: Add Putback ().
714 * ConditionParser.cs: Add parsing of functions.
716 * ConditionFunctionExpression.cs: Add.
718 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
720 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
721 set property in persisted property group.
723 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
725 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
728 * ConsoleLogger.cs (TargetFinishedHandler)
729 (TaskFinishedHandler): Increment error count.
731 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
733 * BuildItem.cs (RemoveMetadata): Remove from XML.
734 (SetMetadata): Trigger project reevaluation.
736 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
738 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
741 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
743 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
744 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
745 BatchingImpl.cs, BuildProperty.cs: Track API changes.
747 * Expression.cs (Parse): Added allowItems parameter and made regexes
750 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
751 will try to import a.ext when given a.EXT.
753 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
755 * BuildItemGroup.cs: Store information saying what is the last item
756 group that contains build item name.
758 * Project.cs (Build): Pass empty array (build default targets).
760 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
762 * Token.cs: Commented Transform and LiteralSubExpression and added
765 * ConditionParser.cs: Removed redundant casts, rewrote
766 ParseFactorExpression () and added parsing of '!'.
768 * ConditionTokenizer.cs: Always skip whitespaces when getting next
769 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
770 Moved ReadChar () in front of all ifs.
772 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
774 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
775 from XML. (not to escape items that have parents twice).
777 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
779 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
780 (Project): Renamed to ParentProject.
782 * BuildItem.cs (ctor)
783 (CopyCustomMetadata): Add null check.
785 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
786 (RemoveProperty): Added null check.
788 * TargetCollection.cs (RemoveTarget): Added null check.
790 * Engine.cs (UnloadProject): Added null check.
792 * GroupingCollection.cs (Remove): Check if removed group belongs to
795 * Project.cs (AddNewItem): Implemented.
796 (RemoveItem): Reorganized.
797 (SetProjectExtensions): Added null check.
799 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
801 * BuildItemGroup.cs (Detach): Added.
803 (RemoveItemAt): Used Detach ().
805 * BuildItem.cs: Made FromXml and HasParent internal and added
806 ParentItem and ParentItemGroup properties (internal).
809 * GroupingCollection.cs (Remove): Used Detach ().
811 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
813 (GetEvaluatedItemsByNameIgnoringCondition)
814 (GetEvaluatedItemsByName)
815 (GetEvaluatedProperty): Reevaluate if needed.
817 (RemoveAllItemGroups)
818 (RemoveAllPropertyGroups): Implemented.
819 (DoLoad): Added closing of TextReader.
821 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
823 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
824 change but just mark that it needs it.
826 * Project.cs: Reevaluate when it needs reevaluation and one of
827 Evaluated* properties is used.
829 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
831 * Target.cs: Throw an exception when <OnError> is not last element in
834 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
836 * TargetCollection.cs: If a target is already there replace it with
839 * BuildProperty.cs: Added XmlElement property.
841 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
843 * ImportCollection.cs: Don't add imports that are already added.
845 * BuildItemGroup.cs: MonoTODOs.
847 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
848 condition can't be evaluated to bool.
850 * BuildPropertyGroup.cs (Evaluate): Simplify.
852 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
854 * BuildWhen.cs: Moved BindToXml () code to ctor.
856 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
857 property needed for removing groups.
859 * Engine.cs: Added StartBuild () that logs build start when Build ()
862 * GroupingCollection.cs: Added Remove () for item and property groups.
864 * Project.cs (AddNewImport): Implemented.
865 (AddNewItemGroup): Implemented.
866 (AddNewPropertyGroup): Implemented.
867 (AddNewUsingTaskFromAssemblyFile): Implemented.
868 (AddNewUsingTaskFromAssemblyName): Implemented.
869 (RemoveItemGroup): Implemented.
870 (RemovePropertyGroup): Implemented.
872 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
874 * BuildItemGroup.cs (Clear): Remove from XML.
876 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
877 to Project.EvaluatedProperties.
878 (Clear): Remove from XML.
880 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
882 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
885 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
887 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
888 Add () calls when processing a project from Import and
889 evaluate_iterator for evaluation.
891 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
893 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
894 and prepend relative directory of importing project to full path of
897 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
899 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
900 BuildItemGroupCollection.cs, Project.cs: Track API changes.
902 * GroupingCollection.cs: Now it needs Project reference so added it.
904 * BuildTask.cs: Formatting.
906 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
908 * ConditionParser.cs (ParseAndEvaluate): Added.
910 * BuildItem.cs: Changed exception message.
912 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
914 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
915 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
916 GroupingCollection doesn't need Project reference.
918 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
920 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
921 (Project.EvaluatedItems is a read only item group.)
922 (ReplaceWith): Added.
924 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
925 global property group causes reevaluation of its project.
927 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
930 * OldExpression.cs: Removed.
932 * BuildProperty.cs (Evaluate): Simplified.
934 * ChangeType.cs (TemporaryTransform): Simplified.
936 * BuildItem.cs: There are now 3 types of build items: from XML, having
937 parent from XML, virtual. Added SplitParentItem ().
939 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
941 * Utilities.cs: Added Unescape ().
943 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
944 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
945 groups (at the moment just unescape).
947 * Expression.cs (CopyToExpressionList): Unescape strings.
949 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
951 * Target.cs (ctor): Added ImportedProject argument and removed
953 (AddNewTask): Implemented.
955 * TargetCollection.cs (AddNewTarget): Implemented.
957 * Project.cs: Track API changes.
959 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
961 * Target.cs (Build): Don't throw anything in case of error, just
964 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
967 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
970 * BuildProperty.cs (ToString): Throw an exception if property is not
972 (op_Explicit): Added a null check.
974 * Engine.cs: Better error message.
976 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
977 IndexOutOfRangeException.
979 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
980 (MarkProjectAsDirty): Set time.
982 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
984 * BuildItemGroup.cs (Clone): Throw exception.
986 * Project.cs (Load): Throw InvalidProjectFileException if anything
989 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
991 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
992 and ConvertToITaskItemArray ().
994 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
996 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
997 classes that were public in Beta 2 and aren't used.
999 * Expression.cs: Added replacement for parsing expressions char by
1000 char. It uses regexes to find item/property/metadata references in
1003 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1004 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1005 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1007 * ConditionRelationalExpression.cs: Formatting.
1009 * OldExpression.cs: Commented everything.
1011 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1012 parsing to Expression.
1014 * BuildItem.cs: Check if project is from XML in set_Condition and
1017 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1020 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1021 can evaluate expression in CanEvaluateToBool ().
1023 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1025 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1026 which item group is imported.
1028 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1030 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1032 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1033 BuildItemGroupCollection.cs: Little changes related to
1036 * ImportCollection.cs: Use GroupingCollection not an internal list.
1038 * Import.cs (Evaluate): Split to functions and check if
1039 EvaluatedProjectPath is empty.
1041 * GroupingCollection.cs, Project.cs: Move evaluation to
1042 GroupingCollection. Change algorithm to use 2 passes: first for property
1043 groups and imports and second for item groups.
1045 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1047 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1048 BuildItemGroup> not IDictionary.
1050 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1051 evaluated to false because we want to add every item to
1052 Project.EvaluatedItemsByNameIgnoringCondition.
1054 * Project.cs (Build): Don't throw an exception just return false.
1055 (GetEvaluatedProperty): Avoid NullReferenceException.
1056 (SetProjectExtensions): Implemented.
1058 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1060 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1062 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1063 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1064 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1066 * ImportCollection.cs: Added a note.
1068 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1070 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1072 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1073 (UsingTask[] array, int index)
1075 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1076 items to Project.EvaluatedItems in PublishItemGroup ();
1078 * BuildItemGroup.cs: Added [MonoTODO].
1080 * UsingTask.cs: Used expression for AssemblyFile to get around
1081 problems with '\' and '/'.
1083 * BuildItem.cs (ctor): Added null checks.
1084 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1085 (SetMetadata): Don't escape evaluatedMetadata and escape
1086 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1088 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1089 FromXml () instead of null checks.
1090 (SetProperty): Escape propertyValue when it is literal.
1092 * BuildProperty.cs: Changed exception message.
1094 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1096 (GetProjectExtensions): Implemented.
1098 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1100 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1101 GetParameterValue (), use expressions in ContinueOnError.
1102 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1103 instead of InvalidOperationException ().
1104 * ImportCollection.cs: Implement CopyTo ().
1105 * Target.cs: Remove redundant variables (XmlAttributes), return
1106 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1107 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1108 * Import.cs: Throw an exception when file does not exist.
1109 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1110 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1111 need to treat item as a token probably
1113 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1115 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1116 throw an exception).
1117 * BuildItemGroupCollection.cs: Changed exception types.
1119 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1121 * Engine.cs: Removed redundant cast.
1123 * UsingTaskCollection.cs:
1127 * TargetCollection.cs: Comment unused variable.
1128 * ConditionTokenizer.cs: Simplified checking if current token is a
1130 * Target.cs: Removed old code.
1132 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1134 * Target.cs: Changed "" to String.Empty.
1135 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1136 string was evaluated to String.Empty.
1137 * InternalLoggerException.cs:
1138 * InvalidProjectFileException.cs: Added LinkDemand before
1140 * ConsoleLogger.cs: Changed "" to String.Empty.
1141 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1142 with change to generics).
1143 * Project.cs: Made Build () throw more meaningful exception.
1145 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1147 * Target.cs: Reformatted.
1148 * TaskEngine.cs: Removed redundant code.
1149 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1150 * Engine.cs: Made BuildProjectFile () load project file if it's not
1153 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1155 * ConditionRelationalExpression.cs: Change comparers to case
1157 * ImportCollection.cs: Add NotImplementedExceptions.
1158 * BuildPropertyGroup.cs: Reformatted a bit.
1159 * BuildProperty.cs: The same.
1160 * Project.cs: Moved evaluation of imports before evaluation of
1161 properties. This may "work" until importing projects is redesigned but
1162 probably isn't correct.
1164 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1166 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1168 * BuildItemGroup.cs: Change return to continue.
1170 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1172 * ConditionParser.cs: Copyright note.
1173 * ExpressionCollection.cs: Fixed arrays passing.
1175 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1177 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1178 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1179 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1180 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1182 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1184 * Token.cs: Changed names: removed "than".
1185 * ConditionRelationalExpression.cs: Added.
1186 * ConditionFactorExpression.cs: Added.
1187 * BuildItemGroup.cs: Changed Condition property return value to return
1188 String.Empty instead of null.
1189 * ConditionParser.cs: Added support for parsing relational expressions
1191 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1192 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1193 and CanEvaluateToBool (), CanEvaluateToNumber () and
1194 CanEvaluateToString ().
1195 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1196 appropriately to ConditionExpression base class.
1197 * ConditionTokenizer.cs: Added null check and changed names in enums:
1199 * ConditionNotExpression.cs: Added.
1200 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1201 * Project.cs: Added checks for condition.
1203 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1205 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1206 ConditionalParser.cs: Changed name,
1208 * ConditionExpression.cs: Added Evaluate ().
1209 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1210 * BatchingImpl.cs: Added check if task should be executed.
1212 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1214 * UsingTask.cs: Changed properties to return null on empty attribute.
1215 * UsingTaskCollection.cs: Added object to SyncRoot.
1216 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1218 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1220 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1221 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1223 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1225 * Utilities.cs: Implemented Escape ().
1226 * BuildItem.cs: Added null checks.
1227 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1228 * Project.cs: Commented out redundant Evaluate ().
1229 * BuildChoose.cs: Minor changes.
1231 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1233 * Token: Added new few missing tokens.
1234 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1235 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1236 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1237 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1238 LiteralTokenizer.cs:
1239 Removed literal expression parsing based on tokenizer and
1240 parser. It needs to be done by regex.
1242 Moved tokenizer to ConditionalTokenizer.cs.
1244 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1246 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1247 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1248 methods converting reference to string from ToString () to
1249 ConvertToString () to avoid mistakes like using ToString () provided
1252 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1254 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1255 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1256 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1257 OldExpression and changed To* functions to one ConvertTo ().
1258 * TaskEngine.cs: Fixed PublishOutput ().
1259 * OldExpression.cs: Added. It will be temporarily used before
1260 LiteralExpression will be written using Tokenizer.
1261 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1262 ExpressionParseException.cs, LiteralExpression.cs: Added.
1264 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1266 * ImportedProject.cs: Removed warning.
1267 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1270 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1272 * Project.cs: Removed unnecessary variable.
1273 * Engine.cs: Added fixme.
1275 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1277 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1278 class (Mono.XBuild.Utilities.ReservedNameUtils).
1280 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1282 * BuildTask.cs: Removed unnecessary variable.
1283 * Engine.cs: Added logging of the build start.
1284 * Project.cs: Removed unnecessary variable.
1286 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1288 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1290 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1292 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1294 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1296 * BuildItem.cs: Fix typo?
1298 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1300 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1301 Engine.cs, Project.cs: Coding style fixes.
1303 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1305 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1307 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1309 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1310 to pass tests. Wrote serialization constructor.
1311 * Engine.cs, Project.cs: Global engine and project unloading, test and
1314 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1316 * UsingTask.cs: Formatting changes.
1318 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1320 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1321 to lists instead of hashtables.
1322 * Import.cs: Cleaned up, moved importing from Project.cs
1323 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1324 * Engine.cs: Cleaned up properties.
1325 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1326 Separated evaluation and loading.
1328 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1330 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1331 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1332 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1333 binding and evaluation, merge xml binding in constructors.
1334 * DirectoryScanner.cs: Includes CAN be empty.
1335 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1336 * ConsoleLogger.cs: Fix compilation warning.
1338 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1340 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1342 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1344 * Engine.cs: API cleanup.
1346 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1348 * Project.cs: Cleaned up add.
1349 * Expression.cs: Hacked to transform \ and / to path separators.
1350 * BuildPropertyGroup.cs: Small cleanup.
1351 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1354 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1356 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1357 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1359 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1360 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1361 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1363 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1364 * TaskElement.cs: Temporarily removed.
1365 * Xml.cs: Changed to static.
1367 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1369 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1370 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1371 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1372 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1373 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1374 IBuildPropertyGroupCollection.cs: Removed.
1376 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1378 * BuildItem.cs: Removed IBuildItem references.
1379 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1380 IBuildItemGroup references. Changed Evaluate to internal.
1381 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1382 reference and hidden constructors.
1383 * BuildProperty.cs: Removed IBuildProperty reference.
1384 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1385 IBuildPropertyGroup references. Changed Evaluate to internal.
1386 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1387 reference and hidden constructors.
1388 * ConsoleLogger.cs: Updated names of event handlers.
1389 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1390 Escape. Added UnloadAllProjects () and UnloadProject ().
1391 * FileLogger.cs: Removed ApplyParameter ().
1392 * GroupingCollection.cs: Hidden.
1393 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1394 * ItemPropertyGroupingBase.cs: Commented.
1395 * ProcessingPass.cs: Hidden.
1396 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1398 * Target.cs: Removed ITarget reference.
1399 * TargetCollection.cs: Removed ITargetCollection reference.
1400 * TaskElement.cs: Removed ITaskElement reference.
1401 * TaskEngineAssemblyResolver.cs: Hidden.
1402 * Utilities.cs: Made static class, removed CheckPath (),
1403 ValidateCulture (), GetSupportedCultures () and added Escape ().
1405 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1407 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1410 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1412 * Project.cs: Added MonoTODO attributes.
1413 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1414 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1415 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1416 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1417 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1418 BuildItemGroup.cs, InvalidProjectFileException.cs,
1419 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1420 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1421 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1422 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1423 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1424 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1425 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1426 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1427 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1428 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1429 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1430 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1432 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1434 * TaskDatabase.cs: Change Shared to Framework.
1435 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1436 CaseInsensitiveHashCodeProvider
1438 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1440 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1441 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1444 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1446 * InternalLoggerException.cs: Changed protected fields to private.
1448 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1450 * Engine.cs: Added check for globalProperties.
1451 * Project.cs: Added using path from importedProject.FullFileName when
1452 adding UsingTask elements.
1454 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1456 * TaskElement.cs: Changed ReflectedType to PropertyType.
1457 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1460 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1462 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1464 * BuildProperty.cs: Organized PropertyType enum.
1465 * Engine.cs: Added setting CommandLine PropertyType of global
1468 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1470 * InvalidProjectFileException.cs: Changed Message property.
1471 * ChangeType.cs (TransformToString): Added separator between items.
1472 * TaskEngineAssemblyResolver.cs: Formatting.
1474 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1476 * DirectoryScanner.cs: Added.
1477 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1478 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1479 * Project.cs: Removed Evalute* ().
1481 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1483 * Target.cs: Formatting.
1484 * Expression.cs: Added check if array == null.
1485 * BuildItem.cs: Removed 'break' to remove warnings.
1486 * ConsoleLogger.cs: Formatting.
1487 * Engine.cs: Added handling of default target(s).
1488 * Project.cs: Added handling of default target(s).
1490 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1492 * TaskElement.cs: Added check for parameters.
1493 * Target.cs: Added logging of target skipping.
1494 * Expression.cs: Changed returning object[] to string[], bool[]... in
1496 * ItemReference.cs: Fixed for item references without custom
1498 * BatchingImpl.cs: Added real inputs/outputs checking.
1499 * Engine.cs: Moved global properties setting.
1500 * Project.cs: Moved global properties setting.
1502 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1504 * Target.cs: Added checks for target existence.
1505 * BuildItemGroup.cs: Changed to use transforms.
1506 * MetadataReference.cs: Wrote real implementation.
1507 * ItemReference.cs: Rewritten to use transforms.
1508 * BuildItem.cs: Changes for transforms and metadata.
1509 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1511 * Project.cs: Fixed project importing.
1512 * ImportedProject.cs: Changed to throw exceptions instead of returning
1515 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1517 * Engine.cs: Removed FIXME.
1518 * Project.cs: Splitted ProcessElements and added project importing.
1519 * ImportedProject.cs: Rewritten.
1521 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1523 * TaskElement.cs: Added getting of objects of every type.
1524 * BuildItemGroup.cs: Added ToITaskItemArray ().
1525 * Expression.cs: Implemented part that is not using metadata.
1526 * ItemReference.cs: Implemented parsing item references. Need to fix
1528 * BuildItem.cs: Fixed ToITaskItem ().
1529 * PropertyReference.cs: Implemented parsing property references. This
1530 also needs validity checking.
1532 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1534 * TaskElement.cs: Added Output element handling.
1535 * Target.cs: Cleaned up.
1536 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1537 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1538 ItemReference.cs, ChangeType.cs: Added.
1539 * BuildItem.cs: Added creating BuildItem from TaskItem.
1540 * BuildPropertyGroup.cs: Small changes.
1541 * BatchingImpl.cs: Fixed to return real task execution result.
1542 * BuildProperty.cs: Fixed FinalValue property.
1543 * Engine.cs: Reformatted logging.
1544 * Project.cs: Added check to EvaluateProperty.
1546 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1548 * TaskElement.cs: Added part of execution engine.
1549 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1550 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1551 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1552 * BuildItem.cs: Added handling of built-in metadata and referencing
1553 Items by name not FullName.
1554 * BatchingImpl.cs: Added temporary task "batching".
1555 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1556 * Project.cs: Added Evaluate. It will be moved to separate class.
1558 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1560 * EventSource.cs, Engine.cs: Added CriticalEvents.
1561 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1562 Project.cs: Added some support for items.
1563 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1565 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1567 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1570 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1572 * BatchingImpl.cs: Added.
1573 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1574 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1575 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1576 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1577 GroupingCollection.cs: Updated.
1579 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1581 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1582 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1583 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1584 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1585 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1586 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1587 InternalLoggerException.cs, InvalidProjectFileException.cs,
1588 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1589 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1590 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1591 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1592 Initial check-in of implementations.
1594 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1596 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1597 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1598 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1599 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1600 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1601 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1602 Initial check-in of interfaces and a syntax file, real classes are
1603 changing a lot so I'll wait a moment with checking them in.