1 2010-04-03 Ankit Jain <jankit@novell.com>
3 * BuildEngine.cs: Implement IBuildEngine2 instead of
5 * BuildTasks.cs: Use the new extension methods for logging.
6 (InitializeTask): Emit a message informing about the assembly
7 from which the task is being loaded. Emit a useful debug message
8 incase of a InvalidCastException.
9 * Engine.cs: Add missing methods, constructors and properties related
10 to ToolsVersion support. Setup a default set of Toolsets.
11 Keep separate taskdbs' per ToolsVersion. The common tasks
12 would come from different *.tasks file, and use different
14 (DefaultToolsVersion): Correctly set this based on the profile.
15 * LogExtensions.cs: New. Extension methods on Engine, for logging.
16 * Project.cs: Add missing methods/contructors/properties related
17 to ToolsVersion support. Add reserved properties -
18 MSBuildToolsPath and MSBuildToolsVersion .
20 * ToolsetCollection.cs: New.
21 * ToolsetDefinitionLocations.cs: New.
23 2010-03-04 Ankit Jain <jankit@novell.com>
25 * BuildEngine.cs (LogErrorEvent): Log as warning, if
26 ContinueOnError==true, and log a corresponding message.
27 * TargetBatchingImpl.cs: Refactor to share code between the
28 batched and unbatched case. If a task fails and
29 ContinueOnError==true, then ignore the failed state.
31 2010-02-19 Ankit Jain <jankit@novell.com>
33 * BuildItem.cs: Track api changes.
34 (SetMetadata): Allow RecursiveDir to be set, this is set by
36 * DirectoryScanner.cs (ProcessInclude): Set RecursiveDir metadata.
38 2010-02-19 Ankit Jain <jankit@novell.com>
40 * Import.cs (Evaluate): Add param @ignoreMissingImports.
41 * Project.cs (Load*): Add overloads with param @projectLoadSettings.
42 (Log*): Mark internal.
43 * ProjectLoadSettings.cs: New.
45 2010-02-04 Ankit Jain <jankit@novell.com>
48 * ConditionFunctionExpression.cs (Exists): Check for directory also.
50 2009-12-22 Ankit Jain <jankit@novell.com>
53 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
54 * BuildItem.cs: Track api changes.
56 2009-12-02 Ankit Jain <jankit@novell.com>
59 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
60 being iterated over. Patch by Laurent Etiemble
61 <laurent.etiemble@gmail.com>
63 2009-11-28 Ankit Jain <jankit@novell.com>
66 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
67 * Project.cs (Batch): New. Contains the perBatchItems and the
68 commonItems for the batch.
69 Use a stack of batches, instead of directly setting the current
73 (SetBatchedItems): Make this private.
74 (GlobalProperties.set): Re-evaluating the project is not required
76 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
78 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
80 * Target.cs (Build): Reset the current batch to nil before evaluating
81 and building this target.
83 2009-11-28 Ankit Jain <jankit@novell.com>
85 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
86 available in either perBatchItemsByName or commonItemsByName
87 or the evaluatedItemsByName collection. Allows the use of
88 items which are not batched, but are consumed in case of batching.
90 2009-11-26 Ankit Jain <jankit@novell.com>
92 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
93 refs also, for Inputs and Outputs.
95 2009-10-13 Ankit Jain <jankit@novell.com>
97 * DirectoryScanner.cs:
98 * ExpressionCollection.cs:
99 * GroupingCollection.cs:
101 * Target.cs: Fix warnings.
103 2009-10-12 Ankit Jain <jankit@novell.com>
105 * Target.cs (TargetFile): New. Gives the name of the file
106 containing the target definition.
107 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
108 return this for ProjectFileOfTaskNode.
109 * BuildTask.cs (LogTaskStarted):
110 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
112 (InitializeTask): Set BuildEngine's task file to parent target's
114 * Engine.cs (LogProjectStarted): Incase of default targets, set
115 TargetNames to String.Empty .
116 * TargetBatchingImpl.cs (LogTargetStarted):
117 (LogTargetFinished): Use target.TargetFile for the event.
119 * ConsoleLogger.cs: Keep a stack of project/target/task being
120 executed. And corresponding list of errors and warnings.
121 (EventsToString): Stringifies the current "stack", to be used
122 as key to the table of errors/warnings and for show messages
123 at the end of the build.
125 2009-10-12 Ankit Jain <jankit@novell.com>
127 * Project.cs (Load): Add argument checks.
129 2009-10-11 Ankit Jain <jankit@novell.com>
131 * ConsoleLogger.cs (no_colors): Rename to ..
132 (use_colors): .. this. Fix the case when XBUILD_COLORS
135 2009-10-11 Ankit Jain <jankit@novell.com>
137 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
138 Support 'XBUILD_COLORS' to set colors for errors, warnings,
141 2009-10-10 Ankit Jain <jankit@novell.com>
143 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
144 becomes true, don't reset it. We are looking for "atleast one
147 2009-10-08 Ankit Jain <jankit@novell.com>
149 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
150 directly using DirectoryInfo ("z:"), that doesn't return
153 2009-10-08 Ankit Jain <jankit@novell.com>
155 * DirectoryScanner.cs: Handle absolute paths. Fix to work
156 correctly on windows. Change order of adding paths to match
157 msbuild, useful to have.
159 2009-10-08 Ankit Jain <jankit@novell.com>
161 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
162 of the 'Output' element also.
163 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
165 2009-10-07 Ankit Jain <jankit@novell.com>
167 * ConsoleLogger.cs: Mark build as failed, if any project failed.
169 2009-10-06 Ankit Jain <jankit@novell.com>
171 * ConsoleLogger: Improve error reporting. Don't count failed task,
172 target or project as another error. Show "errors" after "warnings",
173 more useful to the user.
174 * Project.cs (BuildTarget): Log error instead of using CWL.
176 2009-10-03 Ankit Jain <jankit@novell.com>
178 * Project.cs (OS): New.
179 (InitializeProperties): Set 'OS' as a pre-defined property, set to
180 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
182 2009-10-02 Ankit Jain <jankit@novell.com>
184 * Expression.cs (Parse): Don't change '/' to '\\', not required.
186 2009-10-01 Ankit Jain <jankit@novell.com>
188 * Project.cs (AddImport): Show the correct source file name, when
189 the import is in the main project file.
191 2009-10-01 Ankit Jain <jankit@novell.com>
194 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
195 the full path of the imported project here itself, instead of ..
197 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
199 * Project.cs (AddImport): Don't process if condition is false.
200 Warn if a circular reference is detected, and ignore the import.
202 2009-09-29 Ankit Jain <jankit@novell.com>
204 * GroupingCollection.cs (Evaluate): Mark internal.
205 * Project.cs (AddImport): Only evaluate the properties,
206 till before the import.
208 2009-09-29 Ankit Jain <jankit@novell.com>
210 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
211 the project xml, as returned Xml*Reader normalizes the newlines.
212 Instead directly use the TextReader with XmlDocument.Load ().
214 2009-09-27 Ankit Jain <jankit@novell.com>
216 * ConditionParser.cs: Show the condition being parsed in the
219 2009-09-26 Ankit Jain <jankit@novell.com>
221 * Expression.cs: Allow '-' in item, property and metadata names.
223 2009-09-26 Ankit Jain <jankit@novell.com>
225 * Project.cs (Evaluate): Split into this and ..
226 (PrepareForEvaluate): .. this.
227 (AddImport): Evaluate the current set of properties/items etc,
228 before processing the imported project. Honor the Condition
230 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
232 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
233 * BuildItemGroup.cs (Evaluate): Evaluate only once.
234 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
236 2009-09-26 Ankit Jain <jankit@novell.com>
238 * Project.cs: Get InitialTargets from the imported projects also.
239 The combined list of targets are executed, in the order they were
241 DefaultTargets are also read in from imported projects, and the first
242 non-empty DefaultTargets found is used.
244 2009-09-25 Ankit Jain <jankit@novell.com>
246 * Project.cs (BuildTarget): Handle skipped targets.
248 2009-09-25 Ankit Jain <jankit@novell.com>
250 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
251 InvalidProjectFileException with useful error.
253 2009-09-24 Ankit Jain <jankit@novell.com>
255 * Project.cs (Load): Emit the .sln.proj file only if env var
256 XBUILD_EMIT_SOLUTION is set.
258 2009-09-24 Ankit Jain <jankit@novell.com>
260 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
262 2009-09-24 Ankit Jain <jankit@novell.com>
264 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
267 2009-09-10 Ankit Jain <jankit@novell.com>
269 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
270 preserved, so use ConvertTo ITaskItem, rather than string.
271 Ensure that the new items have the metadata from references _in_
272 Include, and the metadata of _this_ builditem.
273 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
274 (MatchedFilenames): Rename to ..
275 (MatchedItems): .. this, and change type of array of ITaskItem.
276 Ensure that metadata of items in Includes are retained in the
279 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
280 param. If separator is present, then just return a "Join'ed"
281 string as the single task item.
282 * ItemReference.cs: Track api changes.
284 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
285 as we need separate task items.
287 2009-09-01 Ankit Jain <jankit@novell.com>
290 * Project.cs (BuildTarget): Move caching of target outputs to ..
291 * Target.cs: .. here. Move LogTargetSkipped also here.
292 Ensure that caching happens for target dependencies also.
294 2009-09-01 Ankit Jain <jankit@novell.com>
296 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
299 2009-09-01 Ankit Jain <jankit@novell.com>
301 * Expression.cs (ParseOptions): New enum. Replace the bool params
302 of exression.Parse with this. Add option to control expansion of
304 (CopyToExpressionCollection): Track api changes.
306 Update all expr.Parse calls to use the new enum.
307 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
308 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
310 * BatchingImplBase.cs: Track api changes. Allow metadata refs
312 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
313 * ItemReference.cs: Allow metadata in transforms.
314 * TaskEngine.cs: Allow metadata refs.
316 * MetadataReference.cs (.ctor): Add a 'original string' param.
318 2009-08-29 Ankit Jain <jankit@novell.com>
320 * Expression.cs (ExpressionOptions): New.
322 Introduce a ExpressionOptions argument to all ConvertTo*
323 methods. Implement the rule: in evaluation phase, expand
324 all items completely, but dont expand item refs in properties.
325 At other times, expand the item refs in the properties.
326 See comments in Expression.cs, for a full explanation.
327 * BuildItem.cs: Track api changes.
328 * BuildItemGroup.cs: Likewise.
329 * BuildProperty.cs: Track api changes. Handle self-references.
330 * BuildTask.cs: Track api changes.
331 * IReference.cs: Add ExpressionOptions param.
332 * ItemReference.cs: Track api changes.
333 * PropertyReference.cs: Likewise.
334 * MetadataReference.cs: Likewise.
335 * ExpressionCollection.cs: Track api changes. Add support for
336 converting all primitive types and DateTime, instead of a fixed
338 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
339 * TaskBatchingImpl.cs: Handle the case when batching is required,
340 but no items are available.
342 * TaskEngine.cs: Throw on unsupported types. Correctly handle
343 properties in case of empty values.
345 2009-08-26 Ankit Jain <jankit@novell.com>
347 * Expression.cs: Correctly handle a item reference with transform
348 when allowItems is false. If item ref is ignored, then the transform
349 will get incorrectly matched as a metadata ref.
350 * ItemReference.cs (.ctor): Add a @original_string param.
352 2009-08-26 Ankit Jain <jankit@novell.com>
354 * Utilities.cs (UnescapeFromXml): New. From md.
355 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
356 of the property element.
358 2009-08-26 Ankit Jain <jankit@novell.com>
360 * BuildProperty.cs (ConvertToString): New.
361 (ConvertoToITaskItemArray): New. Parse the property value.
362 * PropertyReference.cs (ConvertToString): Use BuildProperty's
364 (ConvertoToITaskItemArray): Likewise.
366 2009-08-21 Ankit Jain <jankit@novell.com>
368 * Engine.cs (EndProjectBuild): Use the @succeeded argument
369 instead of hardcoding 'true'.
370 * Target.cs (Build): Add an overload to return executeOnErrors
371 value for the target executed. If building dependencies fails,
372 and executeOnErrors is true, then execute OnError tasks.
373 Add the new param to ..
374 (BuildDependencies): this, ..
376 (GetDependencies): Improve error message and variable name.
377 (ExecuteOnErrors): Honor OnError tag's Condition also.
378 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
380 2009-08-20 Ankit Jain <jankit@novell.com>
383 * Project.cs (Load): Add support for loading .sln files.
385 2009-08-20 Ankit Jain <jankit@novell.com>
387 * BuildTask.cs (Execute): Use task_logger only after the task
388 has been initialized. Catch and report task loading errors.
389 * Target.cs (DoBuild): Dont rethrow the exception, and emit
390 the stacktrace as a low importance message.
392 2009-08-18 Ankit Jain <jankit@novell.com>
394 * BatchingImplBase.cs: Make the item name lookups and metadata be case
396 * TaskDatabase.cs: Likewise.
397 * TaskEngine.cs: Make property name looks, case insensitive.
399 2009-08-09 Miguel de Icaza <miguel@novell.com>
401 * ConsoleLogger.cs: Change the format of the error and warnings
402 strings to work when invoked inside Emacs by not rendering the
403 column if available, by using lowercase "error"/"warning" strings
404 instead of camelcased versions and to not have unnecessary padding.
406 2009-07-31 Ankit Jain <jankit@novell.com>
408 * ConsoleLogger.cs: Keep track of all the errors and warnings
409 and show them at the end.
411 2009-07-31 Ankit Jain <jankit@novell.com>
413 * Target.cs (Build): Log a message if a target is skipped.
415 * BuildTask.cs (Execute): Log error if task execution fails.
417 2009-07-30 Ankit Jain <jankit@novell.com>
419 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
420 v2.0, this will change when multi-targeting lands.
422 2009-07-30 Ankit Jain <jankit@novell.com>
424 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
425 'MSBuildProjectName' properties.
427 2009-07-28 Ankit Jain <jankit@novell.com>
429 * TaskEngine.cs (Prepare): Fix formatting mistake.
430 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
431 fails. Also, emit result of project at Normal verbosity level.
433 2009-07-23 Ankit Jain <jankit@novell.com>
436 * Project.cs (ExtensionsPath): New.
437 (InitializeProperties): Set "MSBuildExtensionsPath" property.
439 2009-06-12 Ankit Jain <jankit@novell.com>
442 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
443 itemref is allowed if the prev/next element is ";".
445 2009-06-12 Ankit Jain <jankit@novell.com>
447 * Utilities.cs (FromMSBuildPath): Return null if the path contains
448 "drive:" only on windows.
450 2009-06-07 Ankit Jain <jankit@novell.com>
452 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
455 2009-05-29 Ankit Jain <jankit@novell.com>
457 Correctly handle global properties. Correctly log
458 project/build events.
460 * BuildPropertyGroup.cs (Clone): Implement.
461 * Engine.cs (globalProperties): Rename to ..
462 (global_properties): .. this.
463 (currentlyBuildingProjectsStack): New. Used to correctly
464 log and raise project/build start/finish events.
465 (BuildProjectFile): Override any project global properties
466 with explicitly specified ones, here in the param @globalProperties.
467 Mark project for reevaluation, which will update the engine's
468 global properties also.
469 Reset both engine and project's old global properties at the end.
470 (UnregisterAllLoggers): Log build finished only if we are currently
472 (StartBuild): Rename to ..
473 (StartProjectBuild): .. this. Keeps track of the projects being built
474 in the new stack, and logs project and build events accordingly.
475 (EndProjectBuild): New. Uses the stack to keep track of projects
476 finishing builds, and raises project and build events accordingly.
477 (LogProjectStarted): Move here from Project.cs
478 (LogProjectFinished): Likewise.
480 * Project.cs (Build): Log start of project build.
481 Set current directory to the project file's dir, and reset at end.
482 (BuildInternal): Don't log here, its done in Build.
483 (BuildTarget): Already built targets are keyed by the set of global
484 properties that they were built with.
485 (GlobalPropertiesToString): New.
486 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
487 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
488 (Evaluate): Remove built targets only if we are currently building and
489 build settings are None.
490 Merge project's global properties with those of the parent engine.
491 Add missing properties from engine's global properties.
492 (LogTargetSkipped): Fix format string, add the reqd argument.
494 2009-05-29 Ankit Jain <jankit@novell.com>
496 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
497 (HasTrailingSlash): New.
499 2009-05-12 Ankit Jain <jankit@novell.com>
501 * Project.cs (.ctor): Init timeOfLastDirty.
503 2009-05-05 Miguel de Icaza <miguel@novell.com>
505 * Contribution from Martin Brenn to fix #498154.
507 2009-04-27 Ankit Jain <jankit@novell.com>
510 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
511 one passed as argument.
513 2009-04-27 Ankit Jain <jankit@novell.com>
515 * TaskEngine.cs (Prepare): Emit a useful error message property value
516 can't be converted to required type.
518 2009-04-27 Ankit Jain <jankit@novell.com>
520 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
521 as valid true values for bool, and corresponding for false.
523 2009-03-27 Jonathan Chambers <joncham@gmail.com>
525 * BuildWhen.cs: Add basic implementation.
526 * BuildChoose.cs: Add basic implementation.
527 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
528 EvaluatedItemsIgnoringCondition.
529 * GroupingCollection.cs: Add evaluation of BuildChoose items.
531 2009-03-26 Jonathan Chambers <joncham@gmail.com>
533 * TaskDatabase.cs (RegisterTask): Search for class by name
534 if task was not found using GetType (which uses namespace).
536 2009-02-26 Ankit Jain <jankit@novell.com>
538 * Target.cs: Handle target with no tasks. Log errors.
540 2009-02-24 Ankit Jain <jankit@novell.com>
542 Lazily load UsingTask tasks.
543 * UsingTask.cs (Evaluate): Register 'this' with task database,
544 but don't load it yet. Register only if condition evaluates to true.
545 Move the load logic to ..
546 (Load): .. here. Register with the specified task database.
547 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
548 in a table keyed by task name, but don't load it yet.
549 (GetTypeFromClassName): Try to load UsingTask if task is not already
550 loaded. Move loading logic to ..
551 (GetTypeFromClassNameInternal): .. here.
552 (CopyTasks): Copy the usingTasks table also.
554 2009-02-23 Ankit Jain <jankit@novell.com>
556 * BuildItem.cs (AddMetadata): Allow overwriting older values.
558 2009-02-22 Ankit Jain <jankit@novell.com>
560 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
561 instead of XmlElement. Eg. XmlComment
563 2009-02-21 Ankit Jain <jankit@novell.com>
565 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
566 * Project.cs (Load): Use FromMSBuildPath on the path.
567 (InitializeProperties): Set "MSBuildToolsPath" also.
569 2009-02-20 Ankit Jain <jankit@novell.com>
572 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
573 transforms) in conditions.
574 * ConditionParser.cs: Parse unquoted item, property references.
575 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
576 * Token.cs (Token.ToString): Override.
577 (TokenType.Transform): Uncomment.
579 2009-02-12 Jonathan Chambers <joncham@gmail.com>
581 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
582 no XmlElement.InnerText. This allows properties to be additional
585 2009-02-01 Ankit Jain <jankit@novell.com>
587 * BuildEngine.cs (BuildProjectFile): Use
588 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
589 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
590 built. Move logging of project start/finish to ..
591 * Project.cs: .. here. Build a target only if hasn't been built already.
592 Keep track of target outputs, and return those even if an already built
593 target has been invoked again.
594 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
596 2009-01-31 Ankit Jain <jankit@novell.com>
598 * BatchingImpl.cs: Split into ..
599 * BatchingImplBase.cs: .. this,
600 * TaskBatchingImpl.cs: .. this ..
601 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
603 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
604 (Log*): Move to TargetBatchingImpl .
608 2009-01-30 Ankit Jain <jankit@novell.com>
610 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
613 2009-01-29 Ankit Jain <jankit@novell.com>
615 * BuildItem.cs (child_items): Change type from BuildItemGroup to
617 (HasParent): Rename to ..
618 (HasParentItem): .. this.
619 (ParentItemGroup): Add setter.
621 * BuildItemGroup.cs (.ctor): Add overload with @project param.
623 (AddItem): Correctly set the ParentItemGroup for new build items.
624 (ParentProject): Add setter.
625 * Project.cs: Set the project for new BuildItemGroup instances.
626 * TaskEngine.cs (PublishItemGroup): Likewise.
628 2009-01-06 Ankit Jain <jankit@novell.com>
630 * Project.cs (Build): Honor InitialTargets list.
632 2009-01-06 Ankit Jain <jankit@novell.com>
634 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
635 the property type also.
636 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
639 2009-01-06 Ankit Jain <jankit@novell.com>
641 * Project.cs (Build): Correctly handle null targetNames argument.
643 2009-01-06 Ankit Jain <jankit@novell.com>
645 * Engine.cs (LogProjectStarted): Add a null check.
647 2009-01-01 Ankit Jain <jankit@novell.com>
649 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
650 * ChangeType (ToBuildItemGroup): Add 'split' param.
652 * Expression.cs (Parse): Add a new overload with a 'split' param.
653 * ExpressionCollection.cs (Add): Add new overload for IReference,
654 remove the ones for Item/Metadata/PropertyReference.
655 (ConvertToArray): Implement correctly.
656 (ConvertToString): Track api changes.
657 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
658 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
659 (AddItemsToArray): New.
660 (ConvertToITaskItemArrayFromString): Refactor a bit.
661 (ThrowCantConcatError): New.
662 * ItemReference.cs: Update.
663 * MetadataReference.cs: Update.
664 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
666 * BuildPropertyGroup.cs: Track api changes.
667 * TaskEngine.cs (PublishOutput): Improve exception message.
668 * Project.cs (DoLoad): Improve exception message. Add a null check.
670 2008-12-30 Ankit Jain <jankit@novell.com>
672 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
673 metadata values for unqualified references.
674 (BuildItemGroupToITaskItemArray): Rename to ..
675 (BuildItemGroupToITaskItems): .. this.
678 2008-12-18 Ankit Jain <jankit@novell.com>
680 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
682 2008-12-17 Ankit Jain <jankit@novell.com>
684 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
685 only one instance of unique metadata value is required.
687 2008-11-22 Ankit Jain <jankit@novell.com>
689 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
691 * MetadataReference.cs (ConvertToITaskItemArray): New.
692 * Project.cs (GetAllItemGroups): New.
694 2008-11-21 Ankit Jain <jankit@novell.com>
696 * BatchingImpl.cs: Add task batching implementation.
697 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
698 * ExpressionCollection.cs (Count): New.
699 (ConvertToString): Handle MetadataReference.
700 * ItemReference.cs (ConvertToString):
701 (ConvertToITaskItemArray): Use the batching api.
703 * MetadataReference.cs (ConvertToString): New.
705 * Project.cs: Add api for accessing batched items and metadata.
706 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
709 2008-10-01 Ankit Jain <jankit@novell.com>
711 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
712 (BuildProjectFile): If filename is null (project.LoadXml) then use
714 * BuildTask.cs (InitializeTask): Track api change.
715 * Expression.cs (Parse): Skip empty entries in the expression.
717 2008-09-24 Ankit Jain <jankit@novell.com>
719 * Engine.cs: Add argument checks.
720 * Project.cs: Likewise.
722 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
724 * Project.cs (Build): Add outputs to targetOutputs.
726 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
728 * ExpressionCollection.cs (ConvertToArray): Simplify.
730 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
732 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
733 simplified. It still needs tests and refactoring.
735 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
737 * BuildEngine.cs (BuildProjectFile): Don't crash on null
740 * Target.cs: Add Outputs property.
742 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
744 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
745 (). Support condition.
747 * BatchingImpl.cs (BatchBuildTask): Simplify.
749 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
751 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
754 * ConditionFunctionExpression.cs: Removed warnings.
756 * BuildTask.cs (Execute): Write exceptions to std err (they should be
757 logged but it's better than swallowing).
759 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
761 * ConditionTokenizer.cs: Add Putback ().
763 * ConditionParser.cs: Add parsing of functions.
765 * ConditionFunctionExpression.cs: Add.
767 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
769 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
770 set property in persisted property group.
772 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
774 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
777 * ConsoleLogger.cs (TargetFinishedHandler)
778 (TaskFinishedHandler): Increment error count.
780 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
782 * BuildItem.cs (RemoveMetadata): Remove from XML.
783 (SetMetadata): Trigger project reevaluation.
785 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
787 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
790 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
792 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
793 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
794 BatchingImpl.cs, BuildProperty.cs: Track API changes.
796 * Expression.cs (Parse): Added allowItems parameter and made regexes
799 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
800 will try to import a.ext when given a.EXT.
802 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
804 * BuildItemGroup.cs: Store information saying what is the last item
805 group that contains build item name.
807 * Project.cs (Build): Pass empty array (build default targets).
809 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
811 * Token.cs: Commented Transform and LiteralSubExpression and added
814 * ConditionParser.cs: Removed redundant casts, rewrote
815 ParseFactorExpression () and added parsing of '!'.
817 * ConditionTokenizer.cs: Always skip whitespaces when getting next
818 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
819 Moved ReadChar () in front of all ifs.
821 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
823 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
824 from XML. (not to escape items that have parents twice).
826 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
828 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
829 (Project): Renamed to ParentProject.
831 * BuildItem.cs (ctor)
832 (CopyCustomMetadata): Add null check.
834 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
835 (RemoveProperty): Added null check.
837 * TargetCollection.cs (RemoveTarget): Added null check.
839 * Engine.cs (UnloadProject): Added null check.
841 * GroupingCollection.cs (Remove): Check if removed group belongs to
844 * Project.cs (AddNewItem): Implemented.
845 (RemoveItem): Reorganized.
846 (SetProjectExtensions): Added null check.
848 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
850 * BuildItemGroup.cs (Detach): Added.
852 (RemoveItemAt): Used Detach ().
854 * BuildItem.cs: Made FromXml and HasParent internal and added
855 ParentItem and ParentItemGroup properties (internal).
858 * GroupingCollection.cs (Remove): Used Detach ().
860 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
862 (GetEvaluatedItemsByNameIgnoringCondition)
863 (GetEvaluatedItemsByName)
864 (GetEvaluatedProperty): Reevaluate if needed.
866 (RemoveAllItemGroups)
867 (RemoveAllPropertyGroups): Implemented.
868 (DoLoad): Added closing of TextReader.
870 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
872 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
873 change but just mark that it needs it.
875 * Project.cs: Reevaluate when it needs reevaluation and one of
876 Evaluated* properties is used.
878 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
880 * Target.cs: Throw an exception when <OnError> is not last element in
883 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
885 * TargetCollection.cs: If a target is already there replace it with
888 * BuildProperty.cs: Added XmlElement property.
890 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
892 * ImportCollection.cs: Don't add imports that are already added.
894 * BuildItemGroup.cs: MonoTODOs.
896 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
897 condition can't be evaluated to bool.
899 * BuildPropertyGroup.cs (Evaluate): Simplify.
901 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
903 * BuildWhen.cs: Moved BindToXml () code to ctor.
905 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
906 property needed for removing groups.
908 * Engine.cs: Added StartBuild () that logs build start when Build ()
911 * GroupingCollection.cs: Added Remove () for item and property groups.
913 * Project.cs (AddNewImport): Implemented.
914 (AddNewItemGroup): Implemented.
915 (AddNewPropertyGroup): Implemented.
916 (AddNewUsingTaskFromAssemblyFile): Implemented.
917 (AddNewUsingTaskFromAssemblyName): Implemented.
918 (RemoveItemGroup): Implemented.
919 (RemovePropertyGroup): Implemented.
921 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
923 * BuildItemGroup.cs (Clear): Remove from XML.
925 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
926 to Project.EvaluatedProperties.
927 (Clear): Remove from XML.
929 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
931 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
934 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
936 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
937 Add () calls when processing a project from Import and
938 evaluate_iterator for evaluation.
940 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
942 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
943 and prepend relative directory of importing project to full path of
946 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
948 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
949 BuildItemGroupCollection.cs, Project.cs: Track API changes.
951 * GroupingCollection.cs: Now it needs Project reference so added it.
953 * BuildTask.cs: Formatting.
955 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
957 * ConditionParser.cs (ParseAndEvaluate): Added.
959 * BuildItem.cs: Changed exception message.
961 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
963 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
964 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
965 GroupingCollection doesn't need Project reference.
967 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
969 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
970 (Project.EvaluatedItems is a read only item group.)
971 (ReplaceWith): Added.
973 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
974 global property group causes reevaluation of its project.
976 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
979 * OldExpression.cs: Removed.
981 * BuildProperty.cs (Evaluate): Simplified.
983 * ChangeType.cs (TemporaryTransform): Simplified.
985 * BuildItem.cs: There are now 3 types of build items: from XML, having
986 parent from XML, virtual. Added SplitParentItem ().
988 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
990 * Utilities.cs: Added Unescape ().
992 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
993 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
994 groups (at the moment just unescape).
996 * Expression.cs (CopyToExpressionList): Unescape strings.
998 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1000 * Target.cs (ctor): Added ImportedProject argument and removed
1002 (AddNewTask): Implemented.
1004 * TargetCollection.cs (AddNewTarget): Implemented.
1006 * Project.cs: Track API changes.
1008 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1010 * Target.cs (Build): Don't throw anything in case of error, just
1013 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
1016 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
1019 * BuildProperty.cs (ToString): Throw an exception if property is not
1021 (op_Explicit): Added a null check.
1023 * Engine.cs: Better error message.
1025 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
1026 IndexOutOfRangeException.
1028 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
1029 (MarkProjectAsDirty): Set time.
1031 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1033 * BuildItemGroup.cs (Clone): Throw exception.
1035 * Project.cs (Load): Throw InvalidProjectFileException if anything
1038 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1040 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
1041 and ConvertToITaskItemArray ().
1043 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1045 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
1046 classes that were public in Beta 2 and aren't used.
1048 * Expression.cs: Added replacement for parsing expressions char by
1049 char. It uses regexes to find item/property/metadata references in
1052 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1053 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1054 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1056 * ConditionRelationalExpression.cs: Formatting.
1058 * OldExpression.cs: Commented everything.
1060 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1061 parsing to Expression.
1063 * BuildItem.cs: Check if project is from XML in set_Condition and
1066 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1069 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1070 can evaluate expression in CanEvaluateToBool ().
1072 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1074 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1075 which item group is imported.
1077 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1079 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1081 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1082 BuildItemGroupCollection.cs: Little changes related to
1085 * ImportCollection.cs: Use GroupingCollection not an internal list.
1087 * Import.cs (Evaluate): Split to functions and check if
1088 EvaluatedProjectPath is empty.
1090 * GroupingCollection.cs, Project.cs: Move evaluation to
1091 GroupingCollection. Change algorithm to use 2 passes: first for property
1092 groups and imports and second for item groups.
1094 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1096 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1097 BuildItemGroup> not IDictionary.
1099 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1100 evaluated to false because we want to add every item to
1101 Project.EvaluatedItemsByNameIgnoringCondition.
1103 * Project.cs (Build): Don't throw an exception just return false.
1104 (GetEvaluatedProperty): Avoid NullReferenceException.
1105 (SetProjectExtensions): Implemented.
1107 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1109 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1111 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1112 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1113 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1115 * ImportCollection.cs: Added a note.
1117 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1119 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1121 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1122 (UsingTask[] array, int index)
1124 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1125 items to Project.EvaluatedItems in PublishItemGroup ();
1127 * BuildItemGroup.cs: Added [MonoTODO].
1129 * UsingTask.cs: Used expression for AssemblyFile to get around
1130 problems with '\' and '/'.
1132 * BuildItem.cs (ctor): Added null checks.
1133 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1134 (SetMetadata): Don't escape evaluatedMetadata and escape
1135 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1137 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1138 FromXml () instead of null checks.
1139 (SetProperty): Escape propertyValue when it is literal.
1141 * BuildProperty.cs: Changed exception message.
1143 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1145 (GetProjectExtensions): Implemented.
1147 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1149 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1150 GetParameterValue (), use expressions in ContinueOnError.
1151 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1152 instead of InvalidOperationException ().
1153 * ImportCollection.cs: Implement CopyTo ().
1154 * Target.cs: Remove redundant variables (XmlAttributes), return
1155 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1156 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1157 * Import.cs: Throw an exception when file does not exist.
1158 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1159 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1160 need to treat item as a token probably
1162 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1164 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1165 throw an exception).
1166 * BuildItemGroupCollection.cs: Changed exception types.
1168 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1170 * Engine.cs: Removed redundant cast.
1172 * UsingTaskCollection.cs:
1176 * TargetCollection.cs: Comment unused variable.
1177 * ConditionTokenizer.cs: Simplified checking if current token is a
1179 * Target.cs: Removed old code.
1181 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1183 * Target.cs: Changed "" to String.Empty.
1184 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1185 string was evaluated to String.Empty.
1186 * InternalLoggerException.cs:
1187 * InvalidProjectFileException.cs: Added LinkDemand before
1189 * ConsoleLogger.cs: Changed "" to String.Empty.
1190 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1191 with change to generics).
1192 * Project.cs: Made Build () throw more meaningful exception.
1194 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1196 * Target.cs: Reformatted.
1197 * TaskEngine.cs: Removed redundant code.
1198 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1199 * Engine.cs: Made BuildProjectFile () load project file if it's not
1202 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1204 * ConditionRelationalExpression.cs: Change comparers to case
1206 * ImportCollection.cs: Add NotImplementedExceptions.
1207 * BuildPropertyGroup.cs: Reformatted a bit.
1208 * BuildProperty.cs: The same.
1209 * Project.cs: Moved evaluation of imports before evaluation of
1210 properties. This may "work" until importing projects is redesigned but
1211 probably isn't correct.
1213 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1215 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1217 * BuildItemGroup.cs: Change return to continue.
1219 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1221 * ConditionParser.cs: Copyright note.
1222 * ExpressionCollection.cs: Fixed arrays passing.
1224 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1226 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1227 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1228 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1229 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1231 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1233 * Token.cs: Changed names: removed "than".
1234 * ConditionRelationalExpression.cs: Added.
1235 * ConditionFactorExpression.cs: Added.
1236 * BuildItemGroup.cs: Changed Condition property return value to return
1237 String.Empty instead of null.
1238 * ConditionParser.cs: Added support for parsing relational expressions
1240 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1241 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1242 and CanEvaluateToBool (), CanEvaluateToNumber () and
1243 CanEvaluateToString ().
1244 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1245 appropriately to ConditionExpression base class.
1246 * ConditionTokenizer.cs: Added null check and changed names in enums:
1248 * ConditionNotExpression.cs: Added.
1249 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1250 * Project.cs: Added checks for condition.
1252 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1254 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1255 ConditionalParser.cs: Changed name,
1257 * ConditionExpression.cs: Added Evaluate ().
1258 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1259 * BatchingImpl.cs: Added check if task should be executed.
1261 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1263 * UsingTask.cs: Changed properties to return null on empty attribute.
1264 * UsingTaskCollection.cs: Added object to SyncRoot.
1265 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1267 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1269 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1270 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1272 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1274 * Utilities.cs: Implemented Escape ().
1275 * BuildItem.cs: Added null checks.
1276 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1277 * Project.cs: Commented out redundant Evaluate ().
1278 * BuildChoose.cs: Minor changes.
1280 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1282 * Token: Added new few missing tokens.
1283 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1284 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1285 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1286 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1287 LiteralTokenizer.cs:
1288 Removed literal expression parsing based on tokenizer and
1289 parser. It needs to be done by regex.
1291 Moved tokenizer to ConditionalTokenizer.cs.
1293 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1295 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1296 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1297 methods converting reference to string from ToString () to
1298 ConvertToString () to avoid mistakes like using ToString () provided
1301 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1303 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1304 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1305 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1306 OldExpression and changed To* functions to one ConvertTo ().
1307 * TaskEngine.cs: Fixed PublishOutput ().
1308 * OldExpression.cs: Added. It will be temporarily used before
1309 LiteralExpression will be written using Tokenizer.
1310 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1311 ExpressionParseException.cs, LiteralExpression.cs: Added.
1313 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1315 * ImportedProject.cs: Removed warning.
1316 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1319 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1321 * Project.cs: Removed unnecessary variable.
1322 * Engine.cs: Added fixme.
1324 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1326 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1327 class (Mono.XBuild.Utilities.ReservedNameUtils).
1329 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1331 * BuildTask.cs: Removed unnecessary variable.
1332 * Engine.cs: Added logging of the build start.
1333 * Project.cs: Removed unnecessary variable.
1335 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1337 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1339 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1341 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1343 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1345 * BuildItem.cs: Fix typo?
1347 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1349 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1350 Engine.cs, Project.cs: Coding style fixes.
1352 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1354 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1356 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1358 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1359 to pass tests. Wrote serialization constructor.
1360 * Engine.cs, Project.cs: Global engine and project unloading, test and
1363 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1365 * UsingTask.cs: Formatting changes.
1367 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1369 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1370 to lists instead of hashtables.
1371 * Import.cs: Cleaned up, moved importing from Project.cs
1372 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1373 * Engine.cs: Cleaned up properties.
1374 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1375 Separated evaluation and loading.
1377 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1379 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1380 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1381 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1382 binding and evaluation, merge xml binding in constructors.
1383 * DirectoryScanner.cs: Includes CAN be empty.
1384 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1385 * ConsoleLogger.cs: Fix compilation warning.
1387 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1389 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1391 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1393 * Engine.cs: API cleanup.
1395 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1397 * Project.cs: Cleaned up add.
1398 * Expression.cs: Hacked to transform \ and / to path separators.
1399 * BuildPropertyGroup.cs: Small cleanup.
1400 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1403 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1405 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1406 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1408 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1409 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1410 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1412 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1413 * TaskElement.cs: Temporarily removed.
1414 * Xml.cs: Changed to static.
1416 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1418 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1419 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1420 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1421 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1422 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1423 IBuildPropertyGroupCollection.cs: Removed.
1425 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1427 * BuildItem.cs: Removed IBuildItem references.
1428 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1429 IBuildItemGroup references. Changed Evaluate to internal.
1430 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1431 reference and hidden constructors.
1432 * BuildProperty.cs: Removed IBuildProperty reference.
1433 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1434 IBuildPropertyGroup references. Changed Evaluate to internal.
1435 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1436 reference and hidden constructors.
1437 * ConsoleLogger.cs: Updated names of event handlers.
1438 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1439 Escape. Added UnloadAllProjects () and UnloadProject ().
1440 * FileLogger.cs: Removed ApplyParameter ().
1441 * GroupingCollection.cs: Hidden.
1442 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1443 * ItemPropertyGroupingBase.cs: Commented.
1444 * ProcessingPass.cs: Hidden.
1445 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1447 * Target.cs: Removed ITarget reference.
1448 * TargetCollection.cs: Removed ITargetCollection reference.
1449 * TaskElement.cs: Removed ITaskElement reference.
1450 * TaskEngineAssemblyResolver.cs: Hidden.
1451 * Utilities.cs: Made static class, removed CheckPath (),
1452 ValidateCulture (), GetSupportedCultures () and added Escape ().
1454 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1456 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1459 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1461 * Project.cs: Added MonoTODO attributes.
1462 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1463 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1464 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1465 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1466 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1467 BuildItemGroup.cs, InvalidProjectFileException.cs,
1468 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1469 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1470 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1471 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1472 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1473 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1474 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1475 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1476 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1477 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1478 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1479 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1481 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1483 * TaskDatabase.cs: Change Shared to Framework.
1484 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1485 CaseInsensitiveHashCodeProvider
1487 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1489 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1490 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1493 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1495 * InternalLoggerException.cs: Changed protected fields to private.
1497 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1499 * Engine.cs: Added check for globalProperties.
1500 * Project.cs: Added using path from importedProject.FullFileName when
1501 adding UsingTask elements.
1503 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1505 * TaskElement.cs: Changed ReflectedType to PropertyType.
1506 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1509 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1511 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1513 * BuildProperty.cs: Organized PropertyType enum.
1514 * Engine.cs: Added setting CommandLine PropertyType of global
1517 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1519 * InvalidProjectFileException.cs: Changed Message property.
1520 * ChangeType.cs (TransformToString): Added separator between items.
1521 * TaskEngineAssemblyResolver.cs: Formatting.
1523 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1525 * DirectoryScanner.cs: Added.
1526 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1527 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1528 * Project.cs: Removed Evalute* ().
1530 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1532 * Target.cs: Formatting.
1533 * Expression.cs: Added check if array == null.
1534 * BuildItem.cs: Removed 'break' to remove warnings.
1535 * ConsoleLogger.cs: Formatting.
1536 * Engine.cs: Added handling of default target(s).
1537 * Project.cs: Added handling of default target(s).
1539 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1541 * TaskElement.cs: Added check for parameters.
1542 * Target.cs: Added logging of target skipping.
1543 * Expression.cs: Changed returning object[] to string[], bool[]... in
1545 * ItemReference.cs: Fixed for item references without custom
1547 * BatchingImpl.cs: Added real inputs/outputs checking.
1548 * Engine.cs: Moved global properties setting.
1549 * Project.cs: Moved global properties setting.
1551 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1553 * Target.cs: Added checks for target existence.
1554 * BuildItemGroup.cs: Changed to use transforms.
1555 * MetadataReference.cs: Wrote real implementation.
1556 * ItemReference.cs: Rewritten to use transforms.
1557 * BuildItem.cs: Changes for transforms and metadata.
1558 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1560 * Project.cs: Fixed project importing.
1561 * ImportedProject.cs: Changed to throw exceptions instead of returning
1564 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1566 * Engine.cs: Removed FIXME.
1567 * Project.cs: Splitted ProcessElements and added project importing.
1568 * ImportedProject.cs: Rewritten.
1570 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1572 * TaskElement.cs: Added getting of objects of every type.
1573 * BuildItemGroup.cs: Added ToITaskItemArray ().
1574 * Expression.cs: Implemented part that is not using metadata.
1575 * ItemReference.cs: Implemented parsing item references. Need to fix
1577 * BuildItem.cs: Fixed ToITaskItem ().
1578 * PropertyReference.cs: Implemented parsing property references. This
1579 also needs validity checking.
1581 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1583 * TaskElement.cs: Added Output element handling.
1584 * Target.cs: Cleaned up.
1585 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1586 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1587 ItemReference.cs, ChangeType.cs: Added.
1588 * BuildItem.cs: Added creating BuildItem from TaskItem.
1589 * BuildPropertyGroup.cs: Small changes.
1590 * BatchingImpl.cs: Fixed to return real task execution result.
1591 * BuildProperty.cs: Fixed FinalValue property.
1592 * Engine.cs: Reformatted logging.
1593 * Project.cs: Added check to EvaluateProperty.
1595 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1597 * TaskElement.cs: Added part of execution engine.
1598 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1599 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1600 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1601 * BuildItem.cs: Added handling of built-in metadata and referencing
1602 Items by name not FullName.
1603 * BatchingImpl.cs: Added temporary task "batching".
1604 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1605 * Project.cs: Added Evaluate. It will be moved to separate class.
1607 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1609 * EventSource.cs, Engine.cs: Added CriticalEvents.
1610 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1611 Project.cs: Added some support for items.
1612 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1614 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1616 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1619 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1621 * BatchingImpl.cs: Added.
1622 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1623 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1624 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1625 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1626 GroupingCollection.cs: Updated.
1628 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1630 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1631 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1632 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1633 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1634 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1635 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1636 InternalLoggerException.cs, InvalidProjectFileException.cs,
1637 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1638 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1639 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1640 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1641 Initial check-in of implementations.
1643 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1645 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1646 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1647 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1648 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1649 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1650 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1651 Initial check-in of interfaces and a syntax file, real classes are
1652 changing a lot so I'll wait a moment with checking them in.