1 2010-04-10 Ankit Jain <jankit@novell.com>
3 * Project.cs (InitializeProperties): Set MSBuildBinPath to the current
6 2010-04-10 Ankit Jain <jankit@novell.com>
8 * TaskEngine.cs (Prepare): Throw InvalidProjectFileException instead of a generic
11 2010-04-10 Ankit Jain <jankit@novell.com>
13 * ConsoleLogger.cs (EventsToString): If the target being executed is
14 from an imported file, then show that.
16 2010-04-10 Ankit Jain <jankit@novell.com>
18 * Project.cs: Add property MSBuildExtensionsPath32, used by silverlight
21 2010-04-07 Ankit Jain <jankit@novell.com>
23 * ConsoleLogger.cs: Dump items and properties when a project starts
24 to build. Useful for debugging.
25 * Engine.cs (LogProjectStarted): Set the properties and items also,
26 for the project started event.
27 * Project.cs (EvaluatedPropertiesAsDictionaryEntries): New.
28 (EvaluatedItemsByNameAsDictionaryEntries): New. Required for
31 2010-04-03 Ankit Jain <jankit@novell.com>
33 * BuildEngine.cs: Implement IBuildEngine2 instead of
35 * BuildTasks.cs: Use the new extension methods for logging.
36 (InitializeTask): Emit a message informing about the assembly
37 from which the task is being loaded. Emit a useful debug message
38 incase of a InvalidCastException.
39 * Engine.cs: Add missing methods, constructors and properties related
40 to ToolsVersion support. Setup a default set of Toolsets.
41 Keep separate taskdbs' per ToolsVersion. The common tasks
42 would come from different *.tasks file, and use different
44 (DefaultToolsVersion): Correctly set this based on the profile.
45 * LogExtensions.cs: New. Extension methods on Engine, for logging.
46 * Project.cs: Add missing methods/contructors/properties related
47 to ToolsVersion support. Add reserved properties -
48 MSBuildToolsPath and MSBuildToolsVersion .
50 * ToolsetCollection.cs: New.
51 * ToolsetDefinitionLocations.cs: New.
53 2010-03-04 Ankit Jain <jankit@novell.com>
55 * BuildEngine.cs (LogErrorEvent): Log as warning, if
56 ContinueOnError==true, and log a corresponding message.
57 * TargetBatchingImpl.cs: Refactor to share code between the
58 batched and unbatched case. If a task fails and
59 ContinueOnError==true, then ignore the failed state.
61 2010-02-19 Ankit Jain <jankit@novell.com>
63 * BuildItem.cs: Track api changes.
64 (SetMetadata): Allow RecursiveDir to be set, this is set by
66 * DirectoryScanner.cs (ProcessInclude): Set RecursiveDir metadata.
68 2010-02-19 Ankit Jain <jankit@novell.com>
70 * Import.cs (Evaluate): Add param @ignoreMissingImports.
71 * Project.cs (Load*): Add overloads with param @projectLoadSettings.
72 (Log*): Mark internal.
73 * ProjectLoadSettings.cs: New.
75 2010-02-04 Ankit Jain <jankit@novell.com>
78 * ConditionFunctionExpression.cs (Exists): Check for directory also.
80 2009-12-22 Ankit Jain <jankit@novell.com>
83 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
84 * BuildItem.cs: Track api changes.
86 2009-12-02 Ankit Jain <jankit@novell.com>
89 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
90 being iterated over. Patch by Laurent Etiemble
91 <laurent.etiemble@gmail.com>
93 2009-11-28 Ankit Jain <jankit@novell.com>
96 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
97 * Project.cs (Batch): New. Contains the perBatchItems and the
98 commonItems for the batch.
99 Use a stack of batches, instead of directly setting the current
103 (SetBatchedItems): Make this private.
104 (GlobalProperties.set): Re-evaluating the project is not required
106 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
108 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
110 * Target.cs (Build): Reset the current batch to nil before evaluating
111 and building this target.
113 2009-11-28 Ankit Jain <jankit@novell.com>
115 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
116 available in either perBatchItemsByName or commonItemsByName
117 or the evaluatedItemsByName collection. Allows the use of
118 items which are not batched, but are consumed in case of batching.
120 2009-11-26 Ankit Jain <jankit@novell.com>
122 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
123 refs also, for Inputs and Outputs.
125 2009-10-13 Ankit Jain <jankit@novell.com>
127 * DirectoryScanner.cs:
128 * ExpressionCollection.cs:
129 * GroupingCollection.cs:
131 * Target.cs: Fix warnings.
133 2009-10-12 Ankit Jain <jankit@novell.com>
135 * Target.cs (TargetFile): New. Gives the name of the file
136 containing the target definition.
137 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
138 return this for ProjectFileOfTaskNode.
139 * BuildTask.cs (LogTaskStarted):
140 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
142 (InitializeTask): Set BuildEngine's task file to parent target's
144 * Engine.cs (LogProjectStarted): Incase of default targets, set
145 TargetNames to String.Empty .
146 * TargetBatchingImpl.cs (LogTargetStarted):
147 (LogTargetFinished): Use target.TargetFile for the event.
149 * ConsoleLogger.cs: Keep a stack of project/target/task being
150 executed. And corresponding list of errors and warnings.
151 (EventsToString): Stringifies the current "stack", to be used
152 as key to the table of errors/warnings and for show messages
153 at the end of the build.
155 2009-10-12 Ankit Jain <jankit@novell.com>
157 * Project.cs (Load): Add argument checks.
159 2009-10-11 Ankit Jain <jankit@novell.com>
161 * ConsoleLogger.cs (no_colors): Rename to ..
162 (use_colors): .. this. Fix the case when XBUILD_COLORS
165 2009-10-11 Ankit Jain <jankit@novell.com>
167 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
168 Support 'XBUILD_COLORS' to set colors for errors, warnings,
171 2009-10-10 Ankit Jain <jankit@novell.com>
173 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
174 becomes true, don't reset it. We are looking for "atleast one
177 2009-10-08 Ankit Jain <jankit@novell.com>
179 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
180 directly using DirectoryInfo ("z:"), that doesn't return
183 2009-10-08 Ankit Jain <jankit@novell.com>
185 * DirectoryScanner.cs: Handle absolute paths. Fix to work
186 correctly on windows. Change order of adding paths to match
187 msbuild, useful to have.
189 2009-10-08 Ankit Jain <jankit@novell.com>
191 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
192 of the 'Output' element also.
193 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
195 2009-10-07 Ankit Jain <jankit@novell.com>
197 * ConsoleLogger.cs: Mark build as failed, if any project failed.
199 2009-10-06 Ankit Jain <jankit@novell.com>
201 * ConsoleLogger: Improve error reporting. Don't count failed task,
202 target or project as another error. Show "errors" after "warnings",
203 more useful to the user.
204 * Project.cs (BuildTarget): Log error instead of using CWL.
206 2009-10-03 Ankit Jain <jankit@novell.com>
208 * Project.cs (OS): New.
209 (InitializeProperties): Set 'OS' as a pre-defined property, set to
210 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
212 2009-10-02 Ankit Jain <jankit@novell.com>
214 * Expression.cs (Parse): Don't change '/' to '\\', not required.
216 2009-10-01 Ankit Jain <jankit@novell.com>
218 * Project.cs (AddImport): Show the correct source file name, when
219 the import is in the main project file.
221 2009-10-01 Ankit Jain <jankit@novell.com>
224 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
225 the full path of the imported project here itself, instead of ..
227 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
229 * Project.cs (AddImport): Don't process if condition is false.
230 Warn if a circular reference is detected, and ignore the import.
232 2009-09-29 Ankit Jain <jankit@novell.com>
234 * GroupingCollection.cs (Evaluate): Mark internal.
235 * Project.cs (AddImport): Only evaluate the properties,
236 till before the import.
238 2009-09-29 Ankit Jain <jankit@novell.com>
240 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
241 the project xml, as returned Xml*Reader normalizes the newlines.
242 Instead directly use the TextReader with XmlDocument.Load ().
244 2009-09-27 Ankit Jain <jankit@novell.com>
246 * ConditionParser.cs: Show the condition being parsed in the
249 2009-09-26 Ankit Jain <jankit@novell.com>
251 * Expression.cs: Allow '-' in item, property and metadata names.
253 2009-09-26 Ankit Jain <jankit@novell.com>
255 * Project.cs (Evaluate): Split into this and ..
256 (PrepareForEvaluate): .. this.
257 (AddImport): Evaluate the current set of properties/items etc,
258 before processing the imported project. Honor the Condition
260 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
262 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
263 * BuildItemGroup.cs (Evaluate): Evaluate only once.
264 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
266 2009-09-26 Ankit Jain <jankit@novell.com>
268 * Project.cs: Get InitialTargets from the imported projects also.
269 The combined list of targets are executed, in the order they were
271 DefaultTargets are also read in from imported projects, and the first
272 non-empty DefaultTargets found is used.
274 2009-09-25 Ankit Jain <jankit@novell.com>
276 * Project.cs (BuildTarget): Handle skipped targets.
278 2009-09-25 Ankit Jain <jankit@novell.com>
280 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
281 InvalidProjectFileException with useful error.
283 2009-09-24 Ankit Jain <jankit@novell.com>
285 * Project.cs (Load): Emit the .sln.proj file only if env var
286 XBUILD_EMIT_SOLUTION is set.
288 2009-09-24 Ankit Jain <jankit@novell.com>
290 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
292 2009-09-24 Ankit Jain <jankit@novell.com>
294 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
297 2009-09-10 Ankit Jain <jankit@novell.com>
299 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
300 preserved, so use ConvertTo ITaskItem, rather than string.
301 Ensure that the new items have the metadata from references _in_
302 Include, and the metadata of _this_ builditem.
303 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
304 (MatchedFilenames): Rename to ..
305 (MatchedItems): .. this, and change type of array of ITaskItem.
306 Ensure that metadata of items in Includes are retained in the
309 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
310 param. If separator is present, then just return a "Join'ed"
311 string as the single task item.
312 * ItemReference.cs: Track api changes.
314 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
315 as we need separate task items.
317 2009-09-01 Ankit Jain <jankit@novell.com>
320 * Project.cs (BuildTarget): Move caching of target outputs to ..
321 * Target.cs: .. here. Move LogTargetSkipped also here.
322 Ensure that caching happens for target dependencies also.
324 2009-09-01 Ankit Jain <jankit@novell.com>
326 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
329 2009-09-01 Ankit Jain <jankit@novell.com>
331 * Expression.cs (ParseOptions): New enum. Replace the bool params
332 of exression.Parse with this. Add option to control expansion of
334 (CopyToExpressionCollection): Track api changes.
336 Update all expr.Parse calls to use the new enum.
337 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
338 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
340 * BatchingImplBase.cs: Track api changes. Allow metadata refs
342 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
343 * ItemReference.cs: Allow metadata in transforms.
344 * TaskEngine.cs: Allow metadata refs.
346 * MetadataReference.cs (.ctor): Add a 'original string' param.
348 2009-08-29 Ankit Jain <jankit@novell.com>
350 * Expression.cs (ExpressionOptions): New.
352 Introduce a ExpressionOptions argument to all ConvertTo*
353 methods. Implement the rule: in evaluation phase, expand
354 all items completely, but dont expand item refs in properties.
355 At other times, expand the item refs in the properties.
356 See comments in Expression.cs, for a full explanation.
357 * BuildItem.cs: Track api changes.
358 * BuildItemGroup.cs: Likewise.
359 * BuildProperty.cs: Track api changes. Handle self-references.
360 * BuildTask.cs: Track api changes.
361 * IReference.cs: Add ExpressionOptions param.
362 * ItemReference.cs: Track api changes.
363 * PropertyReference.cs: Likewise.
364 * MetadataReference.cs: Likewise.
365 * ExpressionCollection.cs: Track api changes. Add support for
366 converting all primitive types and DateTime, instead of a fixed
368 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
369 * TaskBatchingImpl.cs: Handle the case when batching is required,
370 but no items are available.
372 * TaskEngine.cs: Throw on unsupported types. Correctly handle
373 properties in case of empty values.
375 2009-08-26 Ankit Jain <jankit@novell.com>
377 * Expression.cs: Correctly handle a item reference with transform
378 when allowItems is false. If item ref is ignored, then the transform
379 will get incorrectly matched as a metadata ref.
380 * ItemReference.cs (.ctor): Add a @original_string param.
382 2009-08-26 Ankit Jain <jankit@novell.com>
384 * Utilities.cs (UnescapeFromXml): New. From md.
385 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
386 of the property element.
388 2009-08-26 Ankit Jain <jankit@novell.com>
390 * BuildProperty.cs (ConvertToString): New.
391 (ConvertoToITaskItemArray): New. Parse the property value.
392 * PropertyReference.cs (ConvertToString): Use BuildProperty's
394 (ConvertoToITaskItemArray): Likewise.
396 2009-08-21 Ankit Jain <jankit@novell.com>
398 * Engine.cs (EndProjectBuild): Use the @succeeded argument
399 instead of hardcoding 'true'.
400 * Target.cs (Build): Add an overload to return executeOnErrors
401 value for the target executed. If building dependencies fails,
402 and executeOnErrors is true, then execute OnError tasks.
403 Add the new param to ..
404 (BuildDependencies): this, ..
406 (GetDependencies): Improve error message and variable name.
407 (ExecuteOnErrors): Honor OnError tag's Condition also.
408 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
410 2009-08-20 Ankit Jain <jankit@novell.com>
413 * Project.cs (Load): Add support for loading .sln files.
415 2009-08-20 Ankit Jain <jankit@novell.com>
417 * BuildTask.cs (Execute): Use task_logger only after the task
418 has been initialized. Catch and report task loading errors.
419 * Target.cs (DoBuild): Dont rethrow the exception, and emit
420 the stacktrace as a low importance message.
422 2009-08-18 Ankit Jain <jankit@novell.com>
424 * BatchingImplBase.cs: Make the item name lookups and metadata be case
426 * TaskDatabase.cs: Likewise.
427 * TaskEngine.cs: Make property name looks, case insensitive.
429 2009-08-09 Miguel de Icaza <miguel@novell.com>
431 * ConsoleLogger.cs: Change the format of the error and warnings
432 strings to work when invoked inside Emacs by not rendering the
433 column if available, by using lowercase "error"/"warning" strings
434 instead of camelcased versions and to not have unnecessary padding.
436 2009-07-31 Ankit Jain <jankit@novell.com>
438 * ConsoleLogger.cs: Keep track of all the errors and warnings
439 and show them at the end.
441 2009-07-31 Ankit Jain <jankit@novell.com>
443 * Target.cs (Build): Log a message if a target is skipped.
445 * BuildTask.cs (Execute): Log error if task execution fails.
447 2009-07-30 Ankit Jain <jankit@novell.com>
449 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
450 v2.0, this will change when multi-targeting lands.
452 2009-07-30 Ankit Jain <jankit@novell.com>
454 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
455 'MSBuildProjectName' properties.
457 2009-07-28 Ankit Jain <jankit@novell.com>
459 * TaskEngine.cs (Prepare): Fix formatting mistake.
460 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
461 fails. Also, emit result of project at Normal verbosity level.
463 2009-07-23 Ankit Jain <jankit@novell.com>
466 * Project.cs (ExtensionsPath): New.
467 (InitializeProperties): Set "MSBuildExtensionsPath" property.
469 2009-06-12 Ankit Jain <jankit@novell.com>
472 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
473 itemref is allowed if the prev/next element is ";".
475 2009-06-12 Ankit Jain <jankit@novell.com>
477 * Utilities.cs (FromMSBuildPath): Return null if the path contains
478 "drive:" only on windows.
480 2009-06-07 Ankit Jain <jankit@novell.com>
482 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
485 2009-05-29 Ankit Jain <jankit@novell.com>
487 Correctly handle global properties. Correctly log
488 project/build events.
490 * BuildPropertyGroup.cs (Clone): Implement.
491 * Engine.cs (globalProperties): Rename to ..
492 (global_properties): .. this.
493 (currentlyBuildingProjectsStack): New. Used to correctly
494 log and raise project/build start/finish events.
495 (BuildProjectFile): Override any project global properties
496 with explicitly specified ones, here in the param @globalProperties.
497 Mark project for reevaluation, which will update the engine's
498 global properties also.
499 Reset both engine and project's old global properties at the end.
500 (UnregisterAllLoggers): Log build finished only if we are currently
502 (StartBuild): Rename to ..
503 (StartProjectBuild): .. this. Keeps track of the projects being built
504 in the new stack, and logs project and build events accordingly.
505 (EndProjectBuild): New. Uses the stack to keep track of projects
506 finishing builds, and raises project and build events accordingly.
507 (LogProjectStarted): Move here from Project.cs
508 (LogProjectFinished): Likewise.
510 * Project.cs (Build): Log start of project build.
511 Set current directory to the project file's dir, and reset at end.
512 (BuildInternal): Don't log here, its done in Build.
513 (BuildTarget): Already built targets are keyed by the set of global
514 properties that they were built with.
515 (GlobalPropertiesToString): New.
516 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
517 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
518 (Evaluate): Remove built targets only if we are currently building and
519 build settings are None.
520 Merge project's global properties with those of the parent engine.
521 Add missing properties from engine's global properties.
522 (LogTargetSkipped): Fix format string, add the reqd argument.
524 2009-05-29 Ankit Jain <jankit@novell.com>
526 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
527 (HasTrailingSlash): New.
529 2009-05-12 Ankit Jain <jankit@novell.com>
531 * Project.cs (.ctor): Init timeOfLastDirty.
533 2009-05-05 Miguel de Icaza <miguel@novell.com>
535 * Contribution from Martin Brenn to fix #498154.
537 2009-04-27 Ankit Jain <jankit@novell.com>
540 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
541 one passed as argument.
543 2009-04-27 Ankit Jain <jankit@novell.com>
545 * TaskEngine.cs (Prepare): Emit a useful error message property value
546 can't be converted to required type.
548 2009-04-27 Ankit Jain <jankit@novell.com>
550 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
551 as valid true values for bool, and corresponding for false.
553 2009-03-27 Jonathan Chambers <joncham@gmail.com>
555 * BuildWhen.cs: Add basic implementation.
556 * BuildChoose.cs: Add basic implementation.
557 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
558 EvaluatedItemsIgnoringCondition.
559 * GroupingCollection.cs: Add evaluation of BuildChoose items.
561 2009-03-26 Jonathan Chambers <joncham@gmail.com>
563 * TaskDatabase.cs (RegisterTask): Search for class by name
564 if task was not found using GetType (which uses namespace).
566 2009-02-26 Ankit Jain <jankit@novell.com>
568 * Target.cs: Handle target with no tasks. Log errors.
570 2009-02-24 Ankit Jain <jankit@novell.com>
572 Lazily load UsingTask tasks.
573 * UsingTask.cs (Evaluate): Register 'this' with task database,
574 but don't load it yet. Register only if condition evaluates to true.
575 Move the load logic to ..
576 (Load): .. here. Register with the specified task database.
577 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
578 in a table keyed by task name, but don't load it yet.
579 (GetTypeFromClassName): Try to load UsingTask if task is not already
580 loaded. Move loading logic to ..
581 (GetTypeFromClassNameInternal): .. here.
582 (CopyTasks): Copy the usingTasks table also.
584 2009-02-23 Ankit Jain <jankit@novell.com>
586 * BuildItem.cs (AddMetadata): Allow overwriting older values.
588 2009-02-22 Ankit Jain <jankit@novell.com>
590 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
591 instead of XmlElement. Eg. XmlComment
593 2009-02-21 Ankit Jain <jankit@novell.com>
595 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
596 * Project.cs (Load): Use FromMSBuildPath on the path.
597 (InitializeProperties): Set "MSBuildToolsPath" also.
599 2009-02-20 Ankit Jain <jankit@novell.com>
602 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
603 transforms) in conditions.
604 * ConditionParser.cs: Parse unquoted item, property references.
605 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
606 * Token.cs (Token.ToString): Override.
607 (TokenType.Transform): Uncomment.
609 2009-02-12 Jonathan Chambers <joncham@gmail.com>
611 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
612 no XmlElement.InnerText. This allows properties to be additional
615 2009-02-01 Ankit Jain <jankit@novell.com>
617 * BuildEngine.cs (BuildProjectFile): Use
618 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
619 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
620 built. Move logging of project start/finish to ..
621 * Project.cs: .. here. Build a target only if hasn't been built already.
622 Keep track of target outputs, and return those even if an already built
623 target has been invoked again.
624 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
626 2009-01-31 Ankit Jain <jankit@novell.com>
628 * BatchingImpl.cs: Split into ..
629 * BatchingImplBase.cs: .. this,
630 * TaskBatchingImpl.cs: .. this ..
631 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
633 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
634 (Log*): Move to TargetBatchingImpl .
638 2009-01-30 Ankit Jain <jankit@novell.com>
640 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
643 2009-01-29 Ankit Jain <jankit@novell.com>
645 * BuildItem.cs (child_items): Change type from BuildItemGroup to
647 (HasParent): Rename to ..
648 (HasParentItem): .. this.
649 (ParentItemGroup): Add setter.
651 * BuildItemGroup.cs (.ctor): Add overload with @project param.
653 (AddItem): Correctly set the ParentItemGroup for new build items.
654 (ParentProject): Add setter.
655 * Project.cs: Set the project for new BuildItemGroup instances.
656 * TaskEngine.cs (PublishItemGroup): Likewise.
658 2009-01-06 Ankit Jain <jankit@novell.com>
660 * Project.cs (Build): Honor InitialTargets list.
662 2009-01-06 Ankit Jain <jankit@novell.com>
664 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
665 the property type also.
666 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
669 2009-01-06 Ankit Jain <jankit@novell.com>
671 * Project.cs (Build): Correctly handle null targetNames argument.
673 2009-01-06 Ankit Jain <jankit@novell.com>
675 * Engine.cs (LogProjectStarted): Add a null check.
677 2009-01-01 Ankit Jain <jankit@novell.com>
679 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
680 * ChangeType (ToBuildItemGroup): Add 'split' param.
682 * Expression.cs (Parse): Add a new overload with a 'split' param.
683 * ExpressionCollection.cs (Add): Add new overload for IReference,
684 remove the ones for Item/Metadata/PropertyReference.
685 (ConvertToArray): Implement correctly.
686 (ConvertToString): Track api changes.
687 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
688 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
689 (AddItemsToArray): New.
690 (ConvertToITaskItemArrayFromString): Refactor a bit.
691 (ThrowCantConcatError): New.
692 * ItemReference.cs: Update.
693 * MetadataReference.cs: Update.
694 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
696 * BuildPropertyGroup.cs: Track api changes.
697 * TaskEngine.cs (PublishOutput): Improve exception message.
698 * Project.cs (DoLoad): Improve exception message. Add a null check.
700 2008-12-30 Ankit Jain <jankit@novell.com>
702 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
703 metadata values for unqualified references.
704 (BuildItemGroupToITaskItemArray): Rename to ..
705 (BuildItemGroupToITaskItems): .. this.
708 2008-12-18 Ankit Jain <jankit@novell.com>
710 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
712 2008-12-17 Ankit Jain <jankit@novell.com>
714 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
715 only one instance of unique metadata value is required.
717 2008-11-22 Ankit Jain <jankit@novell.com>
719 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
721 * MetadataReference.cs (ConvertToITaskItemArray): New.
722 * Project.cs (GetAllItemGroups): New.
724 2008-11-21 Ankit Jain <jankit@novell.com>
726 * BatchingImpl.cs: Add task batching implementation.
727 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
728 * ExpressionCollection.cs (Count): New.
729 (ConvertToString): Handle MetadataReference.
730 * ItemReference.cs (ConvertToString):
731 (ConvertToITaskItemArray): Use the batching api.
733 * MetadataReference.cs (ConvertToString): New.
735 * Project.cs: Add api for accessing batched items and metadata.
736 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
739 2008-10-01 Ankit Jain <jankit@novell.com>
741 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
742 (BuildProjectFile): If filename is null (project.LoadXml) then use
744 * BuildTask.cs (InitializeTask): Track api change.
745 * Expression.cs (Parse): Skip empty entries in the expression.
747 2008-09-24 Ankit Jain <jankit@novell.com>
749 * Engine.cs: Add argument checks.
750 * Project.cs: Likewise.
752 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
754 * Project.cs (Build): Add outputs to targetOutputs.
756 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
758 * ExpressionCollection.cs (ConvertToArray): Simplify.
760 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
762 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
763 simplified. It still needs tests and refactoring.
765 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
767 * BuildEngine.cs (BuildProjectFile): Don't crash on null
770 * Target.cs: Add Outputs property.
772 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
774 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
775 (). Support condition.
777 * BatchingImpl.cs (BatchBuildTask): Simplify.
779 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
781 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
784 * ConditionFunctionExpression.cs: Removed warnings.
786 * BuildTask.cs (Execute): Write exceptions to std err (they should be
787 logged but it's better than swallowing).
789 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
791 * ConditionTokenizer.cs: Add Putback ().
793 * ConditionParser.cs: Add parsing of functions.
795 * ConditionFunctionExpression.cs: Add.
797 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
799 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
800 set property in persisted property group.
802 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
804 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
807 * ConsoleLogger.cs (TargetFinishedHandler)
808 (TaskFinishedHandler): Increment error count.
810 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
812 * BuildItem.cs (RemoveMetadata): Remove from XML.
813 (SetMetadata): Trigger project reevaluation.
815 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
817 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
820 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
822 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
823 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
824 BatchingImpl.cs, BuildProperty.cs: Track API changes.
826 * Expression.cs (Parse): Added allowItems parameter and made regexes
829 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
830 will try to import a.ext when given a.EXT.
832 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
834 * BuildItemGroup.cs: Store information saying what is the last item
835 group that contains build item name.
837 * Project.cs (Build): Pass empty array (build default targets).
839 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
841 * Token.cs: Commented Transform and LiteralSubExpression and added
844 * ConditionParser.cs: Removed redundant casts, rewrote
845 ParseFactorExpression () and added parsing of '!'.
847 * ConditionTokenizer.cs: Always skip whitespaces when getting next
848 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
849 Moved ReadChar () in front of all ifs.
851 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
853 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
854 from XML. (not to escape items that have parents twice).
856 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
858 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
859 (Project): Renamed to ParentProject.
861 * BuildItem.cs (ctor)
862 (CopyCustomMetadata): Add null check.
864 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
865 (RemoveProperty): Added null check.
867 * TargetCollection.cs (RemoveTarget): Added null check.
869 * Engine.cs (UnloadProject): Added null check.
871 * GroupingCollection.cs (Remove): Check if removed group belongs to
874 * Project.cs (AddNewItem): Implemented.
875 (RemoveItem): Reorganized.
876 (SetProjectExtensions): Added null check.
878 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
880 * BuildItemGroup.cs (Detach): Added.
882 (RemoveItemAt): Used Detach ().
884 * BuildItem.cs: Made FromXml and HasParent internal and added
885 ParentItem and ParentItemGroup properties (internal).
888 * GroupingCollection.cs (Remove): Used Detach ().
890 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
892 (GetEvaluatedItemsByNameIgnoringCondition)
893 (GetEvaluatedItemsByName)
894 (GetEvaluatedProperty): Reevaluate if needed.
896 (RemoveAllItemGroups)
897 (RemoveAllPropertyGroups): Implemented.
898 (DoLoad): Added closing of TextReader.
900 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
902 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
903 change but just mark that it needs it.
905 * Project.cs: Reevaluate when it needs reevaluation and one of
906 Evaluated* properties is used.
908 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
910 * Target.cs: Throw an exception when <OnError> is not last element in
913 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
915 * TargetCollection.cs: If a target is already there replace it with
918 * BuildProperty.cs: Added XmlElement property.
920 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
922 * ImportCollection.cs: Don't add imports that are already added.
924 * BuildItemGroup.cs: MonoTODOs.
926 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
927 condition can't be evaluated to bool.
929 * BuildPropertyGroup.cs (Evaluate): Simplify.
931 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
933 * BuildWhen.cs: Moved BindToXml () code to ctor.
935 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
936 property needed for removing groups.
938 * Engine.cs: Added StartBuild () that logs build start when Build ()
941 * GroupingCollection.cs: Added Remove () for item and property groups.
943 * Project.cs (AddNewImport): Implemented.
944 (AddNewItemGroup): Implemented.
945 (AddNewPropertyGroup): Implemented.
946 (AddNewUsingTaskFromAssemblyFile): Implemented.
947 (AddNewUsingTaskFromAssemblyName): Implemented.
948 (RemoveItemGroup): Implemented.
949 (RemovePropertyGroup): Implemented.
951 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
953 * BuildItemGroup.cs (Clear): Remove from XML.
955 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
956 to Project.EvaluatedProperties.
957 (Clear): Remove from XML.
959 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
961 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
964 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
966 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
967 Add () calls when processing a project from Import and
968 evaluate_iterator for evaluation.
970 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
972 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
973 and prepend relative directory of importing project to full path of
976 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
978 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
979 BuildItemGroupCollection.cs, Project.cs: Track API changes.
981 * GroupingCollection.cs: Now it needs Project reference so added it.
983 * BuildTask.cs: Formatting.
985 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
987 * ConditionParser.cs (ParseAndEvaluate): Added.
989 * BuildItem.cs: Changed exception message.
991 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
993 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
994 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
995 GroupingCollection doesn't need Project reference.
997 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
999 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
1000 (Project.EvaluatedItems is a read only item group.)
1001 (ReplaceWith): Added.
1003 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
1004 global property group causes reevaluation of its project.
1006 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
1009 * OldExpression.cs: Removed.
1011 * BuildProperty.cs (Evaluate): Simplified.
1013 * ChangeType.cs (TemporaryTransform): Simplified.
1015 * BuildItem.cs: There are now 3 types of build items: from XML, having
1016 parent from XML, virtual. Added SplitParentItem ().
1018 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1020 * Utilities.cs: Added Unescape ().
1022 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
1023 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
1024 groups (at the moment just unescape).
1026 * Expression.cs (CopyToExpressionList): Unescape strings.
1028 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1030 * Target.cs (ctor): Added ImportedProject argument and removed
1032 (AddNewTask): Implemented.
1034 * TargetCollection.cs (AddNewTarget): Implemented.
1036 * Project.cs: Track API changes.
1038 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1040 * Target.cs (Build): Don't throw anything in case of error, just
1043 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
1046 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
1049 * BuildProperty.cs (ToString): Throw an exception if property is not
1051 (op_Explicit): Added a null check.
1053 * Engine.cs: Better error message.
1055 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
1056 IndexOutOfRangeException.
1058 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
1059 (MarkProjectAsDirty): Set time.
1061 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1063 * BuildItemGroup.cs (Clone): Throw exception.
1065 * Project.cs (Load): Throw InvalidProjectFileException if anything
1068 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1070 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
1071 and ConvertToITaskItemArray ().
1073 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1075 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
1076 classes that were public in Beta 2 and aren't used.
1078 * Expression.cs: Added replacement for parsing expressions char by
1079 char. It uses regexes to find item/property/metadata references in
1082 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1083 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1084 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1086 * ConditionRelationalExpression.cs: Formatting.
1088 * OldExpression.cs: Commented everything.
1090 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1091 parsing to Expression.
1093 * BuildItem.cs: Check if project is from XML in set_Condition and
1096 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1099 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1100 can evaluate expression in CanEvaluateToBool ().
1102 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1104 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1105 which item group is imported.
1107 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1109 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1111 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1112 BuildItemGroupCollection.cs: Little changes related to
1115 * ImportCollection.cs: Use GroupingCollection not an internal list.
1117 * Import.cs (Evaluate): Split to functions and check if
1118 EvaluatedProjectPath is empty.
1120 * GroupingCollection.cs, Project.cs: Move evaluation to
1121 GroupingCollection. Change algorithm to use 2 passes: first for property
1122 groups and imports and second for item groups.
1124 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1126 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1127 BuildItemGroup> not IDictionary.
1129 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1130 evaluated to false because we want to add every item to
1131 Project.EvaluatedItemsByNameIgnoringCondition.
1133 * Project.cs (Build): Don't throw an exception just return false.
1134 (GetEvaluatedProperty): Avoid NullReferenceException.
1135 (SetProjectExtensions): Implemented.
1137 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1139 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1141 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1142 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1143 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1145 * ImportCollection.cs: Added a note.
1147 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1149 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1151 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1152 (UsingTask[] array, int index)
1154 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1155 items to Project.EvaluatedItems in PublishItemGroup ();
1157 * BuildItemGroup.cs: Added [MonoTODO].
1159 * UsingTask.cs: Used expression for AssemblyFile to get around
1160 problems with '\' and '/'.
1162 * BuildItem.cs (ctor): Added null checks.
1163 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1164 (SetMetadata): Don't escape evaluatedMetadata and escape
1165 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1167 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1168 FromXml () instead of null checks.
1169 (SetProperty): Escape propertyValue when it is literal.
1171 * BuildProperty.cs: Changed exception message.
1173 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1175 (GetProjectExtensions): Implemented.
1177 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1179 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1180 GetParameterValue (), use expressions in ContinueOnError.
1181 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1182 instead of InvalidOperationException ().
1183 * ImportCollection.cs: Implement CopyTo ().
1184 * Target.cs: Remove redundant variables (XmlAttributes), return
1185 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1186 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1187 * Import.cs: Throw an exception when file does not exist.
1188 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1189 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1190 need to treat item as a token probably
1192 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1194 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1195 throw an exception).
1196 * BuildItemGroupCollection.cs: Changed exception types.
1198 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1200 * Engine.cs: Removed redundant cast.
1202 * UsingTaskCollection.cs:
1206 * TargetCollection.cs: Comment unused variable.
1207 * ConditionTokenizer.cs: Simplified checking if current token is a
1209 * Target.cs: Removed old code.
1211 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1213 * Target.cs: Changed "" to String.Empty.
1214 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1215 string was evaluated to String.Empty.
1216 * InternalLoggerException.cs:
1217 * InvalidProjectFileException.cs: Added LinkDemand before
1219 * ConsoleLogger.cs: Changed "" to String.Empty.
1220 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1221 with change to generics).
1222 * Project.cs: Made Build () throw more meaningful exception.
1224 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1226 * Target.cs: Reformatted.
1227 * TaskEngine.cs: Removed redundant code.
1228 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1229 * Engine.cs: Made BuildProjectFile () load project file if it's not
1232 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1234 * ConditionRelationalExpression.cs: Change comparers to case
1236 * ImportCollection.cs: Add NotImplementedExceptions.
1237 * BuildPropertyGroup.cs: Reformatted a bit.
1238 * BuildProperty.cs: The same.
1239 * Project.cs: Moved evaluation of imports before evaluation of
1240 properties. This may "work" until importing projects is redesigned but
1241 probably isn't correct.
1243 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1245 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1247 * BuildItemGroup.cs: Change return to continue.
1249 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1251 * ConditionParser.cs: Copyright note.
1252 * ExpressionCollection.cs: Fixed arrays passing.
1254 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1256 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1257 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1258 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1259 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1261 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1263 * Token.cs: Changed names: removed "than".
1264 * ConditionRelationalExpression.cs: Added.
1265 * ConditionFactorExpression.cs: Added.
1266 * BuildItemGroup.cs: Changed Condition property return value to return
1267 String.Empty instead of null.
1268 * ConditionParser.cs: Added support for parsing relational expressions
1270 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1271 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1272 and CanEvaluateToBool (), CanEvaluateToNumber () and
1273 CanEvaluateToString ().
1274 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1275 appropriately to ConditionExpression base class.
1276 * ConditionTokenizer.cs: Added null check and changed names in enums:
1278 * ConditionNotExpression.cs: Added.
1279 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1280 * Project.cs: Added checks for condition.
1282 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1284 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1285 ConditionalParser.cs: Changed name,
1287 * ConditionExpression.cs: Added Evaluate ().
1288 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1289 * BatchingImpl.cs: Added check if task should be executed.
1291 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1293 * UsingTask.cs: Changed properties to return null on empty attribute.
1294 * UsingTaskCollection.cs: Added object to SyncRoot.
1295 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1297 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1299 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1300 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1302 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1304 * Utilities.cs: Implemented Escape ().
1305 * BuildItem.cs: Added null checks.
1306 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1307 * Project.cs: Commented out redundant Evaluate ().
1308 * BuildChoose.cs: Minor changes.
1310 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1312 * Token: Added new few missing tokens.
1313 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1314 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1315 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1316 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1317 LiteralTokenizer.cs:
1318 Removed literal expression parsing based on tokenizer and
1319 parser. It needs to be done by regex.
1321 Moved tokenizer to ConditionalTokenizer.cs.
1323 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1325 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1326 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1327 methods converting reference to string from ToString () to
1328 ConvertToString () to avoid mistakes like using ToString () provided
1331 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1333 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1334 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1335 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1336 OldExpression and changed To* functions to one ConvertTo ().
1337 * TaskEngine.cs: Fixed PublishOutput ().
1338 * OldExpression.cs: Added. It will be temporarily used before
1339 LiteralExpression will be written using Tokenizer.
1340 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1341 ExpressionParseException.cs, LiteralExpression.cs: Added.
1343 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1345 * ImportedProject.cs: Removed warning.
1346 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1349 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1351 * Project.cs: Removed unnecessary variable.
1352 * Engine.cs: Added fixme.
1354 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1356 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1357 class (Mono.XBuild.Utilities.ReservedNameUtils).
1359 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1361 * BuildTask.cs: Removed unnecessary variable.
1362 * Engine.cs: Added logging of the build start.
1363 * Project.cs: Removed unnecessary variable.
1365 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1367 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1369 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1371 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1373 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1375 * BuildItem.cs: Fix typo?
1377 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1379 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1380 Engine.cs, Project.cs: Coding style fixes.
1382 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1384 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1386 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1388 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1389 to pass tests. Wrote serialization constructor.
1390 * Engine.cs, Project.cs: Global engine and project unloading, test and
1393 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1395 * UsingTask.cs: Formatting changes.
1397 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1399 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1400 to lists instead of hashtables.
1401 * Import.cs: Cleaned up, moved importing from Project.cs
1402 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1403 * Engine.cs: Cleaned up properties.
1404 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1405 Separated evaluation and loading.
1407 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1409 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1410 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1411 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1412 binding and evaluation, merge xml binding in constructors.
1413 * DirectoryScanner.cs: Includes CAN be empty.
1414 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1415 * ConsoleLogger.cs: Fix compilation warning.
1417 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1419 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1421 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1423 * Engine.cs: API cleanup.
1425 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1427 * Project.cs: Cleaned up add.
1428 * Expression.cs: Hacked to transform \ and / to path separators.
1429 * BuildPropertyGroup.cs: Small cleanup.
1430 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1433 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1435 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1436 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1438 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1439 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1440 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1442 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1443 * TaskElement.cs: Temporarily removed.
1444 * Xml.cs: Changed to static.
1446 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1448 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1449 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1450 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1451 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1452 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1453 IBuildPropertyGroupCollection.cs: Removed.
1455 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1457 * BuildItem.cs: Removed IBuildItem references.
1458 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1459 IBuildItemGroup references. Changed Evaluate to internal.
1460 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1461 reference and hidden constructors.
1462 * BuildProperty.cs: Removed IBuildProperty reference.
1463 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1464 IBuildPropertyGroup references. Changed Evaluate to internal.
1465 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1466 reference and hidden constructors.
1467 * ConsoleLogger.cs: Updated names of event handlers.
1468 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1469 Escape. Added UnloadAllProjects () and UnloadProject ().
1470 * FileLogger.cs: Removed ApplyParameter ().
1471 * GroupingCollection.cs: Hidden.
1472 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1473 * ItemPropertyGroupingBase.cs: Commented.
1474 * ProcessingPass.cs: Hidden.
1475 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1477 * Target.cs: Removed ITarget reference.
1478 * TargetCollection.cs: Removed ITargetCollection reference.
1479 * TaskElement.cs: Removed ITaskElement reference.
1480 * TaskEngineAssemblyResolver.cs: Hidden.
1481 * Utilities.cs: Made static class, removed CheckPath (),
1482 ValidateCulture (), GetSupportedCultures () and added Escape ().
1484 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1486 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1489 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1491 * Project.cs: Added MonoTODO attributes.
1492 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1493 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1494 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1495 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1496 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1497 BuildItemGroup.cs, InvalidProjectFileException.cs,
1498 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1499 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1500 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1501 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1502 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1503 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1504 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1505 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1506 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1507 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1508 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1509 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1511 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1513 * TaskDatabase.cs: Change Shared to Framework.
1514 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1515 CaseInsensitiveHashCodeProvider
1517 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1519 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1520 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1523 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1525 * InternalLoggerException.cs: Changed protected fields to private.
1527 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1529 * Engine.cs: Added check for globalProperties.
1530 * Project.cs: Added using path from importedProject.FullFileName when
1531 adding UsingTask elements.
1533 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1535 * TaskElement.cs: Changed ReflectedType to PropertyType.
1536 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1539 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1541 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1543 * BuildProperty.cs: Organized PropertyType enum.
1544 * Engine.cs: Added setting CommandLine PropertyType of global
1547 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1549 * InvalidProjectFileException.cs: Changed Message property.
1550 * ChangeType.cs (TransformToString): Added separator between items.
1551 * TaskEngineAssemblyResolver.cs: Formatting.
1553 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1555 * DirectoryScanner.cs: Added.
1556 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1557 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1558 * Project.cs: Removed Evalute* ().
1560 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1562 * Target.cs: Formatting.
1563 * Expression.cs: Added check if array == null.
1564 * BuildItem.cs: Removed 'break' to remove warnings.
1565 * ConsoleLogger.cs: Formatting.
1566 * Engine.cs: Added handling of default target(s).
1567 * Project.cs: Added handling of default target(s).
1569 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1571 * TaskElement.cs: Added check for parameters.
1572 * Target.cs: Added logging of target skipping.
1573 * Expression.cs: Changed returning object[] to string[], bool[]... in
1575 * ItemReference.cs: Fixed for item references without custom
1577 * BatchingImpl.cs: Added real inputs/outputs checking.
1578 * Engine.cs: Moved global properties setting.
1579 * Project.cs: Moved global properties setting.
1581 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1583 * Target.cs: Added checks for target existence.
1584 * BuildItemGroup.cs: Changed to use transforms.
1585 * MetadataReference.cs: Wrote real implementation.
1586 * ItemReference.cs: Rewritten to use transforms.
1587 * BuildItem.cs: Changes for transforms and metadata.
1588 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1590 * Project.cs: Fixed project importing.
1591 * ImportedProject.cs: Changed to throw exceptions instead of returning
1594 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1596 * Engine.cs: Removed FIXME.
1597 * Project.cs: Splitted ProcessElements and added project importing.
1598 * ImportedProject.cs: Rewritten.
1600 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1602 * TaskElement.cs: Added getting of objects of every type.
1603 * BuildItemGroup.cs: Added ToITaskItemArray ().
1604 * Expression.cs: Implemented part that is not using metadata.
1605 * ItemReference.cs: Implemented parsing item references. Need to fix
1607 * BuildItem.cs: Fixed ToITaskItem ().
1608 * PropertyReference.cs: Implemented parsing property references. This
1609 also needs validity checking.
1611 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1613 * TaskElement.cs: Added Output element handling.
1614 * Target.cs: Cleaned up.
1615 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1616 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1617 ItemReference.cs, ChangeType.cs: Added.
1618 * BuildItem.cs: Added creating BuildItem from TaskItem.
1619 * BuildPropertyGroup.cs: Small changes.
1620 * BatchingImpl.cs: Fixed to return real task execution result.
1621 * BuildProperty.cs: Fixed FinalValue property.
1622 * Engine.cs: Reformatted logging.
1623 * Project.cs: Added check to EvaluateProperty.
1625 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1627 * TaskElement.cs: Added part of execution engine.
1628 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1629 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1630 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1631 * BuildItem.cs: Added handling of built-in metadata and referencing
1632 Items by name not FullName.
1633 * BatchingImpl.cs: Added temporary task "batching".
1634 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1635 * Project.cs: Added Evaluate. It will be moved to separate class.
1637 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1639 * EventSource.cs, Engine.cs: Added CriticalEvents.
1640 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1641 Project.cs: Added some support for items.
1642 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1644 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1646 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1649 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1651 * BatchingImpl.cs: Added.
1652 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1653 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1654 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1655 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1656 GroupingCollection.cs: Updated.
1658 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1660 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1661 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1662 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1663 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1664 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1665 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1666 InternalLoggerException.cs, InvalidProjectFileException.cs,
1667 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1668 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1669 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1670 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1671 Initial check-in of implementations.
1673 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1675 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1676 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1677 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1678 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1679 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1680 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1681 Initial check-in of interfaces and a syntax file, real classes are
1682 changing a lot so I'll wait a moment with checking them in.