1 2010-06-23 Ankit Jain <jankit@novell.com>
3 * TargetBatchingImpl.cs (BuildTargetNeeded): Fix var names to
4 correctly reflect what they track. Log messages when skipping
7 2010-06-04 Ankit Jain <jankit@novell.com>
9 * Import.cs (EvaluateProjectPath): Add a hack to support multiple
10 msbuild extension paths. Paths can be specified via the environment
11 variable - $MSBuildExtensionsPath . ~/.config/xbuild/tasks is also
12 checked for extensions, besides the default location.
13 This explicitly looks for a "$(MSBuildExtensionsPath)" in the import
14 expression and tries to replace that with possible paths, till it
15 finds the file. In rest of the project, the property would resolve
16 to its single default value.
18 2010-06-03 Ankit Jain <jankit@novell.com>
20 * Engine.cs (GetLoadedProject): Return null if project not found.
21 Based on a patch by Dale Ragan <dale.ragan@sinesignal.com> .
23 2010-05-28 Ankit Jain <jankit@novell.com>
26 * DirectoryScanner.cs (ProcessInclude): Set %(RecursiveDir) only if
27 the '**' wildcard was found in the original Include.
29 2010-04-10 Ankit Jain <jankit@novell.com>
31 * Project.cs (InitializeProperties): Set MSBuildBinPath to the current
34 2010-04-10 Ankit Jain <jankit@novell.com>
36 * TaskEngine.cs (Prepare): Throw InvalidProjectFileException instead of a generic
39 2010-04-10 Ankit Jain <jankit@novell.com>
41 * ConsoleLogger.cs (EventsToString): If the target being executed is
42 from an imported file, then show that.
44 2010-04-10 Ankit Jain <jankit@novell.com>
46 * Project.cs: Add property MSBuildExtensionsPath32, used by silverlight
49 2010-04-07 Ankit Jain <jankit@novell.com>
51 * ConsoleLogger.cs: Dump items and properties when a project starts
52 to build. Useful for debugging.
53 * Engine.cs (LogProjectStarted): Set the properties and items also,
54 for the project started event.
55 * Project.cs (EvaluatedPropertiesAsDictionaryEntries): New.
56 (EvaluatedItemsByNameAsDictionaryEntries): New. Required for
59 2010-04-03 Ankit Jain <jankit@novell.com>
61 * BuildEngine.cs: Implement IBuildEngine2 instead of
63 * BuildTasks.cs: Use the new extension methods for logging.
64 (InitializeTask): Emit a message informing about the assembly
65 from which the task is being loaded. Emit a useful debug message
66 incase of a InvalidCastException.
67 * Engine.cs: Add missing methods, constructors and properties related
68 to ToolsVersion support. Setup a default set of Toolsets.
69 Keep separate taskdbs' per ToolsVersion. The common tasks
70 would come from different *.tasks file, and use different
72 (DefaultToolsVersion): Correctly set this based on the profile.
73 * LogExtensions.cs: New. Extension methods on Engine, for logging.
74 * Project.cs: Add missing methods/contructors/properties related
75 to ToolsVersion support. Add reserved properties -
76 MSBuildToolsPath and MSBuildToolsVersion .
78 * ToolsetCollection.cs: New.
79 * ToolsetDefinitionLocations.cs: New.
81 2010-03-04 Ankit Jain <jankit@novell.com>
83 * BuildEngine.cs (LogErrorEvent): Log as warning, if
84 ContinueOnError==true, and log a corresponding message.
85 * TargetBatchingImpl.cs: Refactor to share code between the
86 batched and unbatched case. If a task fails and
87 ContinueOnError==true, then ignore the failed state.
89 2010-02-19 Ankit Jain <jankit@novell.com>
91 * BuildItem.cs: Track api changes.
92 (SetMetadata): Allow RecursiveDir to be set, this is set by
94 * DirectoryScanner.cs (ProcessInclude): Set RecursiveDir metadata.
96 2010-02-19 Ankit Jain <jankit@novell.com>
98 * Import.cs (Evaluate): Add param @ignoreMissingImports.
99 * Project.cs (Load*): Add overloads with param @projectLoadSettings.
100 (Log*): Mark internal.
101 * ProjectLoadSettings.cs: New.
103 2010-02-04 Ankit Jain <jankit@novell.com>
106 * ConditionFunctionExpression.cs (Exists): Check for directory also.
108 2009-12-22 Ankit Jain <jankit@novell.com>
111 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
112 * BuildItem.cs: Track api changes.
114 2009-12-02 Ankit Jain <jankit@novell.com>
117 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
118 being iterated over. Patch by Laurent Etiemble
119 <laurent.etiemble@gmail.com>
121 2009-11-28 Ankit Jain <jankit@novell.com>
124 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
125 * Project.cs (Batch): New. Contains the perBatchItems and the
126 commonItems for the batch.
127 Use a stack of batches, instead of directly setting the current
131 (SetBatchedItems): Make this private.
132 (GlobalProperties.set): Re-evaluating the project is not required
134 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
136 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
138 * Target.cs (Build): Reset the current batch to nil before evaluating
139 and building this target.
141 2009-11-28 Ankit Jain <jankit@novell.com>
143 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
144 available in either perBatchItemsByName or commonItemsByName
145 or the evaluatedItemsByName collection. Allows the use of
146 items which are not batched, but are consumed in case of batching.
148 2009-11-26 Ankit Jain <jankit@novell.com>
150 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
151 refs also, for Inputs and Outputs.
153 2009-10-13 Ankit Jain <jankit@novell.com>
155 * DirectoryScanner.cs:
156 * ExpressionCollection.cs:
157 * GroupingCollection.cs:
159 * Target.cs: Fix warnings.
161 2009-10-12 Ankit Jain <jankit@novell.com>
163 * Target.cs (TargetFile): New. Gives the name of the file
164 containing the target definition.
165 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
166 return this for ProjectFileOfTaskNode.
167 * BuildTask.cs (LogTaskStarted):
168 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
170 (InitializeTask): Set BuildEngine's task file to parent target's
172 * Engine.cs (LogProjectStarted): Incase of default targets, set
173 TargetNames to String.Empty .
174 * TargetBatchingImpl.cs (LogTargetStarted):
175 (LogTargetFinished): Use target.TargetFile for the event.
177 * ConsoleLogger.cs: Keep a stack of project/target/task being
178 executed. And corresponding list of errors and warnings.
179 (EventsToString): Stringifies the current "stack", to be used
180 as key to the table of errors/warnings and for show messages
181 at the end of the build.
183 2009-10-12 Ankit Jain <jankit@novell.com>
185 * Project.cs (Load): Add argument checks.
187 2009-10-11 Ankit Jain <jankit@novell.com>
189 * ConsoleLogger.cs (no_colors): Rename to ..
190 (use_colors): .. this. Fix the case when XBUILD_COLORS
193 2009-10-11 Ankit Jain <jankit@novell.com>
195 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
196 Support 'XBUILD_COLORS' to set colors for errors, warnings,
199 2009-10-10 Ankit Jain <jankit@novell.com>
201 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
202 becomes true, don't reset it. We are looking for "atleast one
205 2009-10-08 Ankit Jain <jankit@novell.com>
207 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
208 directly using DirectoryInfo ("z:"), that doesn't return
211 2009-10-08 Ankit Jain <jankit@novell.com>
213 * DirectoryScanner.cs: Handle absolute paths. Fix to work
214 correctly on windows. Change order of adding paths to match
215 msbuild, useful to have.
217 2009-10-08 Ankit Jain <jankit@novell.com>
219 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
220 of the 'Output' element also.
221 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
223 2009-10-07 Ankit Jain <jankit@novell.com>
225 * ConsoleLogger.cs: Mark build as failed, if any project failed.
227 2009-10-06 Ankit Jain <jankit@novell.com>
229 * ConsoleLogger: Improve error reporting. Don't count failed task,
230 target or project as another error. Show "errors" after "warnings",
231 more useful to the user.
232 * Project.cs (BuildTarget): Log error instead of using CWL.
234 2009-10-03 Ankit Jain <jankit@novell.com>
236 * Project.cs (OS): New.
237 (InitializeProperties): Set 'OS' as a pre-defined property, set to
238 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
240 2009-10-02 Ankit Jain <jankit@novell.com>
242 * Expression.cs (Parse): Don't change '/' to '\\', not required.
244 2009-10-01 Ankit Jain <jankit@novell.com>
246 * Project.cs (AddImport): Show the correct source file name, when
247 the import is in the main project file.
249 2009-10-01 Ankit Jain <jankit@novell.com>
252 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
253 the full path of the imported project here itself, instead of ..
255 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
257 * Project.cs (AddImport): Don't process if condition is false.
258 Warn if a circular reference is detected, and ignore the import.
260 2009-09-29 Ankit Jain <jankit@novell.com>
262 * GroupingCollection.cs (Evaluate): Mark internal.
263 * Project.cs (AddImport): Only evaluate the properties,
264 till before the import.
266 2009-09-29 Ankit Jain <jankit@novell.com>
268 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
269 the project xml, as returned Xml*Reader normalizes the newlines.
270 Instead directly use the TextReader with XmlDocument.Load ().
272 2009-09-27 Ankit Jain <jankit@novell.com>
274 * ConditionParser.cs: Show the condition being parsed in the
277 2009-09-26 Ankit Jain <jankit@novell.com>
279 * Expression.cs: Allow '-' in item, property and metadata names.
281 2009-09-26 Ankit Jain <jankit@novell.com>
283 * Project.cs (Evaluate): Split into this and ..
284 (PrepareForEvaluate): .. this.
285 (AddImport): Evaluate the current set of properties/items etc,
286 before processing the imported project. Honor the Condition
288 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
290 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
291 * BuildItemGroup.cs (Evaluate): Evaluate only once.
292 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
294 2009-09-26 Ankit Jain <jankit@novell.com>
296 * Project.cs: Get InitialTargets from the imported projects also.
297 The combined list of targets are executed, in the order they were
299 DefaultTargets are also read in from imported projects, and the first
300 non-empty DefaultTargets found is used.
302 2009-09-25 Ankit Jain <jankit@novell.com>
304 * Project.cs (BuildTarget): Handle skipped targets.
306 2009-09-25 Ankit Jain <jankit@novell.com>
308 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
309 InvalidProjectFileException with useful error.
311 2009-09-24 Ankit Jain <jankit@novell.com>
313 * Project.cs (Load): Emit the .sln.proj file only if env var
314 XBUILD_EMIT_SOLUTION is set.
316 2009-09-24 Ankit Jain <jankit@novell.com>
318 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
320 2009-09-24 Ankit Jain <jankit@novell.com>
322 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
325 2009-09-10 Ankit Jain <jankit@novell.com>
327 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
328 preserved, so use ConvertTo ITaskItem, rather than string.
329 Ensure that the new items have the metadata from references _in_
330 Include, and the metadata of _this_ builditem.
331 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
332 (MatchedFilenames): Rename to ..
333 (MatchedItems): .. this, and change type of array of ITaskItem.
334 Ensure that metadata of items in Includes are retained in the
337 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
338 param. If separator is present, then just return a "Join'ed"
339 string as the single task item.
340 * ItemReference.cs: Track api changes.
342 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
343 as we need separate task items.
345 2009-09-01 Ankit Jain <jankit@novell.com>
348 * Project.cs (BuildTarget): Move caching of target outputs to ..
349 * Target.cs: .. here. Move LogTargetSkipped also here.
350 Ensure that caching happens for target dependencies also.
352 2009-09-01 Ankit Jain <jankit@novell.com>
354 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
357 2009-09-01 Ankit Jain <jankit@novell.com>
359 * Expression.cs (ParseOptions): New enum. Replace the bool params
360 of exression.Parse with this. Add option to control expansion of
362 (CopyToExpressionCollection): Track api changes.
364 Update all expr.Parse calls to use the new enum.
365 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
366 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
368 * BatchingImplBase.cs: Track api changes. Allow metadata refs
370 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
371 * ItemReference.cs: Allow metadata in transforms.
372 * TaskEngine.cs: Allow metadata refs.
374 * MetadataReference.cs (.ctor): Add a 'original string' param.
376 2009-08-29 Ankit Jain <jankit@novell.com>
378 * Expression.cs (ExpressionOptions): New.
380 Introduce a ExpressionOptions argument to all ConvertTo*
381 methods. Implement the rule: in evaluation phase, expand
382 all items completely, but dont expand item refs in properties.
383 At other times, expand the item refs in the properties.
384 See comments in Expression.cs, for a full explanation.
385 * BuildItem.cs: Track api changes.
386 * BuildItemGroup.cs: Likewise.
387 * BuildProperty.cs: Track api changes. Handle self-references.
388 * BuildTask.cs: Track api changes.
389 * IReference.cs: Add ExpressionOptions param.
390 * ItemReference.cs: Track api changes.
391 * PropertyReference.cs: Likewise.
392 * MetadataReference.cs: Likewise.
393 * ExpressionCollection.cs: Track api changes. Add support for
394 converting all primitive types and DateTime, instead of a fixed
396 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
397 * TaskBatchingImpl.cs: Handle the case when batching is required,
398 but no items are available.
400 * TaskEngine.cs: Throw on unsupported types. Correctly handle
401 properties in case of empty values.
403 2009-08-26 Ankit Jain <jankit@novell.com>
405 * Expression.cs: Correctly handle a item reference with transform
406 when allowItems is false. If item ref is ignored, then the transform
407 will get incorrectly matched as a metadata ref.
408 * ItemReference.cs (.ctor): Add a @original_string param.
410 2009-08-26 Ankit Jain <jankit@novell.com>
412 * Utilities.cs (UnescapeFromXml): New. From md.
413 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
414 of the property element.
416 2009-08-26 Ankit Jain <jankit@novell.com>
418 * BuildProperty.cs (ConvertToString): New.
419 (ConvertoToITaskItemArray): New. Parse the property value.
420 * PropertyReference.cs (ConvertToString): Use BuildProperty's
422 (ConvertoToITaskItemArray): Likewise.
424 2009-08-21 Ankit Jain <jankit@novell.com>
426 * Engine.cs (EndProjectBuild): Use the @succeeded argument
427 instead of hardcoding 'true'.
428 * Target.cs (Build): Add an overload to return executeOnErrors
429 value for the target executed. If building dependencies fails,
430 and executeOnErrors is true, then execute OnError tasks.
431 Add the new param to ..
432 (BuildDependencies): this, ..
434 (GetDependencies): Improve error message and variable name.
435 (ExecuteOnErrors): Honor OnError tag's Condition also.
436 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
438 2009-08-20 Ankit Jain <jankit@novell.com>
441 * Project.cs (Load): Add support for loading .sln files.
443 2009-08-20 Ankit Jain <jankit@novell.com>
445 * BuildTask.cs (Execute): Use task_logger only after the task
446 has been initialized. Catch and report task loading errors.
447 * Target.cs (DoBuild): Dont rethrow the exception, and emit
448 the stacktrace as a low importance message.
450 2009-08-18 Ankit Jain <jankit@novell.com>
452 * BatchingImplBase.cs: Make the item name lookups and metadata be case
454 * TaskDatabase.cs: Likewise.
455 * TaskEngine.cs: Make property name looks, case insensitive.
457 2009-08-09 Miguel de Icaza <miguel@novell.com>
459 * ConsoleLogger.cs: Change the format of the error and warnings
460 strings to work when invoked inside Emacs by not rendering the
461 column if available, by using lowercase "error"/"warning" strings
462 instead of camelcased versions and to not have unnecessary padding.
464 2009-07-31 Ankit Jain <jankit@novell.com>
466 * ConsoleLogger.cs: Keep track of all the errors and warnings
467 and show them at the end.
469 2009-07-31 Ankit Jain <jankit@novell.com>
471 * Target.cs (Build): Log a message if a target is skipped.
473 * BuildTask.cs (Execute): Log error if task execution fails.
475 2009-07-30 Ankit Jain <jankit@novell.com>
477 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
478 v2.0, this will change when multi-targeting lands.
480 2009-07-30 Ankit Jain <jankit@novell.com>
482 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
483 'MSBuildProjectName' properties.
485 2009-07-28 Ankit Jain <jankit@novell.com>
487 * TaskEngine.cs (Prepare): Fix formatting mistake.
488 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
489 fails. Also, emit result of project at Normal verbosity level.
491 2009-07-23 Ankit Jain <jankit@novell.com>
494 * Project.cs (ExtensionsPath): New.
495 (InitializeProperties): Set "MSBuildExtensionsPath" property.
497 2009-06-12 Ankit Jain <jankit@novell.com>
500 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
501 itemref is allowed if the prev/next element is ";".
503 2009-06-12 Ankit Jain <jankit@novell.com>
505 * Utilities.cs (FromMSBuildPath): Return null if the path contains
506 "drive:" only on windows.
508 2009-06-07 Ankit Jain <jankit@novell.com>
510 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
513 2009-05-29 Ankit Jain <jankit@novell.com>
515 Correctly handle global properties. Correctly log
516 project/build events.
518 * BuildPropertyGroup.cs (Clone): Implement.
519 * Engine.cs (globalProperties): Rename to ..
520 (global_properties): .. this.
521 (currentlyBuildingProjectsStack): New. Used to correctly
522 log and raise project/build start/finish events.
523 (BuildProjectFile): Override any project global properties
524 with explicitly specified ones, here in the param @globalProperties.
525 Mark project for reevaluation, which will update the engine's
526 global properties also.
527 Reset both engine and project's old global properties at the end.
528 (UnregisterAllLoggers): Log build finished only if we are currently
530 (StartBuild): Rename to ..
531 (StartProjectBuild): .. this. Keeps track of the projects being built
532 in the new stack, and logs project and build events accordingly.
533 (EndProjectBuild): New. Uses the stack to keep track of projects
534 finishing builds, and raises project and build events accordingly.
535 (LogProjectStarted): Move here from Project.cs
536 (LogProjectFinished): Likewise.
538 * Project.cs (Build): Log start of project build.
539 Set current directory to the project file's dir, and reset at end.
540 (BuildInternal): Don't log here, its done in Build.
541 (BuildTarget): Already built targets are keyed by the set of global
542 properties that they were built with.
543 (GlobalPropertiesToString): New.
544 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
545 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
546 (Evaluate): Remove built targets only if we are currently building and
547 build settings are None.
548 Merge project's global properties with those of the parent engine.
549 Add missing properties from engine's global properties.
550 (LogTargetSkipped): Fix format string, add the reqd argument.
552 2009-05-29 Ankit Jain <jankit@novell.com>
554 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
555 (HasTrailingSlash): New.
557 2009-05-12 Ankit Jain <jankit@novell.com>
559 * Project.cs (.ctor): Init timeOfLastDirty.
561 2009-05-05 Miguel de Icaza <miguel@novell.com>
563 * Contribution from Martin Brenn to fix #498154.
565 2009-04-27 Ankit Jain <jankit@novell.com>
568 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
569 one passed as argument.
571 2009-04-27 Ankit Jain <jankit@novell.com>
573 * TaskEngine.cs (Prepare): Emit a useful error message property value
574 can't be converted to required type.
576 2009-04-27 Ankit Jain <jankit@novell.com>
578 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
579 as valid true values for bool, and corresponding for false.
581 2009-03-27 Jonathan Chambers <joncham@gmail.com>
583 * BuildWhen.cs: Add basic implementation.
584 * BuildChoose.cs: Add basic implementation.
585 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
586 EvaluatedItemsIgnoringCondition.
587 * GroupingCollection.cs: Add evaluation of BuildChoose items.
589 2009-03-26 Jonathan Chambers <joncham@gmail.com>
591 * TaskDatabase.cs (RegisterTask): Search for class by name
592 if task was not found using GetType (which uses namespace).
594 2009-02-26 Ankit Jain <jankit@novell.com>
596 * Target.cs: Handle target with no tasks. Log errors.
598 2009-02-24 Ankit Jain <jankit@novell.com>
600 Lazily load UsingTask tasks.
601 * UsingTask.cs (Evaluate): Register 'this' with task database,
602 but don't load it yet. Register only if condition evaluates to true.
603 Move the load logic to ..
604 (Load): .. here. Register with the specified task database.
605 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
606 in a table keyed by task name, but don't load it yet.
607 (GetTypeFromClassName): Try to load UsingTask if task is not already
608 loaded. Move loading logic to ..
609 (GetTypeFromClassNameInternal): .. here.
610 (CopyTasks): Copy the usingTasks table also.
612 2009-02-23 Ankit Jain <jankit@novell.com>
614 * BuildItem.cs (AddMetadata): Allow overwriting older values.
616 2009-02-22 Ankit Jain <jankit@novell.com>
618 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
619 instead of XmlElement. Eg. XmlComment
621 2009-02-21 Ankit Jain <jankit@novell.com>
623 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
624 * Project.cs (Load): Use FromMSBuildPath on the path.
625 (InitializeProperties): Set "MSBuildToolsPath" also.
627 2009-02-20 Ankit Jain <jankit@novell.com>
630 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
631 transforms) in conditions.
632 * ConditionParser.cs: Parse unquoted item, property references.
633 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
634 * Token.cs (Token.ToString): Override.
635 (TokenType.Transform): Uncomment.
637 2009-02-12 Jonathan Chambers <joncham@gmail.com>
639 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
640 no XmlElement.InnerText. This allows properties to be additional
643 2009-02-01 Ankit Jain <jankit@novell.com>
645 * BuildEngine.cs (BuildProjectFile): Use
646 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
647 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
648 built. Move logging of project start/finish to ..
649 * Project.cs: .. here. Build a target only if hasn't been built already.
650 Keep track of target outputs, and return those even if an already built
651 target has been invoked again.
652 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
654 2009-01-31 Ankit Jain <jankit@novell.com>
656 * BatchingImpl.cs: Split into ..
657 * BatchingImplBase.cs: .. this,
658 * TaskBatchingImpl.cs: .. this ..
659 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
661 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
662 (Log*): Move to TargetBatchingImpl .
666 2009-01-30 Ankit Jain <jankit@novell.com>
668 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
671 2009-01-29 Ankit Jain <jankit@novell.com>
673 * BuildItem.cs (child_items): Change type from BuildItemGroup to
675 (HasParent): Rename to ..
676 (HasParentItem): .. this.
677 (ParentItemGroup): Add setter.
679 * BuildItemGroup.cs (.ctor): Add overload with @project param.
681 (AddItem): Correctly set the ParentItemGroup for new build items.
682 (ParentProject): Add setter.
683 * Project.cs: Set the project for new BuildItemGroup instances.
684 * TaskEngine.cs (PublishItemGroup): Likewise.
686 2009-01-06 Ankit Jain <jankit@novell.com>
688 * Project.cs (Build): Honor InitialTargets list.
690 2009-01-06 Ankit Jain <jankit@novell.com>
692 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
693 the property type also.
694 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
697 2009-01-06 Ankit Jain <jankit@novell.com>
699 * Project.cs (Build): Correctly handle null targetNames argument.
701 2009-01-06 Ankit Jain <jankit@novell.com>
703 * Engine.cs (LogProjectStarted): Add a null check.
705 2009-01-01 Ankit Jain <jankit@novell.com>
707 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
708 * ChangeType (ToBuildItemGroup): Add 'split' param.
710 * Expression.cs (Parse): Add a new overload with a 'split' param.
711 * ExpressionCollection.cs (Add): Add new overload for IReference,
712 remove the ones for Item/Metadata/PropertyReference.
713 (ConvertToArray): Implement correctly.
714 (ConvertToString): Track api changes.
715 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
716 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
717 (AddItemsToArray): New.
718 (ConvertToITaskItemArrayFromString): Refactor a bit.
719 (ThrowCantConcatError): New.
720 * ItemReference.cs: Update.
721 * MetadataReference.cs: Update.
722 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
724 * BuildPropertyGroup.cs: Track api changes.
725 * TaskEngine.cs (PublishOutput): Improve exception message.
726 * Project.cs (DoLoad): Improve exception message. Add a null check.
728 2008-12-30 Ankit Jain <jankit@novell.com>
730 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
731 metadata values for unqualified references.
732 (BuildItemGroupToITaskItemArray): Rename to ..
733 (BuildItemGroupToITaskItems): .. this.
736 2008-12-18 Ankit Jain <jankit@novell.com>
738 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
740 2008-12-17 Ankit Jain <jankit@novell.com>
742 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
743 only one instance of unique metadata value is required.
745 2008-11-22 Ankit Jain <jankit@novell.com>
747 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
749 * MetadataReference.cs (ConvertToITaskItemArray): New.
750 * Project.cs (GetAllItemGroups): New.
752 2008-11-21 Ankit Jain <jankit@novell.com>
754 * BatchingImpl.cs: Add task batching implementation.
755 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
756 * ExpressionCollection.cs (Count): New.
757 (ConvertToString): Handle MetadataReference.
758 * ItemReference.cs (ConvertToString):
759 (ConvertToITaskItemArray): Use the batching api.
761 * MetadataReference.cs (ConvertToString): New.
763 * Project.cs: Add api for accessing batched items and metadata.
764 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
767 2008-10-01 Ankit Jain <jankit@novell.com>
769 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
770 (BuildProjectFile): If filename is null (project.LoadXml) then use
772 * BuildTask.cs (InitializeTask): Track api change.
773 * Expression.cs (Parse): Skip empty entries in the expression.
775 2008-09-24 Ankit Jain <jankit@novell.com>
777 * Engine.cs: Add argument checks.
778 * Project.cs: Likewise.
780 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
782 * Project.cs (Build): Add outputs to targetOutputs.
784 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
786 * ExpressionCollection.cs (ConvertToArray): Simplify.
788 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
790 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
791 simplified. It still needs tests and refactoring.
793 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
795 * BuildEngine.cs (BuildProjectFile): Don't crash on null
798 * Target.cs: Add Outputs property.
800 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
802 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
803 (). Support condition.
805 * BatchingImpl.cs (BatchBuildTask): Simplify.
807 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
809 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
812 * ConditionFunctionExpression.cs: Removed warnings.
814 * BuildTask.cs (Execute): Write exceptions to std err (they should be
815 logged but it's better than swallowing).
817 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
819 * ConditionTokenizer.cs: Add Putback ().
821 * ConditionParser.cs: Add parsing of functions.
823 * ConditionFunctionExpression.cs: Add.
825 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
827 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
828 set property in persisted property group.
830 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
832 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
835 * ConsoleLogger.cs (TargetFinishedHandler)
836 (TaskFinishedHandler): Increment error count.
838 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
840 * BuildItem.cs (RemoveMetadata): Remove from XML.
841 (SetMetadata): Trigger project reevaluation.
843 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
845 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
848 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
850 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
851 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
852 BatchingImpl.cs, BuildProperty.cs: Track API changes.
854 * Expression.cs (Parse): Added allowItems parameter and made regexes
857 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
858 will try to import a.ext when given a.EXT.
860 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
862 * BuildItemGroup.cs: Store information saying what is the last item
863 group that contains build item name.
865 * Project.cs (Build): Pass empty array (build default targets).
867 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
869 * Token.cs: Commented Transform and LiteralSubExpression and added
872 * ConditionParser.cs: Removed redundant casts, rewrote
873 ParseFactorExpression () and added parsing of '!'.
875 * ConditionTokenizer.cs: Always skip whitespaces when getting next
876 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
877 Moved ReadChar () in front of all ifs.
879 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
881 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
882 from XML. (not to escape items that have parents twice).
884 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
886 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
887 (Project): Renamed to ParentProject.
889 * BuildItem.cs (ctor)
890 (CopyCustomMetadata): Add null check.
892 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
893 (RemoveProperty): Added null check.
895 * TargetCollection.cs (RemoveTarget): Added null check.
897 * Engine.cs (UnloadProject): Added null check.
899 * GroupingCollection.cs (Remove): Check if removed group belongs to
902 * Project.cs (AddNewItem): Implemented.
903 (RemoveItem): Reorganized.
904 (SetProjectExtensions): Added null check.
906 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
908 * BuildItemGroup.cs (Detach): Added.
910 (RemoveItemAt): Used Detach ().
912 * BuildItem.cs: Made FromXml and HasParent internal and added
913 ParentItem and ParentItemGroup properties (internal).
916 * GroupingCollection.cs (Remove): Used Detach ().
918 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
920 (GetEvaluatedItemsByNameIgnoringCondition)
921 (GetEvaluatedItemsByName)
922 (GetEvaluatedProperty): Reevaluate if needed.
924 (RemoveAllItemGroups)
925 (RemoveAllPropertyGroups): Implemented.
926 (DoLoad): Added closing of TextReader.
928 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
930 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
931 change but just mark that it needs it.
933 * Project.cs: Reevaluate when it needs reevaluation and one of
934 Evaluated* properties is used.
936 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
938 * Target.cs: Throw an exception when <OnError> is not last element in
941 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
943 * TargetCollection.cs: If a target is already there replace it with
946 * BuildProperty.cs: Added XmlElement property.
948 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
950 * ImportCollection.cs: Don't add imports that are already added.
952 * BuildItemGroup.cs: MonoTODOs.
954 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
955 condition can't be evaluated to bool.
957 * BuildPropertyGroup.cs (Evaluate): Simplify.
959 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
961 * BuildWhen.cs: Moved BindToXml () code to ctor.
963 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
964 property needed for removing groups.
966 * Engine.cs: Added StartBuild () that logs build start when Build ()
969 * GroupingCollection.cs: Added Remove () for item and property groups.
971 * Project.cs (AddNewImport): Implemented.
972 (AddNewItemGroup): Implemented.
973 (AddNewPropertyGroup): Implemented.
974 (AddNewUsingTaskFromAssemblyFile): Implemented.
975 (AddNewUsingTaskFromAssemblyName): Implemented.
976 (RemoveItemGroup): Implemented.
977 (RemovePropertyGroup): Implemented.
979 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
981 * BuildItemGroup.cs (Clear): Remove from XML.
983 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
984 to Project.EvaluatedProperties.
985 (Clear): Remove from XML.
987 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
989 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
992 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
994 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
995 Add () calls when processing a project from Import and
996 evaluate_iterator for evaluation.
998 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1000 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
1001 and prepend relative directory of importing project to full path of
1004 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1006 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1007 BuildItemGroupCollection.cs, Project.cs: Track API changes.
1009 * GroupingCollection.cs: Now it needs Project reference so added it.
1011 * BuildTask.cs: Formatting.
1013 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
1015 * ConditionParser.cs (ParseAndEvaluate): Added.
1017 * BuildItem.cs: Changed exception message.
1019 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1021 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1022 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
1023 GroupingCollection doesn't need Project reference.
1025 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
1027 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
1028 (Project.EvaluatedItems is a read only item group.)
1029 (ReplaceWith): Added.
1031 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
1032 global property group causes reevaluation of its project.
1034 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
1037 * OldExpression.cs: Removed.
1039 * BuildProperty.cs (Evaluate): Simplified.
1041 * ChangeType.cs (TemporaryTransform): Simplified.
1043 * BuildItem.cs: There are now 3 types of build items: from XML, having
1044 parent from XML, virtual. Added SplitParentItem ().
1046 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1048 * Utilities.cs: Added Unescape ().
1050 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
1051 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
1052 groups (at the moment just unescape).
1054 * Expression.cs (CopyToExpressionList): Unescape strings.
1056 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1058 * Target.cs (ctor): Added ImportedProject argument and removed
1060 (AddNewTask): Implemented.
1062 * TargetCollection.cs (AddNewTarget): Implemented.
1064 * Project.cs: Track API changes.
1066 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1068 * Target.cs (Build): Don't throw anything in case of error, just
1071 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
1074 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
1077 * BuildProperty.cs (ToString): Throw an exception if property is not
1079 (op_Explicit): Added a null check.
1081 * Engine.cs: Better error message.
1083 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
1084 IndexOutOfRangeException.
1086 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
1087 (MarkProjectAsDirty): Set time.
1089 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1091 * BuildItemGroup.cs (Clone): Throw exception.
1093 * Project.cs (Load): Throw InvalidProjectFileException if anything
1096 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1098 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
1099 and ConvertToITaskItemArray ().
1101 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1103 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
1104 classes that were public in Beta 2 and aren't used.
1106 * Expression.cs: Added replacement for parsing expressions char by
1107 char. It uses regexes to find item/property/metadata references in
1110 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1111 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1112 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1114 * ConditionRelationalExpression.cs: Formatting.
1116 * OldExpression.cs: Commented everything.
1118 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1119 parsing to Expression.
1121 * BuildItem.cs: Check if project is from XML in set_Condition and
1124 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1127 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1128 can evaluate expression in CanEvaluateToBool ().
1130 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1132 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1133 which item group is imported.
1135 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1137 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1139 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1140 BuildItemGroupCollection.cs: Little changes related to
1143 * ImportCollection.cs: Use GroupingCollection not an internal list.
1145 * Import.cs (Evaluate): Split to functions and check if
1146 EvaluatedProjectPath is empty.
1148 * GroupingCollection.cs, Project.cs: Move evaluation to
1149 GroupingCollection. Change algorithm to use 2 passes: first for property
1150 groups and imports and second for item groups.
1152 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1154 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1155 BuildItemGroup> not IDictionary.
1157 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1158 evaluated to false because we want to add every item to
1159 Project.EvaluatedItemsByNameIgnoringCondition.
1161 * Project.cs (Build): Don't throw an exception just return false.
1162 (GetEvaluatedProperty): Avoid NullReferenceException.
1163 (SetProjectExtensions): Implemented.
1165 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1167 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1169 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1170 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1171 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1173 * ImportCollection.cs: Added a note.
1175 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1177 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1179 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1180 (UsingTask[] array, int index)
1182 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1183 items to Project.EvaluatedItems in PublishItemGroup ();
1185 * BuildItemGroup.cs: Added [MonoTODO].
1187 * UsingTask.cs: Used expression for AssemblyFile to get around
1188 problems with '\' and '/'.
1190 * BuildItem.cs (ctor): Added null checks.
1191 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1192 (SetMetadata): Don't escape evaluatedMetadata and escape
1193 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1195 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1196 FromXml () instead of null checks.
1197 (SetProperty): Escape propertyValue when it is literal.
1199 * BuildProperty.cs: Changed exception message.
1201 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1203 (GetProjectExtensions): Implemented.
1205 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1207 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1208 GetParameterValue (), use expressions in ContinueOnError.
1209 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1210 instead of InvalidOperationException ().
1211 * ImportCollection.cs: Implement CopyTo ().
1212 * Target.cs: Remove redundant variables (XmlAttributes), return
1213 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1214 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1215 * Import.cs: Throw an exception when file does not exist.
1216 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1217 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1218 need to treat item as a token probably
1220 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1222 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1223 throw an exception).
1224 * BuildItemGroupCollection.cs: Changed exception types.
1226 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1228 * Engine.cs: Removed redundant cast.
1230 * UsingTaskCollection.cs:
1234 * TargetCollection.cs: Comment unused variable.
1235 * ConditionTokenizer.cs: Simplified checking if current token is a
1237 * Target.cs: Removed old code.
1239 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1241 * Target.cs: Changed "" to String.Empty.
1242 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1243 string was evaluated to String.Empty.
1244 * InternalLoggerException.cs:
1245 * InvalidProjectFileException.cs: Added LinkDemand before
1247 * ConsoleLogger.cs: Changed "" to String.Empty.
1248 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1249 with change to generics).
1250 * Project.cs: Made Build () throw more meaningful exception.
1252 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1254 * Target.cs: Reformatted.
1255 * TaskEngine.cs: Removed redundant code.
1256 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1257 * Engine.cs: Made BuildProjectFile () load project file if it's not
1260 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1262 * ConditionRelationalExpression.cs: Change comparers to case
1264 * ImportCollection.cs: Add NotImplementedExceptions.
1265 * BuildPropertyGroup.cs: Reformatted a bit.
1266 * BuildProperty.cs: The same.
1267 * Project.cs: Moved evaluation of imports before evaluation of
1268 properties. This may "work" until importing projects is redesigned but
1269 probably isn't correct.
1271 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1273 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1275 * BuildItemGroup.cs: Change return to continue.
1277 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1279 * ConditionParser.cs: Copyright note.
1280 * ExpressionCollection.cs: Fixed arrays passing.
1282 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1284 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1285 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1286 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1287 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1289 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1291 * Token.cs: Changed names: removed "than".
1292 * ConditionRelationalExpression.cs: Added.
1293 * ConditionFactorExpression.cs: Added.
1294 * BuildItemGroup.cs: Changed Condition property return value to return
1295 String.Empty instead of null.
1296 * ConditionParser.cs: Added support for parsing relational expressions
1298 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1299 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1300 and CanEvaluateToBool (), CanEvaluateToNumber () and
1301 CanEvaluateToString ().
1302 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1303 appropriately to ConditionExpression base class.
1304 * ConditionTokenizer.cs: Added null check and changed names in enums:
1306 * ConditionNotExpression.cs: Added.
1307 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1308 * Project.cs: Added checks for condition.
1310 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1312 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1313 ConditionalParser.cs: Changed name,
1315 * ConditionExpression.cs: Added Evaluate ().
1316 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1317 * BatchingImpl.cs: Added check if task should be executed.
1319 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1321 * UsingTask.cs: Changed properties to return null on empty attribute.
1322 * UsingTaskCollection.cs: Added object to SyncRoot.
1323 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1325 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1327 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1328 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1330 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1332 * Utilities.cs: Implemented Escape ().
1333 * BuildItem.cs: Added null checks.
1334 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1335 * Project.cs: Commented out redundant Evaluate ().
1336 * BuildChoose.cs: Minor changes.
1338 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1340 * Token: Added new few missing tokens.
1341 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1342 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1343 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1344 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1345 LiteralTokenizer.cs:
1346 Removed literal expression parsing based on tokenizer and
1347 parser. It needs to be done by regex.
1349 Moved tokenizer to ConditionalTokenizer.cs.
1351 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1353 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1354 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1355 methods converting reference to string from ToString () to
1356 ConvertToString () to avoid mistakes like using ToString () provided
1359 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1361 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1362 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1363 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1364 OldExpression and changed To* functions to one ConvertTo ().
1365 * TaskEngine.cs: Fixed PublishOutput ().
1366 * OldExpression.cs: Added. It will be temporarily used before
1367 LiteralExpression will be written using Tokenizer.
1368 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1369 ExpressionParseException.cs, LiteralExpression.cs: Added.
1371 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1373 * ImportedProject.cs: Removed warning.
1374 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1377 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1379 * Project.cs: Removed unnecessary variable.
1380 * Engine.cs: Added fixme.
1382 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1384 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1385 class (Mono.XBuild.Utilities.ReservedNameUtils).
1387 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1389 * BuildTask.cs: Removed unnecessary variable.
1390 * Engine.cs: Added logging of the build start.
1391 * Project.cs: Removed unnecessary variable.
1393 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1395 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1397 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1399 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1401 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1403 * BuildItem.cs: Fix typo?
1405 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1407 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1408 Engine.cs, Project.cs: Coding style fixes.
1410 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1412 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1414 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1416 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1417 to pass tests. Wrote serialization constructor.
1418 * Engine.cs, Project.cs: Global engine and project unloading, test and
1421 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1423 * UsingTask.cs: Formatting changes.
1425 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1427 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1428 to lists instead of hashtables.
1429 * Import.cs: Cleaned up, moved importing from Project.cs
1430 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1431 * Engine.cs: Cleaned up properties.
1432 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1433 Separated evaluation and loading.
1435 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1437 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1438 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1439 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1440 binding and evaluation, merge xml binding in constructors.
1441 * DirectoryScanner.cs: Includes CAN be empty.
1442 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1443 * ConsoleLogger.cs: Fix compilation warning.
1445 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1447 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1449 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1451 * Engine.cs: API cleanup.
1453 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1455 * Project.cs: Cleaned up add.
1456 * Expression.cs: Hacked to transform \ and / to path separators.
1457 * BuildPropertyGroup.cs: Small cleanup.
1458 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1461 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1463 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1464 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1466 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1467 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1468 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1470 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1471 * TaskElement.cs: Temporarily removed.
1472 * Xml.cs: Changed to static.
1474 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1476 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1477 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1478 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1479 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1480 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1481 IBuildPropertyGroupCollection.cs: Removed.
1483 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1485 * BuildItem.cs: Removed IBuildItem references.
1486 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1487 IBuildItemGroup references. Changed Evaluate to internal.
1488 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1489 reference and hidden constructors.
1490 * BuildProperty.cs: Removed IBuildProperty reference.
1491 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1492 IBuildPropertyGroup references. Changed Evaluate to internal.
1493 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1494 reference and hidden constructors.
1495 * ConsoleLogger.cs: Updated names of event handlers.
1496 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1497 Escape. Added UnloadAllProjects () and UnloadProject ().
1498 * FileLogger.cs: Removed ApplyParameter ().
1499 * GroupingCollection.cs: Hidden.
1500 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1501 * ItemPropertyGroupingBase.cs: Commented.
1502 * ProcessingPass.cs: Hidden.
1503 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1505 * Target.cs: Removed ITarget reference.
1506 * TargetCollection.cs: Removed ITargetCollection reference.
1507 * TaskElement.cs: Removed ITaskElement reference.
1508 * TaskEngineAssemblyResolver.cs: Hidden.
1509 * Utilities.cs: Made static class, removed CheckPath (),
1510 ValidateCulture (), GetSupportedCultures () and added Escape ().
1512 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1514 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1517 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1519 * Project.cs: Added MonoTODO attributes.
1520 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1521 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1522 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1523 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1524 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1525 BuildItemGroup.cs, InvalidProjectFileException.cs,
1526 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1527 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1528 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1529 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1530 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1531 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1532 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1533 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1534 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1535 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1536 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1537 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1539 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1541 * TaskDatabase.cs: Change Shared to Framework.
1542 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1543 CaseInsensitiveHashCodeProvider
1545 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1547 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1548 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1551 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1553 * InternalLoggerException.cs: Changed protected fields to private.
1555 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1557 * Engine.cs: Added check for globalProperties.
1558 * Project.cs: Added using path from importedProject.FullFileName when
1559 adding UsingTask elements.
1561 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1563 * TaskElement.cs: Changed ReflectedType to PropertyType.
1564 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1567 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1569 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1571 * BuildProperty.cs: Organized PropertyType enum.
1572 * Engine.cs: Added setting CommandLine PropertyType of global
1575 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1577 * InvalidProjectFileException.cs: Changed Message property.
1578 * ChangeType.cs (TransformToString): Added separator between items.
1579 * TaskEngineAssemblyResolver.cs: Formatting.
1581 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1583 * DirectoryScanner.cs: Added.
1584 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1585 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1586 * Project.cs: Removed Evalute* ().
1588 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1590 * Target.cs: Formatting.
1591 * Expression.cs: Added check if array == null.
1592 * BuildItem.cs: Removed 'break' to remove warnings.
1593 * ConsoleLogger.cs: Formatting.
1594 * Engine.cs: Added handling of default target(s).
1595 * Project.cs: Added handling of default target(s).
1597 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1599 * TaskElement.cs: Added check for parameters.
1600 * Target.cs: Added logging of target skipping.
1601 * Expression.cs: Changed returning object[] to string[], bool[]... in
1603 * ItemReference.cs: Fixed for item references without custom
1605 * BatchingImpl.cs: Added real inputs/outputs checking.
1606 * Engine.cs: Moved global properties setting.
1607 * Project.cs: Moved global properties setting.
1609 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1611 * Target.cs: Added checks for target existence.
1612 * BuildItemGroup.cs: Changed to use transforms.
1613 * MetadataReference.cs: Wrote real implementation.
1614 * ItemReference.cs: Rewritten to use transforms.
1615 * BuildItem.cs: Changes for transforms and metadata.
1616 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1618 * Project.cs: Fixed project importing.
1619 * ImportedProject.cs: Changed to throw exceptions instead of returning
1622 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1624 * Engine.cs: Removed FIXME.
1625 * Project.cs: Splitted ProcessElements and added project importing.
1626 * ImportedProject.cs: Rewritten.
1628 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1630 * TaskElement.cs: Added getting of objects of every type.
1631 * BuildItemGroup.cs: Added ToITaskItemArray ().
1632 * Expression.cs: Implemented part that is not using metadata.
1633 * ItemReference.cs: Implemented parsing item references. Need to fix
1635 * BuildItem.cs: Fixed ToITaskItem ().
1636 * PropertyReference.cs: Implemented parsing property references. This
1637 also needs validity checking.
1639 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1641 * TaskElement.cs: Added Output element handling.
1642 * Target.cs: Cleaned up.
1643 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1644 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1645 ItemReference.cs, ChangeType.cs: Added.
1646 * BuildItem.cs: Added creating BuildItem from TaskItem.
1647 * BuildPropertyGroup.cs: Small changes.
1648 * BatchingImpl.cs: Fixed to return real task execution result.
1649 * BuildProperty.cs: Fixed FinalValue property.
1650 * Engine.cs: Reformatted logging.
1651 * Project.cs: Added check to EvaluateProperty.
1653 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1655 * TaskElement.cs: Added part of execution engine.
1656 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1657 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1658 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1659 * BuildItem.cs: Added handling of built-in metadata and referencing
1660 Items by name not FullName.
1661 * BatchingImpl.cs: Added temporary task "batching".
1662 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1663 * Project.cs: Added Evaluate. It will be moved to separate class.
1665 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1667 * EventSource.cs, Engine.cs: Added CriticalEvents.
1668 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1669 Project.cs: Added some support for items.
1670 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1672 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1674 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1677 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1679 * BatchingImpl.cs: Added.
1680 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1681 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1682 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1683 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1684 GroupingCollection.cs: Updated.
1686 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1688 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1689 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1690 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1691 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1692 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1693 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1694 InternalLoggerException.cs, InvalidProjectFileException.cs,
1695 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1696 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1697 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1698 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1699 Initial check-in of implementations.
1701 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1703 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1704 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1705 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1706 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1707 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1708 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1709 Initial check-in of interfaces and a syntax file, real classes are
1710 changing a lot so I'll wait a moment with checking them in.