1 2010-03-04 Ankit Jain <jankit@novell.com>
3 * BuildEngine.cs (LogErrorEvent): Log as warning, if
4 ContinueOnError==true, and log a corresponding message.
5 * TargetBatchingImpl.cs: Refactor to share code between the
6 batched and unbatched case. If a task fails and
7 ContinueOnError==true, then ignore the failed state.
9 2010-02-19 Ankit Jain <jankit@novell.com>
11 * BuildItem.cs: Track api changes.
12 (SetMetadata): Allow RecursiveDir to be set, this is set by
14 * DirectoryScanner.cs (ProcessInclude): Set RecursiveDir metadata.
16 2010-02-19 Ankit Jain <jankit@novell.com>
18 * Import.cs (Evaluate): Add param @ignoreMissingImports.
19 * Project.cs (Load*): Add overloads with param @projectLoadSettings.
20 (Log*): Mark internal.
21 * ProjectLoadSettings.cs: New.
23 2010-02-04 Ankit Jain <jankit@novell.com>
26 * ConditionFunctionExpression.cs (Exists): Check for directory also.
28 2009-12-22 Ankit Jain <jankit@novell.com>
31 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
32 * BuildItem.cs: Track api changes.
34 2009-12-02 Ankit Jain <jankit@novell.com>
37 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
38 being iterated over. Patch by Laurent Etiemble
39 <laurent.etiemble@gmail.com>
41 2009-11-28 Ankit Jain <jankit@novell.com>
44 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
45 * Project.cs (Batch): New. Contains the perBatchItems and the
46 commonItems for the batch.
47 Use a stack of batches, instead of directly setting the current
51 (SetBatchedItems): Make this private.
52 (GlobalProperties.set): Re-evaluating the project is not required
54 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
56 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
58 * Target.cs (Build): Reset the current batch to nil before evaluating
59 and building this target.
61 2009-11-28 Ankit Jain <jankit@novell.com>
63 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
64 available in either perBatchItemsByName or commonItemsByName
65 or the evaluatedItemsByName collection. Allows the use of
66 items which are not batched, but are consumed in case of batching.
68 2009-11-26 Ankit Jain <jankit@novell.com>
70 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
71 refs also, for Inputs and Outputs.
73 2009-10-13 Ankit Jain <jankit@novell.com>
75 * DirectoryScanner.cs:
76 * ExpressionCollection.cs:
77 * GroupingCollection.cs:
79 * Target.cs: Fix warnings.
81 2009-10-12 Ankit Jain <jankit@novell.com>
83 * Target.cs (TargetFile): New. Gives the name of the file
84 containing the target definition.
85 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
86 return this for ProjectFileOfTaskNode.
87 * BuildTask.cs (LogTaskStarted):
88 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
90 (InitializeTask): Set BuildEngine's task file to parent target's
92 * Engine.cs (LogProjectStarted): Incase of default targets, set
93 TargetNames to String.Empty .
94 * TargetBatchingImpl.cs (LogTargetStarted):
95 (LogTargetFinished): Use target.TargetFile for the event.
97 * ConsoleLogger.cs: Keep a stack of project/target/task being
98 executed. And corresponding list of errors and warnings.
99 (EventsToString): Stringifies the current "stack", to be used
100 as key to the table of errors/warnings and for show messages
101 at the end of the build.
103 2009-10-12 Ankit Jain <jankit@novell.com>
105 * Project.cs (Load): Add argument checks.
107 2009-10-11 Ankit Jain <jankit@novell.com>
109 * ConsoleLogger.cs (no_colors): Rename to ..
110 (use_colors): .. this. Fix the case when XBUILD_COLORS
113 2009-10-11 Ankit Jain <jankit@novell.com>
115 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
116 Support 'XBUILD_COLORS' to set colors for errors, warnings,
119 2009-10-10 Ankit Jain <jankit@novell.com>
121 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
122 becomes true, don't reset it. We are looking for "atleast one
125 2009-10-08 Ankit Jain <jankit@novell.com>
127 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
128 directly using DirectoryInfo ("z:"), that doesn't return
131 2009-10-08 Ankit Jain <jankit@novell.com>
133 * DirectoryScanner.cs: Handle absolute paths. Fix to work
134 correctly on windows. Change order of adding paths to match
135 msbuild, useful to have.
137 2009-10-08 Ankit Jain <jankit@novell.com>
139 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
140 of the 'Output' element also.
141 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
143 2009-10-07 Ankit Jain <jankit@novell.com>
145 * ConsoleLogger.cs: Mark build as failed, if any project failed.
147 2009-10-06 Ankit Jain <jankit@novell.com>
149 * ConsoleLogger: Improve error reporting. Don't count failed task,
150 target or project as another error. Show "errors" after "warnings",
151 more useful to the user.
152 * Project.cs (BuildTarget): Log error instead of using CWL.
154 2009-10-03 Ankit Jain <jankit@novell.com>
156 * Project.cs (OS): New.
157 (InitializeProperties): Set 'OS' as a pre-defined property, set to
158 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
160 2009-10-02 Ankit Jain <jankit@novell.com>
162 * Expression.cs (Parse): Don't change '/' to '\\', not required.
164 2009-10-01 Ankit Jain <jankit@novell.com>
166 * Project.cs (AddImport): Show the correct source file name, when
167 the import is in the main project file.
169 2009-10-01 Ankit Jain <jankit@novell.com>
172 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
173 the full path of the imported project here itself, instead of ..
175 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
177 * Project.cs (AddImport): Don't process if condition is false.
178 Warn if a circular reference is detected, and ignore the import.
180 2009-09-29 Ankit Jain <jankit@novell.com>
182 * GroupingCollection.cs (Evaluate): Mark internal.
183 * Project.cs (AddImport): Only evaluate the properties,
184 till before the import.
186 2009-09-29 Ankit Jain <jankit@novell.com>
188 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
189 the project xml, as returned Xml*Reader normalizes the newlines.
190 Instead directly use the TextReader with XmlDocument.Load ().
192 2009-09-27 Ankit Jain <jankit@novell.com>
194 * ConditionParser.cs: Show the condition being parsed in the
197 2009-09-26 Ankit Jain <jankit@novell.com>
199 * Expression.cs: Allow '-' in item, property and metadata names.
201 2009-09-26 Ankit Jain <jankit@novell.com>
203 * Project.cs (Evaluate): Split into this and ..
204 (PrepareForEvaluate): .. this.
205 (AddImport): Evaluate the current set of properties/items etc,
206 before processing the imported project. Honor the Condition
208 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
210 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
211 * BuildItemGroup.cs (Evaluate): Evaluate only once.
212 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
214 2009-09-26 Ankit Jain <jankit@novell.com>
216 * Project.cs: Get InitialTargets from the imported projects also.
217 The combined list of targets are executed, in the order they were
219 DefaultTargets are also read in from imported projects, and the first
220 non-empty DefaultTargets found is used.
222 2009-09-25 Ankit Jain <jankit@novell.com>
224 * Project.cs (BuildTarget): Handle skipped targets.
226 2009-09-25 Ankit Jain <jankit@novell.com>
228 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
229 InvalidProjectFileException with useful error.
231 2009-09-24 Ankit Jain <jankit@novell.com>
233 * Project.cs (Load): Emit the .sln.proj file only if env var
234 XBUILD_EMIT_SOLUTION is set.
236 2009-09-24 Ankit Jain <jankit@novell.com>
238 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
240 2009-09-24 Ankit Jain <jankit@novell.com>
242 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
245 2009-09-10 Ankit Jain <jankit@novell.com>
247 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
248 preserved, so use ConvertTo ITaskItem, rather than string.
249 Ensure that the new items have the metadata from references _in_
250 Include, and the metadata of _this_ builditem.
251 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
252 (MatchedFilenames): Rename to ..
253 (MatchedItems): .. this, and change type of array of ITaskItem.
254 Ensure that metadata of items in Includes are retained in the
257 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
258 param. If separator is present, then just return a "Join'ed"
259 string as the single task item.
260 * ItemReference.cs: Track api changes.
262 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
263 as we need separate task items.
265 2009-09-01 Ankit Jain <jankit@novell.com>
268 * Project.cs (BuildTarget): Move caching of target outputs to ..
269 * Target.cs: .. here. Move LogTargetSkipped also here.
270 Ensure that caching happens for target dependencies also.
272 2009-09-01 Ankit Jain <jankit@novell.com>
274 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
277 2009-09-01 Ankit Jain <jankit@novell.com>
279 * Expression.cs (ParseOptions): New enum. Replace the bool params
280 of exression.Parse with this. Add option to control expansion of
282 (CopyToExpressionCollection): Track api changes.
284 Update all expr.Parse calls to use the new enum.
285 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
286 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
288 * BatchingImplBase.cs: Track api changes. Allow metadata refs
290 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
291 * ItemReference.cs: Allow metadata in transforms.
292 * TaskEngine.cs: Allow metadata refs.
294 * MetadataReference.cs (.ctor): Add a 'original string' param.
296 2009-08-29 Ankit Jain <jankit@novell.com>
298 * Expression.cs (ExpressionOptions): New.
300 Introduce a ExpressionOptions argument to all ConvertTo*
301 methods. Implement the rule: in evaluation phase, expand
302 all items completely, but dont expand item refs in properties.
303 At other times, expand the item refs in the properties.
304 See comments in Expression.cs, for a full explanation.
305 * BuildItem.cs: Track api changes.
306 * BuildItemGroup.cs: Likewise.
307 * BuildProperty.cs: Track api changes. Handle self-references.
308 * BuildTask.cs: Track api changes.
309 * IReference.cs: Add ExpressionOptions param.
310 * ItemReference.cs: Track api changes.
311 * PropertyReference.cs: Likewise.
312 * MetadataReference.cs: Likewise.
313 * ExpressionCollection.cs: Track api changes. Add support for
314 converting all primitive types and DateTime, instead of a fixed
316 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
317 * TaskBatchingImpl.cs: Handle the case when batching is required,
318 but no items are available.
320 * TaskEngine.cs: Throw on unsupported types. Correctly handle
321 properties in case of empty values.
323 2009-08-26 Ankit Jain <jankit@novell.com>
325 * Expression.cs: Correctly handle a item reference with transform
326 when allowItems is false. If item ref is ignored, then the transform
327 will get incorrectly matched as a metadata ref.
328 * ItemReference.cs (.ctor): Add a @original_string param.
330 2009-08-26 Ankit Jain <jankit@novell.com>
332 * Utilities.cs (UnescapeFromXml): New. From md.
333 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
334 of the property element.
336 2009-08-26 Ankit Jain <jankit@novell.com>
338 * BuildProperty.cs (ConvertToString): New.
339 (ConvertoToITaskItemArray): New. Parse the property value.
340 * PropertyReference.cs (ConvertToString): Use BuildProperty's
342 (ConvertoToITaskItemArray): Likewise.
344 2009-08-21 Ankit Jain <jankit@novell.com>
346 * Engine.cs (EndProjectBuild): Use the @succeeded argument
347 instead of hardcoding 'true'.
348 * Target.cs (Build): Add an overload to return executeOnErrors
349 value for the target executed. If building dependencies fails,
350 and executeOnErrors is true, then execute OnError tasks.
351 Add the new param to ..
352 (BuildDependencies): this, ..
354 (GetDependencies): Improve error message and variable name.
355 (ExecuteOnErrors): Honor OnError tag's Condition also.
356 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
358 2009-08-20 Ankit Jain <jankit@novell.com>
361 * Project.cs (Load): Add support for loading .sln files.
363 2009-08-20 Ankit Jain <jankit@novell.com>
365 * BuildTask.cs (Execute): Use task_logger only after the task
366 has been initialized. Catch and report task loading errors.
367 * Target.cs (DoBuild): Dont rethrow the exception, and emit
368 the stacktrace as a low importance message.
370 2009-08-18 Ankit Jain <jankit@novell.com>
372 * BatchingImplBase.cs: Make the item name lookups and metadata be case
374 * TaskDatabase.cs: Likewise.
375 * TaskEngine.cs: Make property name looks, case insensitive.
377 2009-08-09 Miguel de Icaza <miguel@novell.com>
379 * ConsoleLogger.cs: Change the format of the error and warnings
380 strings to work when invoked inside Emacs by not rendering the
381 column if available, by using lowercase "error"/"warning" strings
382 instead of camelcased versions and to not have unnecessary padding.
384 2009-07-31 Ankit Jain <jankit@novell.com>
386 * ConsoleLogger.cs: Keep track of all the errors and warnings
387 and show them at the end.
389 2009-07-31 Ankit Jain <jankit@novell.com>
391 * Target.cs (Build): Log a message if a target is skipped.
393 * BuildTask.cs (Execute): Log error if task execution fails.
395 2009-07-30 Ankit Jain <jankit@novell.com>
397 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
398 v2.0, this will change when multi-targeting lands.
400 2009-07-30 Ankit Jain <jankit@novell.com>
402 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
403 'MSBuildProjectName' properties.
405 2009-07-28 Ankit Jain <jankit@novell.com>
407 * TaskEngine.cs (Prepare): Fix formatting mistake.
408 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
409 fails. Also, emit result of project at Normal verbosity level.
411 2009-07-23 Ankit Jain <jankit@novell.com>
414 * Project.cs (ExtensionsPath): New.
415 (InitializeProperties): Set "MSBuildExtensionsPath" property.
417 2009-06-12 Ankit Jain <jankit@novell.com>
420 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
421 itemref is allowed if the prev/next element is ";".
423 2009-06-12 Ankit Jain <jankit@novell.com>
425 * Utilities.cs (FromMSBuildPath): Return null if the path contains
426 "drive:" only on windows.
428 2009-06-07 Ankit Jain <jankit@novell.com>
430 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
433 2009-05-29 Ankit Jain <jankit@novell.com>
435 Correctly handle global properties. Correctly log
436 project/build events.
438 * BuildPropertyGroup.cs (Clone): Implement.
439 * Engine.cs (globalProperties): Rename to ..
440 (global_properties): .. this.
441 (currentlyBuildingProjectsStack): New. Used to correctly
442 log and raise project/build start/finish events.
443 (BuildProjectFile): Override any project global properties
444 with explicitly specified ones, here in the param @globalProperties.
445 Mark project for reevaluation, which will update the engine's
446 global properties also.
447 Reset both engine and project's old global properties at the end.
448 (UnregisterAllLoggers): Log build finished only if we are currently
450 (StartBuild): Rename to ..
451 (StartProjectBuild): .. this. Keeps track of the projects being built
452 in the new stack, and logs project and build events accordingly.
453 (EndProjectBuild): New. Uses the stack to keep track of projects
454 finishing builds, and raises project and build events accordingly.
455 (LogProjectStarted): Move here from Project.cs
456 (LogProjectFinished): Likewise.
458 * Project.cs (Build): Log start of project build.
459 Set current directory to the project file's dir, and reset at end.
460 (BuildInternal): Don't log here, its done in Build.
461 (BuildTarget): Already built targets are keyed by the set of global
462 properties that they were built with.
463 (GlobalPropertiesToString): New.
464 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
465 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
466 (Evaluate): Remove built targets only if we are currently building and
467 build settings are None.
468 Merge project's global properties with those of the parent engine.
469 Add missing properties from engine's global properties.
470 (LogTargetSkipped): Fix format string, add the reqd argument.
472 2009-05-29 Ankit Jain <jankit@novell.com>
474 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
475 (HasTrailingSlash): New.
477 2009-05-12 Ankit Jain <jankit@novell.com>
479 * Project.cs (.ctor): Init timeOfLastDirty.
481 2009-05-05 Miguel de Icaza <miguel@novell.com>
483 * Contribution from Martin Brenn to fix #498154.
485 2009-04-27 Ankit Jain <jankit@novell.com>
488 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
489 one passed as argument.
491 2009-04-27 Ankit Jain <jankit@novell.com>
493 * TaskEngine.cs (Prepare): Emit a useful error message property value
494 can't be converted to required type.
496 2009-04-27 Ankit Jain <jankit@novell.com>
498 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
499 as valid true values for bool, and corresponding for false.
501 2009-03-27 Jonathan Chambers <joncham@gmail.com>
503 * BuildWhen.cs: Add basic implementation.
504 * BuildChoose.cs: Add basic implementation.
505 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
506 EvaluatedItemsIgnoringCondition.
507 * GroupingCollection.cs: Add evaluation of BuildChoose items.
509 2009-03-26 Jonathan Chambers <joncham@gmail.com>
511 * TaskDatabase.cs (RegisterTask): Search for class by name
512 if task was not found using GetType (which uses namespace).
514 2009-02-26 Ankit Jain <jankit@novell.com>
516 * Target.cs: Handle target with no tasks. Log errors.
518 2009-02-24 Ankit Jain <jankit@novell.com>
520 Lazily load UsingTask tasks.
521 * UsingTask.cs (Evaluate): Register 'this' with task database,
522 but don't load it yet. Register only if condition evaluates to true.
523 Move the load logic to ..
524 (Load): .. here. Register with the specified task database.
525 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
526 in a table keyed by task name, but don't load it yet.
527 (GetTypeFromClassName): Try to load UsingTask if task is not already
528 loaded. Move loading logic to ..
529 (GetTypeFromClassNameInternal): .. here.
530 (CopyTasks): Copy the usingTasks table also.
532 2009-02-23 Ankit Jain <jankit@novell.com>
534 * BuildItem.cs (AddMetadata): Allow overwriting older values.
536 2009-02-22 Ankit Jain <jankit@novell.com>
538 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
539 instead of XmlElement. Eg. XmlComment
541 2009-02-21 Ankit Jain <jankit@novell.com>
543 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
544 * Project.cs (Load): Use FromMSBuildPath on the path.
545 (InitializeProperties): Set "MSBuildToolsPath" also.
547 2009-02-20 Ankit Jain <jankit@novell.com>
550 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
551 transforms) in conditions.
552 * ConditionParser.cs: Parse unquoted item, property references.
553 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
554 * Token.cs (Token.ToString): Override.
555 (TokenType.Transform): Uncomment.
557 2009-02-12 Jonathan Chambers <joncham@gmail.com>
559 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
560 no XmlElement.InnerText. This allows properties to be additional
563 2009-02-01 Ankit Jain <jankit@novell.com>
565 * BuildEngine.cs (BuildProjectFile): Use
566 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
567 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
568 built. Move logging of project start/finish to ..
569 * Project.cs: .. here. Build a target only if hasn't been built already.
570 Keep track of target outputs, and return those even if an already built
571 target has been invoked again.
572 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
574 2009-01-31 Ankit Jain <jankit@novell.com>
576 * BatchingImpl.cs: Split into ..
577 * BatchingImplBase.cs: .. this,
578 * TaskBatchingImpl.cs: .. this ..
579 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
581 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
582 (Log*): Move to TargetBatchingImpl .
586 2009-01-30 Ankit Jain <jankit@novell.com>
588 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
591 2009-01-29 Ankit Jain <jankit@novell.com>
593 * BuildItem.cs (child_items): Change type from BuildItemGroup to
595 (HasParent): Rename to ..
596 (HasParentItem): .. this.
597 (ParentItemGroup): Add setter.
599 * BuildItemGroup.cs (.ctor): Add overload with @project param.
601 (AddItem): Correctly set the ParentItemGroup for new build items.
602 (ParentProject): Add setter.
603 * Project.cs: Set the project for new BuildItemGroup instances.
604 * TaskEngine.cs (PublishItemGroup): Likewise.
606 2009-01-06 Ankit Jain <jankit@novell.com>
608 * Project.cs (Build): Honor InitialTargets list.
610 2009-01-06 Ankit Jain <jankit@novell.com>
612 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
613 the property type also.
614 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
617 2009-01-06 Ankit Jain <jankit@novell.com>
619 * Project.cs (Build): Correctly handle null targetNames argument.
621 2009-01-06 Ankit Jain <jankit@novell.com>
623 * Engine.cs (LogProjectStarted): Add a null check.
625 2009-01-01 Ankit Jain <jankit@novell.com>
627 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
628 * ChangeType (ToBuildItemGroup): Add 'split' param.
630 * Expression.cs (Parse): Add a new overload with a 'split' param.
631 * ExpressionCollection.cs (Add): Add new overload for IReference,
632 remove the ones for Item/Metadata/PropertyReference.
633 (ConvertToArray): Implement correctly.
634 (ConvertToString): Track api changes.
635 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
636 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
637 (AddItemsToArray): New.
638 (ConvertToITaskItemArrayFromString): Refactor a bit.
639 (ThrowCantConcatError): New.
640 * ItemReference.cs: Update.
641 * MetadataReference.cs: Update.
642 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
644 * BuildPropertyGroup.cs: Track api changes.
645 * TaskEngine.cs (PublishOutput): Improve exception message.
646 * Project.cs (DoLoad): Improve exception message. Add a null check.
648 2008-12-30 Ankit Jain <jankit@novell.com>
650 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
651 metadata values for unqualified references.
652 (BuildItemGroupToITaskItemArray): Rename to ..
653 (BuildItemGroupToITaskItems): .. this.
656 2008-12-18 Ankit Jain <jankit@novell.com>
658 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
660 2008-12-17 Ankit Jain <jankit@novell.com>
662 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
663 only one instance of unique metadata value is required.
665 2008-11-22 Ankit Jain <jankit@novell.com>
667 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
669 * MetadataReference.cs (ConvertToITaskItemArray): New.
670 * Project.cs (GetAllItemGroups): New.
672 2008-11-21 Ankit Jain <jankit@novell.com>
674 * BatchingImpl.cs: Add task batching implementation.
675 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
676 * ExpressionCollection.cs (Count): New.
677 (ConvertToString): Handle MetadataReference.
678 * ItemReference.cs (ConvertToString):
679 (ConvertToITaskItemArray): Use the batching api.
681 * MetadataReference.cs (ConvertToString): New.
683 * Project.cs: Add api for accessing batched items and metadata.
684 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
687 2008-10-01 Ankit Jain <jankit@novell.com>
689 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
690 (BuildProjectFile): If filename is null (project.LoadXml) then use
692 * BuildTask.cs (InitializeTask): Track api change.
693 * Expression.cs (Parse): Skip empty entries in the expression.
695 2008-09-24 Ankit Jain <jankit@novell.com>
697 * Engine.cs: Add argument checks.
698 * Project.cs: Likewise.
700 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
702 * Project.cs (Build): Add outputs to targetOutputs.
704 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
706 * ExpressionCollection.cs (ConvertToArray): Simplify.
708 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
710 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
711 simplified. It still needs tests and refactoring.
713 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
715 * BuildEngine.cs (BuildProjectFile): Don't crash on null
718 * Target.cs: Add Outputs property.
720 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
722 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
723 (). Support condition.
725 * BatchingImpl.cs (BatchBuildTask): Simplify.
727 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
729 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
732 * ConditionFunctionExpression.cs: Removed warnings.
734 * BuildTask.cs (Execute): Write exceptions to std err (they should be
735 logged but it's better than swallowing).
737 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
739 * ConditionTokenizer.cs: Add Putback ().
741 * ConditionParser.cs: Add parsing of functions.
743 * ConditionFunctionExpression.cs: Add.
745 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
747 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
748 set property in persisted property group.
750 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
752 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
755 * ConsoleLogger.cs (TargetFinishedHandler)
756 (TaskFinishedHandler): Increment error count.
758 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
760 * BuildItem.cs (RemoveMetadata): Remove from XML.
761 (SetMetadata): Trigger project reevaluation.
763 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
765 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
768 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
770 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
771 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
772 BatchingImpl.cs, BuildProperty.cs: Track API changes.
774 * Expression.cs (Parse): Added allowItems parameter and made regexes
777 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
778 will try to import a.ext when given a.EXT.
780 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
782 * BuildItemGroup.cs: Store information saying what is the last item
783 group that contains build item name.
785 * Project.cs (Build): Pass empty array (build default targets).
787 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
789 * Token.cs: Commented Transform and LiteralSubExpression and added
792 * ConditionParser.cs: Removed redundant casts, rewrote
793 ParseFactorExpression () and added parsing of '!'.
795 * ConditionTokenizer.cs: Always skip whitespaces when getting next
796 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
797 Moved ReadChar () in front of all ifs.
799 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
801 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
802 from XML. (not to escape items that have parents twice).
804 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
806 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
807 (Project): Renamed to ParentProject.
809 * BuildItem.cs (ctor)
810 (CopyCustomMetadata): Add null check.
812 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
813 (RemoveProperty): Added null check.
815 * TargetCollection.cs (RemoveTarget): Added null check.
817 * Engine.cs (UnloadProject): Added null check.
819 * GroupingCollection.cs (Remove): Check if removed group belongs to
822 * Project.cs (AddNewItem): Implemented.
823 (RemoveItem): Reorganized.
824 (SetProjectExtensions): Added null check.
826 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
828 * BuildItemGroup.cs (Detach): Added.
830 (RemoveItemAt): Used Detach ().
832 * BuildItem.cs: Made FromXml and HasParent internal and added
833 ParentItem and ParentItemGroup properties (internal).
836 * GroupingCollection.cs (Remove): Used Detach ().
838 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
840 (GetEvaluatedItemsByNameIgnoringCondition)
841 (GetEvaluatedItemsByName)
842 (GetEvaluatedProperty): Reevaluate if needed.
844 (RemoveAllItemGroups)
845 (RemoveAllPropertyGroups): Implemented.
846 (DoLoad): Added closing of TextReader.
848 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
850 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
851 change but just mark that it needs it.
853 * Project.cs: Reevaluate when it needs reevaluation and one of
854 Evaluated* properties is used.
856 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
858 * Target.cs: Throw an exception when <OnError> is not last element in
861 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
863 * TargetCollection.cs: If a target is already there replace it with
866 * BuildProperty.cs: Added XmlElement property.
868 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
870 * ImportCollection.cs: Don't add imports that are already added.
872 * BuildItemGroup.cs: MonoTODOs.
874 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
875 condition can't be evaluated to bool.
877 * BuildPropertyGroup.cs (Evaluate): Simplify.
879 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
881 * BuildWhen.cs: Moved BindToXml () code to ctor.
883 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
884 property needed for removing groups.
886 * Engine.cs: Added StartBuild () that logs build start when Build ()
889 * GroupingCollection.cs: Added Remove () for item and property groups.
891 * Project.cs (AddNewImport): Implemented.
892 (AddNewItemGroup): Implemented.
893 (AddNewPropertyGroup): Implemented.
894 (AddNewUsingTaskFromAssemblyFile): Implemented.
895 (AddNewUsingTaskFromAssemblyName): Implemented.
896 (RemoveItemGroup): Implemented.
897 (RemovePropertyGroup): Implemented.
899 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
901 * BuildItemGroup.cs (Clear): Remove from XML.
903 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
904 to Project.EvaluatedProperties.
905 (Clear): Remove from XML.
907 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
909 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
912 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
914 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
915 Add () calls when processing a project from Import and
916 evaluate_iterator for evaluation.
918 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
920 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
921 and prepend relative directory of importing project to full path of
924 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
926 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
927 BuildItemGroupCollection.cs, Project.cs: Track API changes.
929 * GroupingCollection.cs: Now it needs Project reference so added it.
931 * BuildTask.cs: Formatting.
933 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
935 * ConditionParser.cs (ParseAndEvaluate): Added.
937 * BuildItem.cs: Changed exception message.
939 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
941 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
942 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
943 GroupingCollection doesn't need Project reference.
945 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
947 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
948 (Project.EvaluatedItems is a read only item group.)
949 (ReplaceWith): Added.
951 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
952 global property group causes reevaluation of its project.
954 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
957 * OldExpression.cs: Removed.
959 * BuildProperty.cs (Evaluate): Simplified.
961 * ChangeType.cs (TemporaryTransform): Simplified.
963 * BuildItem.cs: There are now 3 types of build items: from XML, having
964 parent from XML, virtual. Added SplitParentItem ().
966 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
968 * Utilities.cs: Added Unescape ().
970 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
971 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
972 groups (at the moment just unescape).
974 * Expression.cs (CopyToExpressionList): Unescape strings.
976 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
978 * Target.cs (ctor): Added ImportedProject argument and removed
980 (AddNewTask): Implemented.
982 * TargetCollection.cs (AddNewTarget): Implemented.
984 * Project.cs: Track API changes.
986 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
988 * Target.cs (Build): Don't throw anything in case of error, just
991 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
994 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
997 * BuildProperty.cs (ToString): Throw an exception if property is not
999 (op_Explicit): Added a null check.
1001 * Engine.cs: Better error message.
1003 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
1004 IndexOutOfRangeException.
1006 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
1007 (MarkProjectAsDirty): Set time.
1009 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1011 * BuildItemGroup.cs (Clone): Throw exception.
1013 * Project.cs (Load): Throw InvalidProjectFileException if anything
1016 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1018 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
1019 and ConvertToITaskItemArray ().
1021 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1023 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
1024 classes that were public in Beta 2 and aren't used.
1026 * Expression.cs: Added replacement for parsing expressions char by
1027 char. It uses regexes to find item/property/metadata references in
1030 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1031 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1032 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1034 * ConditionRelationalExpression.cs: Formatting.
1036 * OldExpression.cs: Commented everything.
1038 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1039 parsing to Expression.
1041 * BuildItem.cs: Check if project is from XML in set_Condition and
1044 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1047 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1048 can evaluate expression in CanEvaluateToBool ().
1050 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1052 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1053 which item group is imported.
1055 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1057 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1059 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1060 BuildItemGroupCollection.cs: Little changes related to
1063 * ImportCollection.cs: Use GroupingCollection not an internal list.
1065 * Import.cs (Evaluate): Split to functions and check if
1066 EvaluatedProjectPath is empty.
1068 * GroupingCollection.cs, Project.cs: Move evaluation to
1069 GroupingCollection. Change algorithm to use 2 passes: first for property
1070 groups and imports and second for item groups.
1072 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1074 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1075 BuildItemGroup> not IDictionary.
1077 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1078 evaluated to false because we want to add every item to
1079 Project.EvaluatedItemsByNameIgnoringCondition.
1081 * Project.cs (Build): Don't throw an exception just return false.
1082 (GetEvaluatedProperty): Avoid NullReferenceException.
1083 (SetProjectExtensions): Implemented.
1085 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1087 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1089 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1090 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1091 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1093 * ImportCollection.cs: Added a note.
1095 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1097 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1099 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1100 (UsingTask[] array, int index)
1102 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1103 items to Project.EvaluatedItems in PublishItemGroup ();
1105 * BuildItemGroup.cs: Added [MonoTODO].
1107 * UsingTask.cs: Used expression for AssemblyFile to get around
1108 problems with '\' and '/'.
1110 * BuildItem.cs (ctor): Added null checks.
1111 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1112 (SetMetadata): Don't escape evaluatedMetadata and escape
1113 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1115 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1116 FromXml () instead of null checks.
1117 (SetProperty): Escape propertyValue when it is literal.
1119 * BuildProperty.cs: Changed exception message.
1121 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1123 (GetProjectExtensions): Implemented.
1125 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1127 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1128 GetParameterValue (), use expressions in ContinueOnError.
1129 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1130 instead of InvalidOperationException ().
1131 * ImportCollection.cs: Implement CopyTo ().
1132 * Target.cs: Remove redundant variables (XmlAttributes), return
1133 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1134 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1135 * Import.cs: Throw an exception when file does not exist.
1136 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1137 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1138 need to treat item as a token probably
1140 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1142 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1143 throw an exception).
1144 * BuildItemGroupCollection.cs: Changed exception types.
1146 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1148 * Engine.cs: Removed redundant cast.
1150 * UsingTaskCollection.cs:
1154 * TargetCollection.cs: Comment unused variable.
1155 * ConditionTokenizer.cs: Simplified checking if current token is a
1157 * Target.cs: Removed old code.
1159 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1161 * Target.cs: Changed "" to String.Empty.
1162 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1163 string was evaluated to String.Empty.
1164 * InternalLoggerException.cs:
1165 * InvalidProjectFileException.cs: Added LinkDemand before
1167 * ConsoleLogger.cs: Changed "" to String.Empty.
1168 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1169 with change to generics).
1170 * Project.cs: Made Build () throw more meaningful exception.
1172 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1174 * Target.cs: Reformatted.
1175 * TaskEngine.cs: Removed redundant code.
1176 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1177 * Engine.cs: Made BuildProjectFile () load project file if it's not
1180 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1182 * ConditionRelationalExpression.cs: Change comparers to case
1184 * ImportCollection.cs: Add NotImplementedExceptions.
1185 * BuildPropertyGroup.cs: Reformatted a bit.
1186 * BuildProperty.cs: The same.
1187 * Project.cs: Moved evaluation of imports before evaluation of
1188 properties. This may "work" until importing projects is redesigned but
1189 probably isn't correct.
1191 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1193 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1195 * BuildItemGroup.cs: Change return to continue.
1197 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1199 * ConditionParser.cs: Copyright note.
1200 * ExpressionCollection.cs: Fixed arrays passing.
1202 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1204 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1205 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1206 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1207 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1209 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1211 * Token.cs: Changed names: removed "than".
1212 * ConditionRelationalExpression.cs: Added.
1213 * ConditionFactorExpression.cs: Added.
1214 * BuildItemGroup.cs: Changed Condition property return value to return
1215 String.Empty instead of null.
1216 * ConditionParser.cs: Added support for parsing relational expressions
1218 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1219 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1220 and CanEvaluateToBool (), CanEvaluateToNumber () and
1221 CanEvaluateToString ().
1222 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1223 appropriately to ConditionExpression base class.
1224 * ConditionTokenizer.cs: Added null check and changed names in enums:
1226 * ConditionNotExpression.cs: Added.
1227 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1228 * Project.cs: Added checks for condition.
1230 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1232 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1233 ConditionalParser.cs: Changed name,
1235 * ConditionExpression.cs: Added Evaluate ().
1236 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1237 * BatchingImpl.cs: Added check if task should be executed.
1239 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1241 * UsingTask.cs: Changed properties to return null on empty attribute.
1242 * UsingTaskCollection.cs: Added object to SyncRoot.
1243 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1245 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1247 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1248 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1250 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1252 * Utilities.cs: Implemented Escape ().
1253 * BuildItem.cs: Added null checks.
1254 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1255 * Project.cs: Commented out redundant Evaluate ().
1256 * BuildChoose.cs: Minor changes.
1258 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1260 * Token: Added new few missing tokens.
1261 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1262 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1263 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1264 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1265 LiteralTokenizer.cs:
1266 Removed literal expression parsing based on tokenizer and
1267 parser. It needs to be done by regex.
1269 Moved tokenizer to ConditionalTokenizer.cs.
1271 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1273 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1274 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1275 methods converting reference to string from ToString () to
1276 ConvertToString () to avoid mistakes like using ToString () provided
1279 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1281 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1282 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1283 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1284 OldExpression and changed To* functions to one ConvertTo ().
1285 * TaskEngine.cs: Fixed PublishOutput ().
1286 * OldExpression.cs: Added. It will be temporarily used before
1287 LiteralExpression will be written using Tokenizer.
1288 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1289 ExpressionParseException.cs, LiteralExpression.cs: Added.
1291 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1293 * ImportedProject.cs: Removed warning.
1294 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1297 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1299 * Project.cs: Removed unnecessary variable.
1300 * Engine.cs: Added fixme.
1302 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1304 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1305 class (Mono.XBuild.Utilities.ReservedNameUtils).
1307 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1309 * BuildTask.cs: Removed unnecessary variable.
1310 * Engine.cs: Added logging of the build start.
1311 * Project.cs: Removed unnecessary variable.
1313 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1315 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1317 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1319 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1321 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1323 * BuildItem.cs: Fix typo?
1325 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1327 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1328 Engine.cs, Project.cs: Coding style fixes.
1330 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1332 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1334 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1336 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1337 to pass tests. Wrote serialization constructor.
1338 * Engine.cs, Project.cs: Global engine and project unloading, test and
1341 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1343 * UsingTask.cs: Formatting changes.
1345 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1347 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1348 to lists instead of hashtables.
1349 * Import.cs: Cleaned up, moved importing from Project.cs
1350 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1351 * Engine.cs: Cleaned up properties.
1352 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1353 Separated evaluation and loading.
1355 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1357 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1358 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1359 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1360 binding and evaluation, merge xml binding in constructors.
1361 * DirectoryScanner.cs: Includes CAN be empty.
1362 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1363 * ConsoleLogger.cs: Fix compilation warning.
1365 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1367 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1369 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1371 * Engine.cs: API cleanup.
1373 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1375 * Project.cs: Cleaned up add.
1376 * Expression.cs: Hacked to transform \ and / to path separators.
1377 * BuildPropertyGroup.cs: Small cleanup.
1378 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1381 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1383 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1384 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1386 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1387 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1388 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1390 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1391 * TaskElement.cs: Temporarily removed.
1392 * Xml.cs: Changed to static.
1394 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1396 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1397 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1398 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1399 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1400 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1401 IBuildPropertyGroupCollection.cs: Removed.
1403 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1405 * BuildItem.cs: Removed IBuildItem references.
1406 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1407 IBuildItemGroup references. Changed Evaluate to internal.
1408 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1409 reference and hidden constructors.
1410 * BuildProperty.cs: Removed IBuildProperty reference.
1411 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1412 IBuildPropertyGroup references. Changed Evaluate to internal.
1413 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1414 reference and hidden constructors.
1415 * ConsoleLogger.cs: Updated names of event handlers.
1416 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1417 Escape. Added UnloadAllProjects () and UnloadProject ().
1418 * FileLogger.cs: Removed ApplyParameter ().
1419 * GroupingCollection.cs: Hidden.
1420 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1421 * ItemPropertyGroupingBase.cs: Commented.
1422 * ProcessingPass.cs: Hidden.
1423 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1425 * Target.cs: Removed ITarget reference.
1426 * TargetCollection.cs: Removed ITargetCollection reference.
1427 * TaskElement.cs: Removed ITaskElement reference.
1428 * TaskEngineAssemblyResolver.cs: Hidden.
1429 * Utilities.cs: Made static class, removed CheckPath (),
1430 ValidateCulture (), GetSupportedCultures () and added Escape ().
1432 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1434 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1437 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1439 * Project.cs: Added MonoTODO attributes.
1440 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1441 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1442 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1443 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1444 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1445 BuildItemGroup.cs, InvalidProjectFileException.cs,
1446 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1447 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1448 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1449 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1450 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1451 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1452 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1453 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1454 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1455 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1456 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1457 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1459 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1461 * TaskDatabase.cs: Change Shared to Framework.
1462 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1463 CaseInsensitiveHashCodeProvider
1465 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1467 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1468 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1471 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1473 * InternalLoggerException.cs: Changed protected fields to private.
1475 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1477 * Engine.cs: Added check for globalProperties.
1478 * Project.cs: Added using path from importedProject.FullFileName when
1479 adding UsingTask elements.
1481 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1483 * TaskElement.cs: Changed ReflectedType to PropertyType.
1484 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1487 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1489 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1491 * BuildProperty.cs: Organized PropertyType enum.
1492 * Engine.cs: Added setting CommandLine PropertyType of global
1495 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1497 * InvalidProjectFileException.cs: Changed Message property.
1498 * ChangeType.cs (TransformToString): Added separator between items.
1499 * TaskEngineAssemblyResolver.cs: Formatting.
1501 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1503 * DirectoryScanner.cs: Added.
1504 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1505 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1506 * Project.cs: Removed Evalute* ().
1508 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1510 * Target.cs: Formatting.
1511 * Expression.cs: Added check if array == null.
1512 * BuildItem.cs: Removed 'break' to remove warnings.
1513 * ConsoleLogger.cs: Formatting.
1514 * Engine.cs: Added handling of default target(s).
1515 * Project.cs: Added handling of default target(s).
1517 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1519 * TaskElement.cs: Added check for parameters.
1520 * Target.cs: Added logging of target skipping.
1521 * Expression.cs: Changed returning object[] to string[], bool[]... in
1523 * ItemReference.cs: Fixed for item references without custom
1525 * BatchingImpl.cs: Added real inputs/outputs checking.
1526 * Engine.cs: Moved global properties setting.
1527 * Project.cs: Moved global properties setting.
1529 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1531 * Target.cs: Added checks for target existence.
1532 * BuildItemGroup.cs: Changed to use transforms.
1533 * MetadataReference.cs: Wrote real implementation.
1534 * ItemReference.cs: Rewritten to use transforms.
1535 * BuildItem.cs: Changes for transforms and metadata.
1536 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1538 * Project.cs: Fixed project importing.
1539 * ImportedProject.cs: Changed to throw exceptions instead of returning
1542 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1544 * Engine.cs: Removed FIXME.
1545 * Project.cs: Splitted ProcessElements and added project importing.
1546 * ImportedProject.cs: Rewritten.
1548 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1550 * TaskElement.cs: Added getting of objects of every type.
1551 * BuildItemGroup.cs: Added ToITaskItemArray ().
1552 * Expression.cs: Implemented part that is not using metadata.
1553 * ItemReference.cs: Implemented parsing item references. Need to fix
1555 * BuildItem.cs: Fixed ToITaskItem ().
1556 * PropertyReference.cs: Implemented parsing property references. This
1557 also needs validity checking.
1559 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1561 * TaskElement.cs: Added Output element handling.
1562 * Target.cs: Cleaned up.
1563 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1564 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1565 ItemReference.cs, ChangeType.cs: Added.
1566 * BuildItem.cs: Added creating BuildItem from TaskItem.
1567 * BuildPropertyGroup.cs: Small changes.
1568 * BatchingImpl.cs: Fixed to return real task execution result.
1569 * BuildProperty.cs: Fixed FinalValue property.
1570 * Engine.cs: Reformatted logging.
1571 * Project.cs: Added check to EvaluateProperty.
1573 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1575 * TaskElement.cs: Added part of execution engine.
1576 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1577 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1578 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1579 * BuildItem.cs: Added handling of built-in metadata and referencing
1580 Items by name not FullName.
1581 * BatchingImpl.cs: Added temporary task "batching".
1582 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1583 * Project.cs: Added Evaluate. It will be moved to separate class.
1585 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1587 * EventSource.cs, Engine.cs: Added CriticalEvents.
1588 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1589 Project.cs: Added some support for items.
1590 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1592 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1594 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1597 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1599 * BatchingImpl.cs: Added.
1600 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1601 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1602 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1603 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1604 GroupingCollection.cs: Updated.
1606 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1608 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1609 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1610 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1611 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1612 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1613 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1614 InternalLoggerException.cs, InvalidProjectFileException.cs,
1615 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1616 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1617 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1618 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1619 Initial check-in of implementations.
1621 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1623 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1624 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1625 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1626 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1627 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1628 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1629 Initial check-in of interfaces and a syntax file, real classes are
1630 changing a lot so I'll wait a moment with checking them in.