1 2010-02-19 Ankit Jain <jankit@novell.com>
3 * BuildItem.cs: Track api changes.
4 (SetMetadata): Allow RecursiveDir to be set, this is set by
6 * DirectoryScanner.cs (ProcessInclude): Set RecursiveDir metadata.
8 2010-02-19 Ankit Jain <jankit@novell.com>
10 * Import.cs (Evaluate): Add param @ignoreMissingImports.
11 * Project.cs (Load*): Add overloads with param @projectLoadSettings.
12 (Log*): Mark internal.
13 * ProjectLoadSettings.cs: New.
15 2010-02-04 Ankit Jain <jankit@novell.com>
18 * ConditionFunctionExpression.cs (Exists): Check for directory also.
20 2009-12-22 Ankit Jain <jankit@novell.com>
23 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
24 * BuildItem.cs: Track api changes.
26 2009-12-02 Ankit Jain <jankit@novell.com>
29 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
30 being iterated over. Patch by Laurent Etiemble
31 <laurent.etiemble@gmail.com>
33 2009-11-28 Ankit Jain <jankit@novell.com>
36 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
37 * Project.cs (Batch): New. Contains the perBatchItems and the
38 commonItems for the batch.
39 Use a stack of batches, instead of directly setting the current
43 (SetBatchedItems): Make this private.
44 (GlobalProperties.set): Re-evaluating the project is not required
46 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
48 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
50 * Target.cs (Build): Reset the current batch to nil before evaluating
51 and building this target.
53 2009-11-28 Ankit Jain <jankit@novell.com>
55 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
56 available in either perBatchItemsByName or commonItemsByName
57 or the evaluatedItemsByName collection. Allows the use of
58 items which are not batched, but are consumed in case of batching.
60 2009-11-26 Ankit Jain <jankit@novell.com>
62 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
63 refs also, for Inputs and Outputs.
65 2009-10-13 Ankit Jain <jankit@novell.com>
67 * DirectoryScanner.cs:
68 * ExpressionCollection.cs:
69 * GroupingCollection.cs:
71 * Target.cs: Fix warnings.
73 2009-10-12 Ankit Jain <jankit@novell.com>
75 * Target.cs (TargetFile): New. Gives the name of the file
76 containing the target definition.
77 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
78 return this for ProjectFileOfTaskNode.
79 * BuildTask.cs (LogTaskStarted):
80 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
82 (InitializeTask): Set BuildEngine's task file to parent target's
84 * Engine.cs (LogProjectStarted): Incase of default targets, set
85 TargetNames to String.Empty .
86 * TargetBatchingImpl.cs (LogTargetStarted):
87 (LogTargetFinished): Use target.TargetFile for the event.
89 * ConsoleLogger.cs: Keep a stack of project/target/task being
90 executed. And corresponding list of errors and warnings.
91 (EventsToString): Stringifies the current "stack", to be used
92 as key to the table of errors/warnings and for show messages
93 at the end of the build.
95 2009-10-12 Ankit Jain <jankit@novell.com>
97 * Project.cs (Load): Add argument checks.
99 2009-10-11 Ankit Jain <jankit@novell.com>
101 * ConsoleLogger.cs (no_colors): Rename to ..
102 (use_colors): .. this. Fix the case when XBUILD_COLORS
105 2009-10-11 Ankit Jain <jankit@novell.com>
107 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
108 Support 'XBUILD_COLORS' to set colors for errors, warnings,
111 2009-10-10 Ankit Jain <jankit@novell.com>
113 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
114 becomes true, don't reset it. We are looking for "atleast one
117 2009-10-08 Ankit Jain <jankit@novell.com>
119 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
120 directly using DirectoryInfo ("z:"), that doesn't return
123 2009-10-08 Ankit Jain <jankit@novell.com>
125 * DirectoryScanner.cs: Handle absolute paths. Fix to work
126 correctly on windows. Change order of adding paths to match
127 msbuild, useful to have.
129 2009-10-08 Ankit Jain <jankit@novell.com>
131 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
132 of the 'Output' element also.
133 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
135 2009-10-07 Ankit Jain <jankit@novell.com>
137 * ConsoleLogger.cs: Mark build as failed, if any project failed.
139 2009-10-06 Ankit Jain <jankit@novell.com>
141 * ConsoleLogger: Improve error reporting. Don't count failed task,
142 target or project as another error. Show "errors" after "warnings",
143 more useful to the user.
144 * Project.cs (BuildTarget): Log error instead of using CWL.
146 2009-10-03 Ankit Jain <jankit@novell.com>
148 * Project.cs (OS): New.
149 (InitializeProperties): Set 'OS' as a pre-defined property, set to
150 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
152 2009-10-02 Ankit Jain <jankit@novell.com>
154 * Expression.cs (Parse): Don't change '/' to '\\', not required.
156 2009-10-01 Ankit Jain <jankit@novell.com>
158 * Project.cs (AddImport): Show the correct source file name, when
159 the import is in the main project file.
161 2009-10-01 Ankit Jain <jankit@novell.com>
164 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
165 the full path of the imported project here itself, instead of ..
167 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
169 * Project.cs (AddImport): Don't process if condition is false.
170 Warn if a circular reference is detected, and ignore the import.
172 2009-09-29 Ankit Jain <jankit@novell.com>
174 * GroupingCollection.cs (Evaluate): Mark internal.
175 * Project.cs (AddImport): Only evaluate the properties,
176 till before the import.
178 2009-09-29 Ankit Jain <jankit@novell.com>
180 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
181 the project xml, as returned Xml*Reader normalizes the newlines.
182 Instead directly use the TextReader with XmlDocument.Load ().
184 2009-09-27 Ankit Jain <jankit@novell.com>
186 * ConditionParser.cs: Show the condition being parsed in the
189 2009-09-26 Ankit Jain <jankit@novell.com>
191 * Expression.cs: Allow '-' in item, property and metadata names.
193 2009-09-26 Ankit Jain <jankit@novell.com>
195 * Project.cs (Evaluate): Split into this and ..
196 (PrepareForEvaluate): .. this.
197 (AddImport): Evaluate the current set of properties/items etc,
198 before processing the imported project. Honor the Condition
200 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
202 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
203 * BuildItemGroup.cs (Evaluate): Evaluate only once.
204 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
206 2009-09-26 Ankit Jain <jankit@novell.com>
208 * Project.cs: Get InitialTargets from the imported projects also.
209 The combined list of targets are executed, in the order they were
211 DefaultTargets are also read in from imported projects, and the first
212 non-empty DefaultTargets found is used.
214 2009-09-25 Ankit Jain <jankit@novell.com>
216 * Project.cs (BuildTarget): Handle skipped targets.
218 2009-09-25 Ankit Jain <jankit@novell.com>
220 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
221 InvalidProjectFileException with useful error.
223 2009-09-24 Ankit Jain <jankit@novell.com>
225 * Project.cs (Load): Emit the .sln.proj file only if env var
226 XBUILD_EMIT_SOLUTION is set.
228 2009-09-24 Ankit Jain <jankit@novell.com>
230 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
232 2009-09-24 Ankit Jain <jankit@novell.com>
234 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
237 2009-09-10 Ankit Jain <jankit@novell.com>
239 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
240 preserved, so use ConvertTo ITaskItem, rather than string.
241 Ensure that the new items have the metadata from references _in_
242 Include, and the metadata of _this_ builditem.
243 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
244 (MatchedFilenames): Rename to ..
245 (MatchedItems): .. this, and change type of array of ITaskItem.
246 Ensure that metadata of items in Includes are retained in the
249 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
250 param. If separator is present, then just return a "Join'ed"
251 string as the single task item.
252 * ItemReference.cs: Track api changes.
254 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
255 as we need separate task items.
257 2009-09-01 Ankit Jain <jankit@novell.com>
260 * Project.cs (BuildTarget): Move caching of target outputs to ..
261 * Target.cs: .. here. Move LogTargetSkipped also here.
262 Ensure that caching happens for target dependencies also.
264 2009-09-01 Ankit Jain <jankit@novell.com>
266 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
269 2009-09-01 Ankit Jain <jankit@novell.com>
271 * Expression.cs (ParseOptions): New enum. Replace the bool params
272 of exression.Parse with this. Add option to control expansion of
274 (CopyToExpressionCollection): Track api changes.
276 Update all expr.Parse calls to use the new enum.
277 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
278 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
280 * BatchingImplBase.cs: Track api changes. Allow metadata refs
282 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
283 * ItemReference.cs: Allow metadata in transforms.
284 * TaskEngine.cs: Allow metadata refs.
286 * MetadataReference.cs (.ctor): Add a 'original string' param.
288 2009-08-29 Ankit Jain <jankit@novell.com>
290 * Expression.cs (ExpressionOptions): New.
292 Introduce a ExpressionOptions argument to all ConvertTo*
293 methods. Implement the rule: in evaluation phase, expand
294 all items completely, but dont expand item refs in properties.
295 At other times, expand the item refs in the properties.
296 See comments in Expression.cs, for a full explanation.
297 * BuildItem.cs: Track api changes.
298 * BuildItemGroup.cs: Likewise.
299 * BuildProperty.cs: Track api changes. Handle self-references.
300 * BuildTask.cs: Track api changes.
301 * IReference.cs: Add ExpressionOptions param.
302 * ItemReference.cs: Track api changes.
303 * PropertyReference.cs: Likewise.
304 * MetadataReference.cs: Likewise.
305 * ExpressionCollection.cs: Track api changes. Add support for
306 converting all primitive types and DateTime, instead of a fixed
308 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
309 * TaskBatchingImpl.cs: Handle the case when batching is required,
310 but no items are available.
312 * TaskEngine.cs: Throw on unsupported types. Correctly handle
313 properties in case of empty values.
315 2009-08-26 Ankit Jain <jankit@novell.com>
317 * Expression.cs: Correctly handle a item reference with transform
318 when allowItems is false. If item ref is ignored, then the transform
319 will get incorrectly matched as a metadata ref.
320 * ItemReference.cs (.ctor): Add a @original_string param.
322 2009-08-26 Ankit Jain <jankit@novell.com>
324 * Utilities.cs (UnescapeFromXml): New. From md.
325 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
326 of the property element.
328 2009-08-26 Ankit Jain <jankit@novell.com>
330 * BuildProperty.cs (ConvertToString): New.
331 (ConvertoToITaskItemArray): New. Parse the property value.
332 * PropertyReference.cs (ConvertToString): Use BuildProperty's
334 (ConvertoToITaskItemArray): Likewise.
336 2009-08-21 Ankit Jain <jankit@novell.com>
338 * Engine.cs (EndProjectBuild): Use the @succeeded argument
339 instead of hardcoding 'true'.
340 * Target.cs (Build): Add an overload to return executeOnErrors
341 value for the target executed. If building dependencies fails,
342 and executeOnErrors is true, then execute OnError tasks.
343 Add the new param to ..
344 (BuildDependencies): this, ..
346 (GetDependencies): Improve error message and variable name.
347 (ExecuteOnErrors): Honor OnError tag's Condition also.
348 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
350 2009-08-20 Ankit Jain <jankit@novell.com>
353 * Project.cs (Load): Add support for loading .sln files.
355 2009-08-20 Ankit Jain <jankit@novell.com>
357 * BuildTask.cs (Execute): Use task_logger only after the task
358 has been initialized. Catch and report task loading errors.
359 * Target.cs (DoBuild): Dont rethrow the exception, and emit
360 the stacktrace as a low importance message.
362 2009-08-18 Ankit Jain <jankit@novell.com>
364 * BatchingImplBase.cs: Make the item name lookups and metadata be case
366 * TaskDatabase.cs: Likewise.
367 * TaskEngine.cs: Make property name looks, case insensitive.
369 2009-08-09 Miguel de Icaza <miguel@novell.com>
371 * ConsoleLogger.cs: Change the format of the error and warnings
372 strings to work when invoked inside Emacs by not rendering the
373 column if available, by using lowercase "error"/"warning" strings
374 instead of camelcased versions and to not have unnecessary padding.
376 2009-07-31 Ankit Jain <jankit@novell.com>
378 * ConsoleLogger.cs: Keep track of all the errors and warnings
379 and show them at the end.
381 2009-07-31 Ankit Jain <jankit@novell.com>
383 * Target.cs (Build): Log a message if a target is skipped.
385 * BuildTask.cs (Execute): Log error if task execution fails.
387 2009-07-30 Ankit Jain <jankit@novell.com>
389 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
390 v2.0, this will change when multi-targeting lands.
392 2009-07-30 Ankit Jain <jankit@novell.com>
394 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
395 'MSBuildProjectName' properties.
397 2009-07-28 Ankit Jain <jankit@novell.com>
399 * TaskEngine.cs (Prepare): Fix formatting mistake.
400 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
401 fails. Also, emit result of project at Normal verbosity level.
403 2009-07-23 Ankit Jain <jankit@novell.com>
406 * Project.cs (ExtensionsPath): New.
407 (InitializeProperties): Set "MSBuildExtensionsPath" property.
409 2009-06-12 Ankit Jain <jankit@novell.com>
412 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
413 itemref is allowed if the prev/next element is ";".
415 2009-06-12 Ankit Jain <jankit@novell.com>
417 * Utilities.cs (FromMSBuildPath): Return null if the path contains
418 "drive:" only on windows.
420 2009-06-07 Ankit Jain <jankit@novell.com>
422 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
425 2009-05-29 Ankit Jain <jankit@novell.com>
427 Correctly handle global properties. Correctly log
428 project/build events.
430 * BuildPropertyGroup.cs (Clone): Implement.
431 * Engine.cs (globalProperties): Rename to ..
432 (global_properties): .. this.
433 (currentlyBuildingProjectsStack): New. Used to correctly
434 log and raise project/build start/finish events.
435 (BuildProjectFile): Override any project global properties
436 with explicitly specified ones, here in the param @globalProperties.
437 Mark project for reevaluation, which will update the engine's
438 global properties also.
439 Reset both engine and project's old global properties at the end.
440 (UnregisterAllLoggers): Log build finished only if we are currently
442 (StartBuild): Rename to ..
443 (StartProjectBuild): .. this. Keeps track of the projects being built
444 in the new stack, and logs project and build events accordingly.
445 (EndProjectBuild): New. Uses the stack to keep track of projects
446 finishing builds, and raises project and build events accordingly.
447 (LogProjectStarted): Move here from Project.cs
448 (LogProjectFinished): Likewise.
450 * Project.cs (Build): Log start of project build.
451 Set current directory to the project file's dir, and reset at end.
452 (BuildInternal): Don't log here, its done in Build.
453 (BuildTarget): Already built targets are keyed by the set of global
454 properties that they were built with.
455 (GlobalPropertiesToString): New.
456 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
457 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
458 (Evaluate): Remove built targets only if we are currently building and
459 build settings are None.
460 Merge project's global properties with those of the parent engine.
461 Add missing properties from engine's global properties.
462 (LogTargetSkipped): Fix format string, add the reqd argument.
464 2009-05-29 Ankit Jain <jankit@novell.com>
466 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
467 (HasTrailingSlash): New.
469 2009-05-12 Ankit Jain <jankit@novell.com>
471 * Project.cs (.ctor): Init timeOfLastDirty.
473 2009-05-05 Miguel de Icaza <miguel@novell.com>
475 * Contribution from Martin Brenn to fix #498154.
477 2009-04-27 Ankit Jain <jankit@novell.com>
480 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
481 one passed as argument.
483 2009-04-27 Ankit Jain <jankit@novell.com>
485 * TaskEngine.cs (Prepare): Emit a useful error message property value
486 can't be converted to required type.
488 2009-04-27 Ankit Jain <jankit@novell.com>
490 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
491 as valid true values for bool, and corresponding for false.
493 2009-03-27 Jonathan Chambers <joncham@gmail.com>
495 * BuildWhen.cs: Add basic implementation.
496 * BuildChoose.cs: Add basic implementation.
497 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
498 EvaluatedItemsIgnoringCondition.
499 * GroupingCollection.cs: Add evaluation of BuildChoose items.
501 2009-03-26 Jonathan Chambers <joncham@gmail.com>
503 * TaskDatabase.cs (RegisterTask): Search for class by name
504 if task was not found using GetType (which uses namespace).
506 2009-02-26 Ankit Jain <jankit@novell.com>
508 * Target.cs: Handle target with no tasks. Log errors.
510 2009-02-24 Ankit Jain <jankit@novell.com>
512 Lazily load UsingTask tasks.
513 * UsingTask.cs (Evaluate): Register 'this' with task database,
514 but don't load it yet. Register only if condition evaluates to true.
515 Move the load logic to ..
516 (Load): .. here. Register with the specified task database.
517 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
518 in a table keyed by task name, but don't load it yet.
519 (GetTypeFromClassName): Try to load UsingTask if task is not already
520 loaded. Move loading logic to ..
521 (GetTypeFromClassNameInternal): .. here.
522 (CopyTasks): Copy the usingTasks table also.
524 2009-02-23 Ankit Jain <jankit@novell.com>
526 * BuildItem.cs (AddMetadata): Allow overwriting older values.
528 2009-02-22 Ankit Jain <jankit@novell.com>
530 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
531 instead of XmlElement. Eg. XmlComment
533 2009-02-21 Ankit Jain <jankit@novell.com>
535 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
536 * Project.cs (Load): Use FromMSBuildPath on the path.
537 (InitializeProperties): Set "MSBuildToolsPath" also.
539 2009-02-20 Ankit Jain <jankit@novell.com>
542 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
543 transforms) in conditions.
544 * ConditionParser.cs: Parse unquoted item, property references.
545 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
546 * Token.cs (Token.ToString): Override.
547 (TokenType.Transform): Uncomment.
549 2009-02-12 Jonathan Chambers <joncham@gmail.com>
551 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
552 no XmlElement.InnerText. This allows properties to be additional
555 2009-02-01 Ankit Jain <jankit@novell.com>
557 * BuildEngine.cs (BuildProjectFile): Use
558 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
559 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
560 built. Move logging of project start/finish to ..
561 * Project.cs: .. here. Build a target only if hasn't been built already.
562 Keep track of target outputs, and return those even if an already built
563 target has been invoked again.
564 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
566 2009-01-31 Ankit Jain <jankit@novell.com>
568 * BatchingImpl.cs: Split into ..
569 * BatchingImplBase.cs: .. this,
570 * TaskBatchingImpl.cs: .. this ..
571 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
573 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
574 (Log*): Move to TargetBatchingImpl .
578 2009-01-30 Ankit Jain <jankit@novell.com>
580 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
583 2009-01-29 Ankit Jain <jankit@novell.com>
585 * BuildItem.cs (child_items): Change type from BuildItemGroup to
587 (HasParent): Rename to ..
588 (HasParentItem): .. this.
589 (ParentItemGroup): Add setter.
591 * BuildItemGroup.cs (.ctor): Add overload with @project param.
593 (AddItem): Correctly set the ParentItemGroup for new build items.
594 (ParentProject): Add setter.
595 * Project.cs: Set the project for new BuildItemGroup instances.
596 * TaskEngine.cs (PublishItemGroup): Likewise.
598 2009-01-06 Ankit Jain <jankit@novell.com>
600 * Project.cs (Build): Honor InitialTargets list.
602 2009-01-06 Ankit Jain <jankit@novell.com>
604 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
605 the property type also.
606 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
609 2009-01-06 Ankit Jain <jankit@novell.com>
611 * Project.cs (Build): Correctly handle null targetNames argument.
613 2009-01-06 Ankit Jain <jankit@novell.com>
615 * Engine.cs (LogProjectStarted): Add a null check.
617 2009-01-01 Ankit Jain <jankit@novell.com>
619 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
620 * ChangeType (ToBuildItemGroup): Add 'split' param.
622 * Expression.cs (Parse): Add a new overload with a 'split' param.
623 * ExpressionCollection.cs (Add): Add new overload for IReference,
624 remove the ones for Item/Metadata/PropertyReference.
625 (ConvertToArray): Implement correctly.
626 (ConvertToString): Track api changes.
627 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
628 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
629 (AddItemsToArray): New.
630 (ConvertToITaskItemArrayFromString): Refactor a bit.
631 (ThrowCantConcatError): New.
632 * ItemReference.cs: Update.
633 * MetadataReference.cs: Update.
634 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
636 * BuildPropertyGroup.cs: Track api changes.
637 * TaskEngine.cs (PublishOutput): Improve exception message.
638 * Project.cs (DoLoad): Improve exception message. Add a null check.
640 2008-12-30 Ankit Jain <jankit@novell.com>
642 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
643 metadata values for unqualified references.
644 (BuildItemGroupToITaskItemArray): Rename to ..
645 (BuildItemGroupToITaskItems): .. this.
648 2008-12-18 Ankit Jain <jankit@novell.com>
650 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
652 2008-12-17 Ankit Jain <jankit@novell.com>
654 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
655 only one instance of unique metadata value is required.
657 2008-11-22 Ankit Jain <jankit@novell.com>
659 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
661 * MetadataReference.cs (ConvertToITaskItemArray): New.
662 * Project.cs (GetAllItemGroups): New.
664 2008-11-21 Ankit Jain <jankit@novell.com>
666 * BatchingImpl.cs: Add task batching implementation.
667 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
668 * ExpressionCollection.cs (Count): New.
669 (ConvertToString): Handle MetadataReference.
670 * ItemReference.cs (ConvertToString):
671 (ConvertToITaskItemArray): Use the batching api.
673 * MetadataReference.cs (ConvertToString): New.
675 * Project.cs: Add api for accessing batched items and metadata.
676 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
679 2008-10-01 Ankit Jain <jankit@novell.com>
681 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
682 (BuildProjectFile): If filename is null (project.LoadXml) then use
684 * BuildTask.cs (InitializeTask): Track api change.
685 * Expression.cs (Parse): Skip empty entries in the expression.
687 2008-09-24 Ankit Jain <jankit@novell.com>
689 * Engine.cs: Add argument checks.
690 * Project.cs: Likewise.
692 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
694 * Project.cs (Build): Add outputs to targetOutputs.
696 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
698 * ExpressionCollection.cs (ConvertToArray): Simplify.
700 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
702 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
703 simplified. It still needs tests and refactoring.
705 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
707 * BuildEngine.cs (BuildProjectFile): Don't crash on null
710 * Target.cs: Add Outputs property.
712 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
714 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
715 (). Support condition.
717 * BatchingImpl.cs (BatchBuildTask): Simplify.
719 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
721 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
724 * ConditionFunctionExpression.cs: Removed warnings.
726 * BuildTask.cs (Execute): Write exceptions to std err (they should be
727 logged but it's better than swallowing).
729 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
731 * ConditionTokenizer.cs: Add Putback ().
733 * ConditionParser.cs: Add parsing of functions.
735 * ConditionFunctionExpression.cs: Add.
737 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
739 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
740 set property in persisted property group.
742 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
744 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
747 * ConsoleLogger.cs (TargetFinishedHandler)
748 (TaskFinishedHandler): Increment error count.
750 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
752 * BuildItem.cs (RemoveMetadata): Remove from XML.
753 (SetMetadata): Trigger project reevaluation.
755 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
757 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
760 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
762 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
763 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
764 BatchingImpl.cs, BuildProperty.cs: Track API changes.
766 * Expression.cs (Parse): Added allowItems parameter and made regexes
769 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
770 will try to import a.ext when given a.EXT.
772 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
774 * BuildItemGroup.cs: Store information saying what is the last item
775 group that contains build item name.
777 * Project.cs (Build): Pass empty array (build default targets).
779 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
781 * Token.cs: Commented Transform and LiteralSubExpression and added
784 * ConditionParser.cs: Removed redundant casts, rewrote
785 ParseFactorExpression () and added parsing of '!'.
787 * ConditionTokenizer.cs: Always skip whitespaces when getting next
788 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
789 Moved ReadChar () in front of all ifs.
791 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
793 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
794 from XML. (not to escape items that have parents twice).
796 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
798 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
799 (Project): Renamed to ParentProject.
801 * BuildItem.cs (ctor)
802 (CopyCustomMetadata): Add null check.
804 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
805 (RemoveProperty): Added null check.
807 * TargetCollection.cs (RemoveTarget): Added null check.
809 * Engine.cs (UnloadProject): Added null check.
811 * GroupingCollection.cs (Remove): Check if removed group belongs to
814 * Project.cs (AddNewItem): Implemented.
815 (RemoveItem): Reorganized.
816 (SetProjectExtensions): Added null check.
818 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
820 * BuildItemGroup.cs (Detach): Added.
822 (RemoveItemAt): Used Detach ().
824 * BuildItem.cs: Made FromXml and HasParent internal and added
825 ParentItem and ParentItemGroup properties (internal).
828 * GroupingCollection.cs (Remove): Used Detach ().
830 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
832 (GetEvaluatedItemsByNameIgnoringCondition)
833 (GetEvaluatedItemsByName)
834 (GetEvaluatedProperty): Reevaluate if needed.
836 (RemoveAllItemGroups)
837 (RemoveAllPropertyGroups): Implemented.
838 (DoLoad): Added closing of TextReader.
840 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
842 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
843 change but just mark that it needs it.
845 * Project.cs: Reevaluate when it needs reevaluation and one of
846 Evaluated* properties is used.
848 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
850 * Target.cs: Throw an exception when <OnError> is not last element in
853 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
855 * TargetCollection.cs: If a target is already there replace it with
858 * BuildProperty.cs: Added XmlElement property.
860 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
862 * ImportCollection.cs: Don't add imports that are already added.
864 * BuildItemGroup.cs: MonoTODOs.
866 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
867 condition can't be evaluated to bool.
869 * BuildPropertyGroup.cs (Evaluate): Simplify.
871 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
873 * BuildWhen.cs: Moved BindToXml () code to ctor.
875 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
876 property needed for removing groups.
878 * Engine.cs: Added StartBuild () that logs build start when Build ()
881 * GroupingCollection.cs: Added Remove () for item and property groups.
883 * Project.cs (AddNewImport): Implemented.
884 (AddNewItemGroup): Implemented.
885 (AddNewPropertyGroup): Implemented.
886 (AddNewUsingTaskFromAssemblyFile): Implemented.
887 (AddNewUsingTaskFromAssemblyName): Implemented.
888 (RemoveItemGroup): Implemented.
889 (RemovePropertyGroup): Implemented.
891 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
893 * BuildItemGroup.cs (Clear): Remove from XML.
895 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
896 to Project.EvaluatedProperties.
897 (Clear): Remove from XML.
899 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
901 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
904 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
906 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
907 Add () calls when processing a project from Import and
908 evaluate_iterator for evaluation.
910 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
912 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
913 and prepend relative directory of importing project to full path of
916 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
918 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
919 BuildItemGroupCollection.cs, Project.cs: Track API changes.
921 * GroupingCollection.cs: Now it needs Project reference so added it.
923 * BuildTask.cs: Formatting.
925 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
927 * ConditionParser.cs (ParseAndEvaluate): Added.
929 * BuildItem.cs: Changed exception message.
931 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
933 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
934 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
935 GroupingCollection doesn't need Project reference.
937 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
939 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
940 (Project.EvaluatedItems is a read only item group.)
941 (ReplaceWith): Added.
943 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
944 global property group causes reevaluation of its project.
946 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
949 * OldExpression.cs: Removed.
951 * BuildProperty.cs (Evaluate): Simplified.
953 * ChangeType.cs (TemporaryTransform): Simplified.
955 * BuildItem.cs: There are now 3 types of build items: from XML, having
956 parent from XML, virtual. Added SplitParentItem ().
958 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
960 * Utilities.cs: Added Unescape ().
962 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
963 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
964 groups (at the moment just unescape).
966 * Expression.cs (CopyToExpressionList): Unescape strings.
968 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
970 * Target.cs (ctor): Added ImportedProject argument and removed
972 (AddNewTask): Implemented.
974 * TargetCollection.cs (AddNewTarget): Implemented.
976 * Project.cs: Track API changes.
978 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
980 * Target.cs (Build): Don't throw anything in case of error, just
983 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
986 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
989 * BuildProperty.cs (ToString): Throw an exception if property is not
991 (op_Explicit): Added a null check.
993 * Engine.cs: Better error message.
995 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
996 IndexOutOfRangeException.
998 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
999 (MarkProjectAsDirty): Set time.
1001 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1003 * BuildItemGroup.cs (Clone): Throw exception.
1005 * Project.cs (Load): Throw InvalidProjectFileException if anything
1008 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1010 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
1011 and ConvertToITaskItemArray ().
1013 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1015 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
1016 classes that were public in Beta 2 and aren't used.
1018 * Expression.cs: Added replacement for parsing expressions char by
1019 char. It uses regexes to find item/property/metadata references in
1022 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1023 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1024 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1026 * ConditionRelationalExpression.cs: Formatting.
1028 * OldExpression.cs: Commented everything.
1030 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1031 parsing to Expression.
1033 * BuildItem.cs: Check if project is from XML in set_Condition and
1036 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1039 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1040 can evaluate expression in CanEvaluateToBool ().
1042 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1044 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1045 which item group is imported.
1047 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1049 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1051 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1052 BuildItemGroupCollection.cs: Little changes related to
1055 * ImportCollection.cs: Use GroupingCollection not an internal list.
1057 * Import.cs (Evaluate): Split to functions and check if
1058 EvaluatedProjectPath is empty.
1060 * GroupingCollection.cs, Project.cs: Move evaluation to
1061 GroupingCollection. Change algorithm to use 2 passes: first for property
1062 groups and imports and second for item groups.
1064 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1066 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1067 BuildItemGroup> not IDictionary.
1069 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1070 evaluated to false because we want to add every item to
1071 Project.EvaluatedItemsByNameIgnoringCondition.
1073 * Project.cs (Build): Don't throw an exception just return false.
1074 (GetEvaluatedProperty): Avoid NullReferenceException.
1075 (SetProjectExtensions): Implemented.
1077 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1079 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1081 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1082 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1083 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1085 * ImportCollection.cs: Added a note.
1087 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1089 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1091 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1092 (UsingTask[] array, int index)
1094 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1095 items to Project.EvaluatedItems in PublishItemGroup ();
1097 * BuildItemGroup.cs: Added [MonoTODO].
1099 * UsingTask.cs: Used expression for AssemblyFile to get around
1100 problems with '\' and '/'.
1102 * BuildItem.cs (ctor): Added null checks.
1103 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1104 (SetMetadata): Don't escape evaluatedMetadata and escape
1105 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1107 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1108 FromXml () instead of null checks.
1109 (SetProperty): Escape propertyValue when it is literal.
1111 * BuildProperty.cs: Changed exception message.
1113 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1115 (GetProjectExtensions): Implemented.
1117 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1119 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1120 GetParameterValue (), use expressions in ContinueOnError.
1121 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1122 instead of InvalidOperationException ().
1123 * ImportCollection.cs: Implement CopyTo ().
1124 * Target.cs: Remove redundant variables (XmlAttributes), return
1125 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1126 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1127 * Import.cs: Throw an exception when file does not exist.
1128 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1129 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1130 need to treat item as a token probably
1132 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1134 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1135 throw an exception).
1136 * BuildItemGroupCollection.cs: Changed exception types.
1138 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1140 * Engine.cs: Removed redundant cast.
1142 * UsingTaskCollection.cs:
1146 * TargetCollection.cs: Comment unused variable.
1147 * ConditionTokenizer.cs: Simplified checking if current token is a
1149 * Target.cs: Removed old code.
1151 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1153 * Target.cs: Changed "" to String.Empty.
1154 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1155 string was evaluated to String.Empty.
1156 * InternalLoggerException.cs:
1157 * InvalidProjectFileException.cs: Added LinkDemand before
1159 * ConsoleLogger.cs: Changed "" to String.Empty.
1160 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1161 with change to generics).
1162 * Project.cs: Made Build () throw more meaningful exception.
1164 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1166 * Target.cs: Reformatted.
1167 * TaskEngine.cs: Removed redundant code.
1168 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1169 * Engine.cs: Made BuildProjectFile () load project file if it's not
1172 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1174 * ConditionRelationalExpression.cs: Change comparers to case
1176 * ImportCollection.cs: Add NotImplementedExceptions.
1177 * BuildPropertyGroup.cs: Reformatted a bit.
1178 * BuildProperty.cs: The same.
1179 * Project.cs: Moved evaluation of imports before evaluation of
1180 properties. This may "work" until importing projects is redesigned but
1181 probably isn't correct.
1183 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1185 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1187 * BuildItemGroup.cs: Change return to continue.
1189 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1191 * ConditionParser.cs: Copyright note.
1192 * ExpressionCollection.cs: Fixed arrays passing.
1194 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1196 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1197 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1198 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1199 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1201 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1203 * Token.cs: Changed names: removed "than".
1204 * ConditionRelationalExpression.cs: Added.
1205 * ConditionFactorExpression.cs: Added.
1206 * BuildItemGroup.cs: Changed Condition property return value to return
1207 String.Empty instead of null.
1208 * ConditionParser.cs: Added support for parsing relational expressions
1210 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1211 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1212 and CanEvaluateToBool (), CanEvaluateToNumber () and
1213 CanEvaluateToString ().
1214 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1215 appropriately to ConditionExpression base class.
1216 * ConditionTokenizer.cs: Added null check and changed names in enums:
1218 * ConditionNotExpression.cs: Added.
1219 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1220 * Project.cs: Added checks for condition.
1222 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1224 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1225 ConditionalParser.cs: Changed name,
1227 * ConditionExpression.cs: Added Evaluate ().
1228 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1229 * BatchingImpl.cs: Added check if task should be executed.
1231 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1233 * UsingTask.cs: Changed properties to return null on empty attribute.
1234 * UsingTaskCollection.cs: Added object to SyncRoot.
1235 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1237 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1239 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1240 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1242 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1244 * Utilities.cs: Implemented Escape ().
1245 * BuildItem.cs: Added null checks.
1246 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1247 * Project.cs: Commented out redundant Evaluate ().
1248 * BuildChoose.cs: Minor changes.
1250 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1252 * Token: Added new few missing tokens.
1253 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1254 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1255 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1256 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1257 LiteralTokenizer.cs:
1258 Removed literal expression parsing based on tokenizer and
1259 parser. It needs to be done by regex.
1261 Moved tokenizer to ConditionalTokenizer.cs.
1263 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1265 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1266 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1267 methods converting reference to string from ToString () to
1268 ConvertToString () to avoid mistakes like using ToString () provided
1271 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1273 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1274 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1275 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1276 OldExpression and changed To* functions to one ConvertTo ().
1277 * TaskEngine.cs: Fixed PublishOutput ().
1278 * OldExpression.cs: Added. It will be temporarily used before
1279 LiteralExpression will be written using Tokenizer.
1280 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1281 ExpressionParseException.cs, LiteralExpression.cs: Added.
1283 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1285 * ImportedProject.cs: Removed warning.
1286 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1289 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1291 * Project.cs: Removed unnecessary variable.
1292 * Engine.cs: Added fixme.
1294 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1296 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1297 class (Mono.XBuild.Utilities.ReservedNameUtils).
1299 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1301 * BuildTask.cs: Removed unnecessary variable.
1302 * Engine.cs: Added logging of the build start.
1303 * Project.cs: Removed unnecessary variable.
1305 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1307 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1309 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1311 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1313 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1315 * BuildItem.cs: Fix typo?
1317 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1319 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1320 Engine.cs, Project.cs: Coding style fixes.
1322 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1324 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1326 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1328 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1329 to pass tests. Wrote serialization constructor.
1330 * Engine.cs, Project.cs: Global engine and project unloading, test and
1333 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1335 * UsingTask.cs: Formatting changes.
1337 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1339 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1340 to lists instead of hashtables.
1341 * Import.cs: Cleaned up, moved importing from Project.cs
1342 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1343 * Engine.cs: Cleaned up properties.
1344 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1345 Separated evaluation and loading.
1347 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1349 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1350 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1351 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1352 binding and evaluation, merge xml binding in constructors.
1353 * DirectoryScanner.cs: Includes CAN be empty.
1354 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1355 * ConsoleLogger.cs: Fix compilation warning.
1357 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1359 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1361 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1363 * Engine.cs: API cleanup.
1365 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1367 * Project.cs: Cleaned up add.
1368 * Expression.cs: Hacked to transform \ and / to path separators.
1369 * BuildPropertyGroup.cs: Small cleanup.
1370 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1373 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1375 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1376 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1378 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1379 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1380 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1382 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1383 * TaskElement.cs: Temporarily removed.
1384 * Xml.cs: Changed to static.
1386 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1388 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1389 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1390 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1391 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1392 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1393 IBuildPropertyGroupCollection.cs: Removed.
1395 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1397 * BuildItem.cs: Removed IBuildItem references.
1398 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1399 IBuildItemGroup references. Changed Evaluate to internal.
1400 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1401 reference and hidden constructors.
1402 * BuildProperty.cs: Removed IBuildProperty reference.
1403 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1404 IBuildPropertyGroup references. Changed Evaluate to internal.
1405 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1406 reference and hidden constructors.
1407 * ConsoleLogger.cs: Updated names of event handlers.
1408 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1409 Escape. Added UnloadAllProjects () and UnloadProject ().
1410 * FileLogger.cs: Removed ApplyParameter ().
1411 * GroupingCollection.cs: Hidden.
1412 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1413 * ItemPropertyGroupingBase.cs: Commented.
1414 * ProcessingPass.cs: Hidden.
1415 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1417 * Target.cs: Removed ITarget reference.
1418 * TargetCollection.cs: Removed ITargetCollection reference.
1419 * TaskElement.cs: Removed ITaskElement reference.
1420 * TaskEngineAssemblyResolver.cs: Hidden.
1421 * Utilities.cs: Made static class, removed CheckPath (),
1422 ValidateCulture (), GetSupportedCultures () and added Escape ().
1424 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1426 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1429 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1431 * Project.cs: Added MonoTODO attributes.
1432 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1433 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1434 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1435 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1436 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1437 BuildItemGroup.cs, InvalidProjectFileException.cs,
1438 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1439 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1440 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1441 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1442 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1443 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1444 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1445 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1446 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1447 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1448 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1449 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1451 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1453 * TaskDatabase.cs: Change Shared to Framework.
1454 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1455 CaseInsensitiveHashCodeProvider
1457 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1459 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1460 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1463 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1465 * InternalLoggerException.cs: Changed protected fields to private.
1467 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1469 * Engine.cs: Added check for globalProperties.
1470 * Project.cs: Added using path from importedProject.FullFileName when
1471 adding UsingTask elements.
1473 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1475 * TaskElement.cs: Changed ReflectedType to PropertyType.
1476 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1479 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1481 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1483 * BuildProperty.cs: Organized PropertyType enum.
1484 * Engine.cs: Added setting CommandLine PropertyType of global
1487 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1489 * InvalidProjectFileException.cs: Changed Message property.
1490 * ChangeType.cs (TransformToString): Added separator between items.
1491 * TaskEngineAssemblyResolver.cs: Formatting.
1493 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1495 * DirectoryScanner.cs: Added.
1496 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1497 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1498 * Project.cs: Removed Evalute* ().
1500 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1502 * Target.cs: Formatting.
1503 * Expression.cs: Added check if array == null.
1504 * BuildItem.cs: Removed 'break' to remove warnings.
1505 * ConsoleLogger.cs: Formatting.
1506 * Engine.cs: Added handling of default target(s).
1507 * Project.cs: Added handling of default target(s).
1509 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1511 * TaskElement.cs: Added check for parameters.
1512 * Target.cs: Added logging of target skipping.
1513 * Expression.cs: Changed returning object[] to string[], bool[]... in
1515 * ItemReference.cs: Fixed for item references without custom
1517 * BatchingImpl.cs: Added real inputs/outputs checking.
1518 * Engine.cs: Moved global properties setting.
1519 * Project.cs: Moved global properties setting.
1521 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1523 * Target.cs: Added checks for target existence.
1524 * BuildItemGroup.cs: Changed to use transforms.
1525 * MetadataReference.cs: Wrote real implementation.
1526 * ItemReference.cs: Rewritten to use transforms.
1527 * BuildItem.cs: Changes for transforms and metadata.
1528 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1530 * Project.cs: Fixed project importing.
1531 * ImportedProject.cs: Changed to throw exceptions instead of returning
1534 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1536 * Engine.cs: Removed FIXME.
1537 * Project.cs: Splitted ProcessElements and added project importing.
1538 * ImportedProject.cs: Rewritten.
1540 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1542 * TaskElement.cs: Added getting of objects of every type.
1543 * BuildItemGroup.cs: Added ToITaskItemArray ().
1544 * Expression.cs: Implemented part that is not using metadata.
1545 * ItemReference.cs: Implemented parsing item references. Need to fix
1547 * BuildItem.cs: Fixed ToITaskItem ().
1548 * PropertyReference.cs: Implemented parsing property references. This
1549 also needs validity checking.
1551 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1553 * TaskElement.cs: Added Output element handling.
1554 * Target.cs: Cleaned up.
1555 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1556 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1557 ItemReference.cs, ChangeType.cs: Added.
1558 * BuildItem.cs: Added creating BuildItem from TaskItem.
1559 * BuildPropertyGroup.cs: Small changes.
1560 * BatchingImpl.cs: Fixed to return real task execution result.
1561 * BuildProperty.cs: Fixed FinalValue property.
1562 * Engine.cs: Reformatted logging.
1563 * Project.cs: Added check to EvaluateProperty.
1565 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1567 * TaskElement.cs: Added part of execution engine.
1568 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1569 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1570 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1571 * BuildItem.cs: Added handling of built-in metadata and referencing
1572 Items by name not FullName.
1573 * BatchingImpl.cs: Added temporary task "batching".
1574 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1575 * Project.cs: Added Evaluate. It will be moved to separate class.
1577 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1579 * EventSource.cs, Engine.cs: Added CriticalEvents.
1580 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1581 Project.cs: Added some support for items.
1582 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1584 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1586 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1589 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1591 * BatchingImpl.cs: Added.
1592 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1593 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1594 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1595 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1596 GroupingCollection.cs: Updated.
1598 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1600 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1601 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1602 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1603 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1604 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1605 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1606 InternalLoggerException.cs, InvalidProjectFileException.cs,
1607 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1608 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1609 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1610 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1611 Initial check-in of implementations.
1613 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1615 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1616 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1617 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1618 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1619 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1620 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1621 Initial check-in of interfaces and a syntax file, real classes are
1622 changing a lot so I'll wait a moment with checking them in.