1 2010-06-04 Ankit Jain <jankit@novell.com>
3 * Import.cs (EvaluateProjectPath): Add a hack to support multiple
4 msbuild extension paths. Paths can be specified via the environment
5 variable - $MSBuildExtensionsPath . ~/.config/xbuild/tasks is also
6 checked for extensions, besides the default location.
7 This explicitly looks for a "$(MSBuildExtensionsPath)" in the import
8 expression and tries to replace that with possible paths, till it
9 finds the file. In rest of the project, the property would resolve
10 to its single default value.
12 2010-06-03 Ankit Jain <jankit@novell.com>
14 * Engine.cs (GetLoadedProject): Return null if project not found.
15 Based on a patch by Dale Ragan <dale.ragan@sinesignal.com> .
17 2010-05-28 Ankit Jain <jankit@novell.com>
20 * DirectoryScanner.cs (ProcessInclude): Set %(RecursiveDir) only if
21 the '**' wildcard was found in the original Include.
23 2010-04-10 Ankit Jain <jankit@novell.com>
25 * Project.cs (InitializeProperties): Set MSBuildBinPath to the current
28 2010-04-10 Ankit Jain <jankit@novell.com>
30 * TaskEngine.cs (Prepare): Throw InvalidProjectFileException instead of a generic
33 2010-04-10 Ankit Jain <jankit@novell.com>
35 * ConsoleLogger.cs (EventsToString): If the target being executed is
36 from an imported file, then show that.
38 2010-04-10 Ankit Jain <jankit@novell.com>
40 * Project.cs: Add property MSBuildExtensionsPath32, used by silverlight
43 2010-04-07 Ankit Jain <jankit@novell.com>
45 * ConsoleLogger.cs: Dump items and properties when a project starts
46 to build. Useful for debugging.
47 * Engine.cs (LogProjectStarted): Set the properties and items also,
48 for the project started event.
49 * Project.cs (EvaluatedPropertiesAsDictionaryEntries): New.
50 (EvaluatedItemsByNameAsDictionaryEntries): New. Required for
53 2010-04-03 Ankit Jain <jankit@novell.com>
55 * BuildEngine.cs: Implement IBuildEngine2 instead of
57 * BuildTasks.cs: Use the new extension methods for logging.
58 (InitializeTask): Emit a message informing about the assembly
59 from which the task is being loaded. Emit a useful debug message
60 incase of a InvalidCastException.
61 * Engine.cs: Add missing methods, constructors and properties related
62 to ToolsVersion support. Setup a default set of Toolsets.
63 Keep separate taskdbs' per ToolsVersion. The common tasks
64 would come from different *.tasks file, and use different
66 (DefaultToolsVersion): Correctly set this based on the profile.
67 * LogExtensions.cs: New. Extension methods on Engine, for logging.
68 * Project.cs: Add missing methods/contructors/properties related
69 to ToolsVersion support. Add reserved properties -
70 MSBuildToolsPath and MSBuildToolsVersion .
72 * ToolsetCollection.cs: New.
73 * ToolsetDefinitionLocations.cs: New.
75 2010-03-04 Ankit Jain <jankit@novell.com>
77 * BuildEngine.cs (LogErrorEvent): Log as warning, if
78 ContinueOnError==true, and log a corresponding message.
79 * TargetBatchingImpl.cs: Refactor to share code between the
80 batched and unbatched case. If a task fails and
81 ContinueOnError==true, then ignore the failed state.
83 2010-02-19 Ankit Jain <jankit@novell.com>
85 * BuildItem.cs: Track api changes.
86 (SetMetadata): Allow RecursiveDir to be set, this is set by
88 * DirectoryScanner.cs (ProcessInclude): Set RecursiveDir metadata.
90 2010-02-19 Ankit Jain <jankit@novell.com>
92 * Import.cs (Evaluate): Add param @ignoreMissingImports.
93 * Project.cs (Load*): Add overloads with param @projectLoadSettings.
94 (Log*): Mark internal.
95 * ProjectLoadSettings.cs: New.
97 2010-02-04 Ankit Jain <jankit@novell.com>
100 * ConditionFunctionExpression.cs (Exists): Check for directory also.
102 2009-12-22 Ankit Jain <jankit@novell.com>
105 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
106 * BuildItem.cs: Track api changes.
108 2009-12-02 Ankit Jain <jankit@novell.com>
111 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
112 being iterated over. Patch by Laurent Etiemble
113 <laurent.etiemble@gmail.com>
115 2009-11-28 Ankit Jain <jankit@novell.com>
118 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
119 * Project.cs (Batch): New. Contains the perBatchItems and the
120 commonItems for the batch.
121 Use a stack of batches, instead of directly setting the current
125 (SetBatchedItems): Make this private.
126 (GlobalProperties.set): Re-evaluating the project is not required
128 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
130 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
132 * Target.cs (Build): Reset the current batch to nil before evaluating
133 and building this target.
135 2009-11-28 Ankit Jain <jankit@novell.com>
137 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
138 available in either perBatchItemsByName or commonItemsByName
139 or the evaluatedItemsByName collection. Allows the use of
140 items which are not batched, but are consumed in case of batching.
142 2009-11-26 Ankit Jain <jankit@novell.com>
144 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
145 refs also, for Inputs and Outputs.
147 2009-10-13 Ankit Jain <jankit@novell.com>
149 * DirectoryScanner.cs:
150 * ExpressionCollection.cs:
151 * GroupingCollection.cs:
153 * Target.cs: Fix warnings.
155 2009-10-12 Ankit Jain <jankit@novell.com>
157 * Target.cs (TargetFile): New. Gives the name of the file
158 containing the target definition.
159 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
160 return this for ProjectFileOfTaskNode.
161 * BuildTask.cs (LogTaskStarted):
162 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
164 (InitializeTask): Set BuildEngine's task file to parent target's
166 * Engine.cs (LogProjectStarted): Incase of default targets, set
167 TargetNames to String.Empty .
168 * TargetBatchingImpl.cs (LogTargetStarted):
169 (LogTargetFinished): Use target.TargetFile for the event.
171 * ConsoleLogger.cs: Keep a stack of project/target/task being
172 executed. And corresponding list of errors and warnings.
173 (EventsToString): Stringifies the current "stack", to be used
174 as key to the table of errors/warnings and for show messages
175 at the end of the build.
177 2009-10-12 Ankit Jain <jankit@novell.com>
179 * Project.cs (Load): Add argument checks.
181 2009-10-11 Ankit Jain <jankit@novell.com>
183 * ConsoleLogger.cs (no_colors): Rename to ..
184 (use_colors): .. this. Fix the case when XBUILD_COLORS
187 2009-10-11 Ankit Jain <jankit@novell.com>
189 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
190 Support 'XBUILD_COLORS' to set colors for errors, warnings,
193 2009-10-10 Ankit Jain <jankit@novell.com>
195 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
196 becomes true, don't reset it. We are looking for "atleast one
199 2009-10-08 Ankit Jain <jankit@novell.com>
201 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
202 directly using DirectoryInfo ("z:"), that doesn't return
205 2009-10-08 Ankit Jain <jankit@novell.com>
207 * DirectoryScanner.cs: Handle absolute paths. Fix to work
208 correctly on windows. Change order of adding paths to match
209 msbuild, useful to have.
211 2009-10-08 Ankit Jain <jankit@novell.com>
213 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
214 of the 'Output' element also.
215 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
217 2009-10-07 Ankit Jain <jankit@novell.com>
219 * ConsoleLogger.cs: Mark build as failed, if any project failed.
221 2009-10-06 Ankit Jain <jankit@novell.com>
223 * ConsoleLogger: Improve error reporting. Don't count failed task,
224 target or project as another error. Show "errors" after "warnings",
225 more useful to the user.
226 * Project.cs (BuildTarget): Log error instead of using CWL.
228 2009-10-03 Ankit Jain <jankit@novell.com>
230 * Project.cs (OS): New.
231 (InitializeProperties): Set 'OS' as a pre-defined property, set to
232 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
234 2009-10-02 Ankit Jain <jankit@novell.com>
236 * Expression.cs (Parse): Don't change '/' to '\\', not required.
238 2009-10-01 Ankit Jain <jankit@novell.com>
240 * Project.cs (AddImport): Show the correct source file name, when
241 the import is in the main project file.
243 2009-10-01 Ankit Jain <jankit@novell.com>
246 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
247 the full path of the imported project here itself, instead of ..
249 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
251 * Project.cs (AddImport): Don't process if condition is false.
252 Warn if a circular reference is detected, and ignore the import.
254 2009-09-29 Ankit Jain <jankit@novell.com>
256 * GroupingCollection.cs (Evaluate): Mark internal.
257 * Project.cs (AddImport): Only evaluate the properties,
258 till before the import.
260 2009-09-29 Ankit Jain <jankit@novell.com>
262 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
263 the project xml, as returned Xml*Reader normalizes the newlines.
264 Instead directly use the TextReader with XmlDocument.Load ().
266 2009-09-27 Ankit Jain <jankit@novell.com>
268 * ConditionParser.cs: Show the condition being parsed in the
271 2009-09-26 Ankit Jain <jankit@novell.com>
273 * Expression.cs: Allow '-' in item, property and metadata names.
275 2009-09-26 Ankit Jain <jankit@novell.com>
277 * Project.cs (Evaluate): Split into this and ..
278 (PrepareForEvaluate): .. this.
279 (AddImport): Evaluate the current set of properties/items etc,
280 before processing the imported project. Honor the Condition
282 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
284 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
285 * BuildItemGroup.cs (Evaluate): Evaluate only once.
286 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
288 2009-09-26 Ankit Jain <jankit@novell.com>
290 * Project.cs: Get InitialTargets from the imported projects also.
291 The combined list of targets are executed, in the order they were
293 DefaultTargets are also read in from imported projects, and the first
294 non-empty DefaultTargets found is used.
296 2009-09-25 Ankit Jain <jankit@novell.com>
298 * Project.cs (BuildTarget): Handle skipped targets.
300 2009-09-25 Ankit Jain <jankit@novell.com>
302 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
303 InvalidProjectFileException with useful error.
305 2009-09-24 Ankit Jain <jankit@novell.com>
307 * Project.cs (Load): Emit the .sln.proj file only if env var
308 XBUILD_EMIT_SOLUTION is set.
310 2009-09-24 Ankit Jain <jankit@novell.com>
312 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
314 2009-09-24 Ankit Jain <jankit@novell.com>
316 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
319 2009-09-10 Ankit Jain <jankit@novell.com>
321 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
322 preserved, so use ConvertTo ITaskItem, rather than string.
323 Ensure that the new items have the metadata from references _in_
324 Include, and the metadata of _this_ builditem.
325 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
326 (MatchedFilenames): Rename to ..
327 (MatchedItems): .. this, and change type of array of ITaskItem.
328 Ensure that metadata of items in Includes are retained in the
331 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
332 param. If separator is present, then just return a "Join'ed"
333 string as the single task item.
334 * ItemReference.cs: Track api changes.
336 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
337 as we need separate task items.
339 2009-09-01 Ankit Jain <jankit@novell.com>
342 * Project.cs (BuildTarget): Move caching of target outputs to ..
343 * Target.cs: .. here. Move LogTargetSkipped also here.
344 Ensure that caching happens for target dependencies also.
346 2009-09-01 Ankit Jain <jankit@novell.com>
348 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
351 2009-09-01 Ankit Jain <jankit@novell.com>
353 * Expression.cs (ParseOptions): New enum. Replace the bool params
354 of exression.Parse with this. Add option to control expansion of
356 (CopyToExpressionCollection): Track api changes.
358 Update all expr.Parse calls to use the new enum.
359 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
360 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
362 * BatchingImplBase.cs: Track api changes. Allow metadata refs
364 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
365 * ItemReference.cs: Allow metadata in transforms.
366 * TaskEngine.cs: Allow metadata refs.
368 * MetadataReference.cs (.ctor): Add a 'original string' param.
370 2009-08-29 Ankit Jain <jankit@novell.com>
372 * Expression.cs (ExpressionOptions): New.
374 Introduce a ExpressionOptions argument to all ConvertTo*
375 methods. Implement the rule: in evaluation phase, expand
376 all items completely, but dont expand item refs in properties.
377 At other times, expand the item refs in the properties.
378 See comments in Expression.cs, for a full explanation.
379 * BuildItem.cs: Track api changes.
380 * BuildItemGroup.cs: Likewise.
381 * BuildProperty.cs: Track api changes. Handle self-references.
382 * BuildTask.cs: Track api changes.
383 * IReference.cs: Add ExpressionOptions param.
384 * ItemReference.cs: Track api changes.
385 * PropertyReference.cs: Likewise.
386 * MetadataReference.cs: Likewise.
387 * ExpressionCollection.cs: Track api changes. Add support for
388 converting all primitive types and DateTime, instead of a fixed
390 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
391 * TaskBatchingImpl.cs: Handle the case when batching is required,
392 but no items are available.
394 * TaskEngine.cs: Throw on unsupported types. Correctly handle
395 properties in case of empty values.
397 2009-08-26 Ankit Jain <jankit@novell.com>
399 * Expression.cs: Correctly handle a item reference with transform
400 when allowItems is false. If item ref is ignored, then the transform
401 will get incorrectly matched as a metadata ref.
402 * ItemReference.cs (.ctor): Add a @original_string param.
404 2009-08-26 Ankit Jain <jankit@novell.com>
406 * Utilities.cs (UnescapeFromXml): New. From md.
407 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
408 of the property element.
410 2009-08-26 Ankit Jain <jankit@novell.com>
412 * BuildProperty.cs (ConvertToString): New.
413 (ConvertoToITaskItemArray): New. Parse the property value.
414 * PropertyReference.cs (ConvertToString): Use BuildProperty's
416 (ConvertoToITaskItemArray): Likewise.
418 2009-08-21 Ankit Jain <jankit@novell.com>
420 * Engine.cs (EndProjectBuild): Use the @succeeded argument
421 instead of hardcoding 'true'.
422 * Target.cs (Build): Add an overload to return executeOnErrors
423 value for the target executed. If building dependencies fails,
424 and executeOnErrors is true, then execute OnError tasks.
425 Add the new param to ..
426 (BuildDependencies): this, ..
428 (GetDependencies): Improve error message and variable name.
429 (ExecuteOnErrors): Honor OnError tag's Condition also.
430 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
432 2009-08-20 Ankit Jain <jankit@novell.com>
435 * Project.cs (Load): Add support for loading .sln files.
437 2009-08-20 Ankit Jain <jankit@novell.com>
439 * BuildTask.cs (Execute): Use task_logger only after the task
440 has been initialized. Catch and report task loading errors.
441 * Target.cs (DoBuild): Dont rethrow the exception, and emit
442 the stacktrace as a low importance message.
444 2009-08-18 Ankit Jain <jankit@novell.com>
446 * BatchingImplBase.cs: Make the item name lookups and metadata be case
448 * TaskDatabase.cs: Likewise.
449 * TaskEngine.cs: Make property name looks, case insensitive.
451 2009-08-09 Miguel de Icaza <miguel@novell.com>
453 * ConsoleLogger.cs: Change the format of the error and warnings
454 strings to work when invoked inside Emacs by not rendering the
455 column if available, by using lowercase "error"/"warning" strings
456 instead of camelcased versions and to not have unnecessary padding.
458 2009-07-31 Ankit Jain <jankit@novell.com>
460 * ConsoleLogger.cs: Keep track of all the errors and warnings
461 and show them at the end.
463 2009-07-31 Ankit Jain <jankit@novell.com>
465 * Target.cs (Build): Log a message if a target is skipped.
467 * BuildTask.cs (Execute): Log error if task execution fails.
469 2009-07-30 Ankit Jain <jankit@novell.com>
471 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
472 v2.0, this will change when multi-targeting lands.
474 2009-07-30 Ankit Jain <jankit@novell.com>
476 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
477 'MSBuildProjectName' properties.
479 2009-07-28 Ankit Jain <jankit@novell.com>
481 * TaskEngine.cs (Prepare): Fix formatting mistake.
482 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
483 fails. Also, emit result of project at Normal verbosity level.
485 2009-07-23 Ankit Jain <jankit@novell.com>
488 * Project.cs (ExtensionsPath): New.
489 (InitializeProperties): Set "MSBuildExtensionsPath" property.
491 2009-06-12 Ankit Jain <jankit@novell.com>
494 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
495 itemref is allowed if the prev/next element is ";".
497 2009-06-12 Ankit Jain <jankit@novell.com>
499 * Utilities.cs (FromMSBuildPath): Return null if the path contains
500 "drive:" only on windows.
502 2009-06-07 Ankit Jain <jankit@novell.com>
504 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
507 2009-05-29 Ankit Jain <jankit@novell.com>
509 Correctly handle global properties. Correctly log
510 project/build events.
512 * BuildPropertyGroup.cs (Clone): Implement.
513 * Engine.cs (globalProperties): Rename to ..
514 (global_properties): .. this.
515 (currentlyBuildingProjectsStack): New. Used to correctly
516 log and raise project/build start/finish events.
517 (BuildProjectFile): Override any project global properties
518 with explicitly specified ones, here in the param @globalProperties.
519 Mark project for reevaluation, which will update the engine's
520 global properties also.
521 Reset both engine and project's old global properties at the end.
522 (UnregisterAllLoggers): Log build finished only if we are currently
524 (StartBuild): Rename to ..
525 (StartProjectBuild): .. this. Keeps track of the projects being built
526 in the new stack, and logs project and build events accordingly.
527 (EndProjectBuild): New. Uses the stack to keep track of projects
528 finishing builds, and raises project and build events accordingly.
529 (LogProjectStarted): Move here from Project.cs
530 (LogProjectFinished): Likewise.
532 * Project.cs (Build): Log start of project build.
533 Set current directory to the project file's dir, and reset at end.
534 (BuildInternal): Don't log here, its done in Build.
535 (BuildTarget): Already built targets are keyed by the set of global
536 properties that they were built with.
537 (GlobalPropertiesToString): New.
538 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
539 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
540 (Evaluate): Remove built targets only if we are currently building and
541 build settings are None.
542 Merge project's global properties with those of the parent engine.
543 Add missing properties from engine's global properties.
544 (LogTargetSkipped): Fix format string, add the reqd argument.
546 2009-05-29 Ankit Jain <jankit@novell.com>
548 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
549 (HasTrailingSlash): New.
551 2009-05-12 Ankit Jain <jankit@novell.com>
553 * Project.cs (.ctor): Init timeOfLastDirty.
555 2009-05-05 Miguel de Icaza <miguel@novell.com>
557 * Contribution from Martin Brenn to fix #498154.
559 2009-04-27 Ankit Jain <jankit@novell.com>
562 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
563 one passed as argument.
565 2009-04-27 Ankit Jain <jankit@novell.com>
567 * TaskEngine.cs (Prepare): Emit a useful error message property value
568 can't be converted to required type.
570 2009-04-27 Ankit Jain <jankit@novell.com>
572 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
573 as valid true values for bool, and corresponding for false.
575 2009-03-27 Jonathan Chambers <joncham@gmail.com>
577 * BuildWhen.cs: Add basic implementation.
578 * BuildChoose.cs: Add basic implementation.
579 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
580 EvaluatedItemsIgnoringCondition.
581 * GroupingCollection.cs: Add evaluation of BuildChoose items.
583 2009-03-26 Jonathan Chambers <joncham@gmail.com>
585 * TaskDatabase.cs (RegisterTask): Search for class by name
586 if task was not found using GetType (which uses namespace).
588 2009-02-26 Ankit Jain <jankit@novell.com>
590 * Target.cs: Handle target with no tasks. Log errors.
592 2009-02-24 Ankit Jain <jankit@novell.com>
594 Lazily load UsingTask tasks.
595 * UsingTask.cs (Evaluate): Register 'this' with task database,
596 but don't load it yet. Register only if condition evaluates to true.
597 Move the load logic to ..
598 (Load): .. here. Register with the specified task database.
599 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
600 in a table keyed by task name, but don't load it yet.
601 (GetTypeFromClassName): Try to load UsingTask if task is not already
602 loaded. Move loading logic to ..
603 (GetTypeFromClassNameInternal): .. here.
604 (CopyTasks): Copy the usingTasks table also.
606 2009-02-23 Ankit Jain <jankit@novell.com>
608 * BuildItem.cs (AddMetadata): Allow overwriting older values.
610 2009-02-22 Ankit Jain <jankit@novell.com>
612 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
613 instead of XmlElement. Eg. XmlComment
615 2009-02-21 Ankit Jain <jankit@novell.com>
617 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
618 * Project.cs (Load): Use FromMSBuildPath on the path.
619 (InitializeProperties): Set "MSBuildToolsPath" also.
621 2009-02-20 Ankit Jain <jankit@novell.com>
624 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
625 transforms) in conditions.
626 * ConditionParser.cs: Parse unquoted item, property references.
627 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
628 * Token.cs (Token.ToString): Override.
629 (TokenType.Transform): Uncomment.
631 2009-02-12 Jonathan Chambers <joncham@gmail.com>
633 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
634 no XmlElement.InnerText. This allows properties to be additional
637 2009-02-01 Ankit Jain <jankit@novell.com>
639 * BuildEngine.cs (BuildProjectFile): Use
640 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
641 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
642 built. Move logging of project start/finish to ..
643 * Project.cs: .. here. Build a target only if hasn't been built already.
644 Keep track of target outputs, and return those even if an already built
645 target has been invoked again.
646 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
648 2009-01-31 Ankit Jain <jankit@novell.com>
650 * BatchingImpl.cs: Split into ..
651 * BatchingImplBase.cs: .. this,
652 * TaskBatchingImpl.cs: .. this ..
653 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
655 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
656 (Log*): Move to TargetBatchingImpl .
660 2009-01-30 Ankit Jain <jankit@novell.com>
662 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
665 2009-01-29 Ankit Jain <jankit@novell.com>
667 * BuildItem.cs (child_items): Change type from BuildItemGroup to
669 (HasParent): Rename to ..
670 (HasParentItem): .. this.
671 (ParentItemGroup): Add setter.
673 * BuildItemGroup.cs (.ctor): Add overload with @project param.
675 (AddItem): Correctly set the ParentItemGroup for new build items.
676 (ParentProject): Add setter.
677 * Project.cs: Set the project for new BuildItemGroup instances.
678 * TaskEngine.cs (PublishItemGroup): Likewise.
680 2009-01-06 Ankit Jain <jankit@novell.com>
682 * Project.cs (Build): Honor InitialTargets list.
684 2009-01-06 Ankit Jain <jankit@novell.com>
686 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
687 the property type also.
688 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
691 2009-01-06 Ankit Jain <jankit@novell.com>
693 * Project.cs (Build): Correctly handle null targetNames argument.
695 2009-01-06 Ankit Jain <jankit@novell.com>
697 * Engine.cs (LogProjectStarted): Add a null check.
699 2009-01-01 Ankit Jain <jankit@novell.com>
701 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
702 * ChangeType (ToBuildItemGroup): Add 'split' param.
704 * Expression.cs (Parse): Add a new overload with a 'split' param.
705 * ExpressionCollection.cs (Add): Add new overload for IReference,
706 remove the ones for Item/Metadata/PropertyReference.
707 (ConvertToArray): Implement correctly.
708 (ConvertToString): Track api changes.
709 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
710 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
711 (AddItemsToArray): New.
712 (ConvertToITaskItemArrayFromString): Refactor a bit.
713 (ThrowCantConcatError): New.
714 * ItemReference.cs: Update.
715 * MetadataReference.cs: Update.
716 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
718 * BuildPropertyGroup.cs: Track api changes.
719 * TaskEngine.cs (PublishOutput): Improve exception message.
720 * Project.cs (DoLoad): Improve exception message. Add a null check.
722 2008-12-30 Ankit Jain <jankit@novell.com>
724 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
725 metadata values for unqualified references.
726 (BuildItemGroupToITaskItemArray): Rename to ..
727 (BuildItemGroupToITaskItems): .. this.
730 2008-12-18 Ankit Jain <jankit@novell.com>
732 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
734 2008-12-17 Ankit Jain <jankit@novell.com>
736 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
737 only one instance of unique metadata value is required.
739 2008-11-22 Ankit Jain <jankit@novell.com>
741 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
743 * MetadataReference.cs (ConvertToITaskItemArray): New.
744 * Project.cs (GetAllItemGroups): New.
746 2008-11-21 Ankit Jain <jankit@novell.com>
748 * BatchingImpl.cs: Add task batching implementation.
749 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
750 * ExpressionCollection.cs (Count): New.
751 (ConvertToString): Handle MetadataReference.
752 * ItemReference.cs (ConvertToString):
753 (ConvertToITaskItemArray): Use the batching api.
755 * MetadataReference.cs (ConvertToString): New.
757 * Project.cs: Add api for accessing batched items and metadata.
758 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
761 2008-10-01 Ankit Jain <jankit@novell.com>
763 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
764 (BuildProjectFile): If filename is null (project.LoadXml) then use
766 * BuildTask.cs (InitializeTask): Track api change.
767 * Expression.cs (Parse): Skip empty entries in the expression.
769 2008-09-24 Ankit Jain <jankit@novell.com>
771 * Engine.cs: Add argument checks.
772 * Project.cs: Likewise.
774 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
776 * Project.cs (Build): Add outputs to targetOutputs.
778 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
780 * ExpressionCollection.cs (ConvertToArray): Simplify.
782 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
784 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
785 simplified. It still needs tests and refactoring.
787 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
789 * BuildEngine.cs (BuildProjectFile): Don't crash on null
792 * Target.cs: Add Outputs property.
794 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
796 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
797 (). Support condition.
799 * BatchingImpl.cs (BatchBuildTask): Simplify.
801 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
803 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
806 * ConditionFunctionExpression.cs: Removed warnings.
808 * BuildTask.cs (Execute): Write exceptions to std err (they should be
809 logged but it's better than swallowing).
811 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
813 * ConditionTokenizer.cs: Add Putback ().
815 * ConditionParser.cs: Add parsing of functions.
817 * ConditionFunctionExpression.cs: Add.
819 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
821 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
822 set property in persisted property group.
824 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
826 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
829 * ConsoleLogger.cs (TargetFinishedHandler)
830 (TaskFinishedHandler): Increment error count.
832 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
834 * BuildItem.cs (RemoveMetadata): Remove from XML.
835 (SetMetadata): Trigger project reevaluation.
837 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
839 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
842 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
844 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
845 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
846 BatchingImpl.cs, BuildProperty.cs: Track API changes.
848 * Expression.cs (Parse): Added allowItems parameter and made regexes
851 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
852 will try to import a.ext when given a.EXT.
854 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
856 * BuildItemGroup.cs: Store information saying what is the last item
857 group that contains build item name.
859 * Project.cs (Build): Pass empty array (build default targets).
861 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
863 * Token.cs: Commented Transform and LiteralSubExpression and added
866 * ConditionParser.cs: Removed redundant casts, rewrote
867 ParseFactorExpression () and added parsing of '!'.
869 * ConditionTokenizer.cs: Always skip whitespaces when getting next
870 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
871 Moved ReadChar () in front of all ifs.
873 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
875 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
876 from XML. (not to escape items that have parents twice).
878 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
880 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
881 (Project): Renamed to ParentProject.
883 * BuildItem.cs (ctor)
884 (CopyCustomMetadata): Add null check.
886 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
887 (RemoveProperty): Added null check.
889 * TargetCollection.cs (RemoveTarget): Added null check.
891 * Engine.cs (UnloadProject): Added null check.
893 * GroupingCollection.cs (Remove): Check if removed group belongs to
896 * Project.cs (AddNewItem): Implemented.
897 (RemoveItem): Reorganized.
898 (SetProjectExtensions): Added null check.
900 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
902 * BuildItemGroup.cs (Detach): Added.
904 (RemoveItemAt): Used Detach ().
906 * BuildItem.cs: Made FromXml and HasParent internal and added
907 ParentItem and ParentItemGroup properties (internal).
910 * GroupingCollection.cs (Remove): Used Detach ().
912 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
914 (GetEvaluatedItemsByNameIgnoringCondition)
915 (GetEvaluatedItemsByName)
916 (GetEvaluatedProperty): Reevaluate if needed.
918 (RemoveAllItemGroups)
919 (RemoveAllPropertyGroups): Implemented.
920 (DoLoad): Added closing of TextReader.
922 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
924 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
925 change but just mark that it needs it.
927 * Project.cs: Reevaluate when it needs reevaluation and one of
928 Evaluated* properties is used.
930 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
932 * Target.cs: Throw an exception when <OnError> is not last element in
935 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
937 * TargetCollection.cs: If a target is already there replace it with
940 * BuildProperty.cs: Added XmlElement property.
942 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
944 * ImportCollection.cs: Don't add imports that are already added.
946 * BuildItemGroup.cs: MonoTODOs.
948 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
949 condition can't be evaluated to bool.
951 * BuildPropertyGroup.cs (Evaluate): Simplify.
953 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
955 * BuildWhen.cs: Moved BindToXml () code to ctor.
957 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
958 property needed for removing groups.
960 * Engine.cs: Added StartBuild () that logs build start when Build ()
963 * GroupingCollection.cs: Added Remove () for item and property groups.
965 * Project.cs (AddNewImport): Implemented.
966 (AddNewItemGroup): Implemented.
967 (AddNewPropertyGroup): Implemented.
968 (AddNewUsingTaskFromAssemblyFile): Implemented.
969 (AddNewUsingTaskFromAssemblyName): Implemented.
970 (RemoveItemGroup): Implemented.
971 (RemovePropertyGroup): Implemented.
973 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
975 * BuildItemGroup.cs (Clear): Remove from XML.
977 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
978 to Project.EvaluatedProperties.
979 (Clear): Remove from XML.
981 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
983 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
986 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
988 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
989 Add () calls when processing a project from Import and
990 evaluate_iterator for evaluation.
992 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
994 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
995 and prepend relative directory of importing project to full path of
998 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1000 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1001 BuildItemGroupCollection.cs, Project.cs: Track API changes.
1003 * GroupingCollection.cs: Now it needs Project reference so added it.
1005 * BuildTask.cs: Formatting.
1007 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
1009 * ConditionParser.cs (ParseAndEvaluate): Added.
1011 * BuildItem.cs: Changed exception message.
1013 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1015 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1016 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
1017 GroupingCollection doesn't need Project reference.
1019 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
1021 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
1022 (Project.EvaluatedItems is a read only item group.)
1023 (ReplaceWith): Added.
1025 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
1026 global property group causes reevaluation of its project.
1028 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
1031 * OldExpression.cs: Removed.
1033 * BuildProperty.cs (Evaluate): Simplified.
1035 * ChangeType.cs (TemporaryTransform): Simplified.
1037 * BuildItem.cs: There are now 3 types of build items: from XML, having
1038 parent from XML, virtual. Added SplitParentItem ().
1040 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1042 * Utilities.cs: Added Unescape ().
1044 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
1045 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
1046 groups (at the moment just unescape).
1048 * Expression.cs (CopyToExpressionList): Unescape strings.
1050 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1052 * Target.cs (ctor): Added ImportedProject argument and removed
1054 (AddNewTask): Implemented.
1056 * TargetCollection.cs (AddNewTarget): Implemented.
1058 * Project.cs: Track API changes.
1060 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1062 * Target.cs (Build): Don't throw anything in case of error, just
1065 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
1068 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
1071 * BuildProperty.cs (ToString): Throw an exception if property is not
1073 (op_Explicit): Added a null check.
1075 * Engine.cs: Better error message.
1077 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
1078 IndexOutOfRangeException.
1080 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
1081 (MarkProjectAsDirty): Set time.
1083 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1085 * BuildItemGroup.cs (Clone): Throw exception.
1087 * Project.cs (Load): Throw InvalidProjectFileException if anything
1090 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1092 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
1093 and ConvertToITaskItemArray ().
1095 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1097 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
1098 classes that were public in Beta 2 and aren't used.
1100 * Expression.cs: Added replacement for parsing expressions char by
1101 char. It uses regexes to find item/property/metadata references in
1104 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1105 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1106 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1108 * ConditionRelationalExpression.cs: Formatting.
1110 * OldExpression.cs: Commented everything.
1112 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1113 parsing to Expression.
1115 * BuildItem.cs: Check if project is from XML in set_Condition and
1118 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1121 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1122 can evaluate expression in CanEvaluateToBool ().
1124 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1126 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1127 which item group is imported.
1129 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1131 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1133 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1134 BuildItemGroupCollection.cs: Little changes related to
1137 * ImportCollection.cs: Use GroupingCollection not an internal list.
1139 * Import.cs (Evaluate): Split to functions and check if
1140 EvaluatedProjectPath is empty.
1142 * GroupingCollection.cs, Project.cs: Move evaluation to
1143 GroupingCollection. Change algorithm to use 2 passes: first for property
1144 groups and imports and second for item groups.
1146 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1148 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1149 BuildItemGroup> not IDictionary.
1151 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1152 evaluated to false because we want to add every item to
1153 Project.EvaluatedItemsByNameIgnoringCondition.
1155 * Project.cs (Build): Don't throw an exception just return false.
1156 (GetEvaluatedProperty): Avoid NullReferenceException.
1157 (SetProjectExtensions): Implemented.
1159 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1161 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1163 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1164 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1165 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1167 * ImportCollection.cs: Added a note.
1169 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1171 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1173 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1174 (UsingTask[] array, int index)
1176 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1177 items to Project.EvaluatedItems in PublishItemGroup ();
1179 * BuildItemGroup.cs: Added [MonoTODO].
1181 * UsingTask.cs: Used expression for AssemblyFile to get around
1182 problems with '\' and '/'.
1184 * BuildItem.cs (ctor): Added null checks.
1185 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1186 (SetMetadata): Don't escape evaluatedMetadata and escape
1187 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1189 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1190 FromXml () instead of null checks.
1191 (SetProperty): Escape propertyValue when it is literal.
1193 * BuildProperty.cs: Changed exception message.
1195 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1197 (GetProjectExtensions): Implemented.
1199 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1201 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1202 GetParameterValue (), use expressions in ContinueOnError.
1203 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1204 instead of InvalidOperationException ().
1205 * ImportCollection.cs: Implement CopyTo ().
1206 * Target.cs: Remove redundant variables (XmlAttributes), return
1207 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1208 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1209 * Import.cs: Throw an exception when file does not exist.
1210 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1211 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1212 need to treat item as a token probably
1214 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1216 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1217 throw an exception).
1218 * BuildItemGroupCollection.cs: Changed exception types.
1220 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1222 * Engine.cs: Removed redundant cast.
1224 * UsingTaskCollection.cs:
1228 * TargetCollection.cs: Comment unused variable.
1229 * ConditionTokenizer.cs: Simplified checking if current token is a
1231 * Target.cs: Removed old code.
1233 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1235 * Target.cs: Changed "" to String.Empty.
1236 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1237 string was evaluated to String.Empty.
1238 * InternalLoggerException.cs:
1239 * InvalidProjectFileException.cs: Added LinkDemand before
1241 * ConsoleLogger.cs: Changed "" to String.Empty.
1242 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1243 with change to generics).
1244 * Project.cs: Made Build () throw more meaningful exception.
1246 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1248 * Target.cs: Reformatted.
1249 * TaskEngine.cs: Removed redundant code.
1250 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1251 * Engine.cs: Made BuildProjectFile () load project file if it's not
1254 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1256 * ConditionRelationalExpression.cs: Change comparers to case
1258 * ImportCollection.cs: Add NotImplementedExceptions.
1259 * BuildPropertyGroup.cs: Reformatted a bit.
1260 * BuildProperty.cs: The same.
1261 * Project.cs: Moved evaluation of imports before evaluation of
1262 properties. This may "work" until importing projects is redesigned but
1263 probably isn't correct.
1265 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1267 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1269 * BuildItemGroup.cs: Change return to continue.
1271 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1273 * ConditionParser.cs: Copyright note.
1274 * ExpressionCollection.cs: Fixed arrays passing.
1276 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1278 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1279 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1280 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1281 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1283 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1285 * Token.cs: Changed names: removed "than".
1286 * ConditionRelationalExpression.cs: Added.
1287 * ConditionFactorExpression.cs: Added.
1288 * BuildItemGroup.cs: Changed Condition property return value to return
1289 String.Empty instead of null.
1290 * ConditionParser.cs: Added support for parsing relational expressions
1292 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1293 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1294 and CanEvaluateToBool (), CanEvaluateToNumber () and
1295 CanEvaluateToString ().
1296 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1297 appropriately to ConditionExpression base class.
1298 * ConditionTokenizer.cs: Added null check and changed names in enums:
1300 * ConditionNotExpression.cs: Added.
1301 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1302 * Project.cs: Added checks for condition.
1304 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1306 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1307 ConditionalParser.cs: Changed name,
1309 * ConditionExpression.cs: Added Evaluate ().
1310 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1311 * BatchingImpl.cs: Added check if task should be executed.
1313 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1315 * UsingTask.cs: Changed properties to return null on empty attribute.
1316 * UsingTaskCollection.cs: Added object to SyncRoot.
1317 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1319 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1321 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1322 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1324 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1326 * Utilities.cs: Implemented Escape ().
1327 * BuildItem.cs: Added null checks.
1328 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1329 * Project.cs: Commented out redundant Evaluate ().
1330 * BuildChoose.cs: Minor changes.
1332 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1334 * Token: Added new few missing tokens.
1335 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1336 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1337 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1338 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1339 LiteralTokenizer.cs:
1340 Removed literal expression parsing based on tokenizer and
1341 parser. It needs to be done by regex.
1343 Moved tokenizer to ConditionalTokenizer.cs.
1345 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1347 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1348 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1349 methods converting reference to string from ToString () to
1350 ConvertToString () to avoid mistakes like using ToString () provided
1353 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1355 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1356 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1357 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1358 OldExpression and changed To* functions to one ConvertTo ().
1359 * TaskEngine.cs: Fixed PublishOutput ().
1360 * OldExpression.cs: Added. It will be temporarily used before
1361 LiteralExpression will be written using Tokenizer.
1362 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1363 ExpressionParseException.cs, LiteralExpression.cs: Added.
1365 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1367 * ImportedProject.cs: Removed warning.
1368 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1371 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1373 * Project.cs: Removed unnecessary variable.
1374 * Engine.cs: Added fixme.
1376 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1378 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1379 class (Mono.XBuild.Utilities.ReservedNameUtils).
1381 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1383 * BuildTask.cs: Removed unnecessary variable.
1384 * Engine.cs: Added logging of the build start.
1385 * Project.cs: Removed unnecessary variable.
1387 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1389 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1391 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1393 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1395 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1397 * BuildItem.cs: Fix typo?
1399 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1401 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1402 Engine.cs, Project.cs: Coding style fixes.
1404 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1406 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1408 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1410 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1411 to pass tests. Wrote serialization constructor.
1412 * Engine.cs, Project.cs: Global engine and project unloading, test and
1415 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1417 * UsingTask.cs: Formatting changes.
1419 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1421 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1422 to lists instead of hashtables.
1423 * Import.cs: Cleaned up, moved importing from Project.cs
1424 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1425 * Engine.cs: Cleaned up properties.
1426 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1427 Separated evaluation and loading.
1429 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1431 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1432 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1433 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1434 binding and evaluation, merge xml binding in constructors.
1435 * DirectoryScanner.cs: Includes CAN be empty.
1436 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1437 * ConsoleLogger.cs: Fix compilation warning.
1439 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1441 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1443 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1445 * Engine.cs: API cleanup.
1447 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1449 * Project.cs: Cleaned up add.
1450 * Expression.cs: Hacked to transform \ and / to path separators.
1451 * BuildPropertyGroup.cs: Small cleanup.
1452 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1455 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1457 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1458 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1460 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1461 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1462 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1464 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1465 * TaskElement.cs: Temporarily removed.
1466 * Xml.cs: Changed to static.
1468 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1470 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1471 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1472 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1473 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1474 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1475 IBuildPropertyGroupCollection.cs: Removed.
1477 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1479 * BuildItem.cs: Removed IBuildItem references.
1480 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1481 IBuildItemGroup references. Changed Evaluate to internal.
1482 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1483 reference and hidden constructors.
1484 * BuildProperty.cs: Removed IBuildProperty reference.
1485 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1486 IBuildPropertyGroup references. Changed Evaluate to internal.
1487 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1488 reference and hidden constructors.
1489 * ConsoleLogger.cs: Updated names of event handlers.
1490 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1491 Escape. Added UnloadAllProjects () and UnloadProject ().
1492 * FileLogger.cs: Removed ApplyParameter ().
1493 * GroupingCollection.cs: Hidden.
1494 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1495 * ItemPropertyGroupingBase.cs: Commented.
1496 * ProcessingPass.cs: Hidden.
1497 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1499 * Target.cs: Removed ITarget reference.
1500 * TargetCollection.cs: Removed ITargetCollection reference.
1501 * TaskElement.cs: Removed ITaskElement reference.
1502 * TaskEngineAssemblyResolver.cs: Hidden.
1503 * Utilities.cs: Made static class, removed CheckPath (),
1504 ValidateCulture (), GetSupportedCultures () and added Escape ().
1506 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1508 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1511 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1513 * Project.cs: Added MonoTODO attributes.
1514 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1515 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1516 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1517 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1518 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1519 BuildItemGroup.cs, InvalidProjectFileException.cs,
1520 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1521 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1522 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1523 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1524 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1525 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1526 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1527 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1528 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1529 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1530 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1531 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1533 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1535 * TaskDatabase.cs: Change Shared to Framework.
1536 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1537 CaseInsensitiveHashCodeProvider
1539 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1541 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1542 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1545 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1547 * InternalLoggerException.cs: Changed protected fields to private.
1549 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1551 * Engine.cs: Added check for globalProperties.
1552 * Project.cs: Added using path from importedProject.FullFileName when
1553 adding UsingTask elements.
1555 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1557 * TaskElement.cs: Changed ReflectedType to PropertyType.
1558 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1561 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1563 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1565 * BuildProperty.cs: Organized PropertyType enum.
1566 * Engine.cs: Added setting CommandLine PropertyType of global
1569 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1571 * InvalidProjectFileException.cs: Changed Message property.
1572 * ChangeType.cs (TransformToString): Added separator between items.
1573 * TaskEngineAssemblyResolver.cs: Formatting.
1575 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1577 * DirectoryScanner.cs: Added.
1578 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1579 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1580 * Project.cs: Removed Evalute* ().
1582 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1584 * Target.cs: Formatting.
1585 * Expression.cs: Added check if array == null.
1586 * BuildItem.cs: Removed 'break' to remove warnings.
1587 * ConsoleLogger.cs: Formatting.
1588 * Engine.cs: Added handling of default target(s).
1589 * Project.cs: Added handling of default target(s).
1591 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1593 * TaskElement.cs: Added check for parameters.
1594 * Target.cs: Added logging of target skipping.
1595 * Expression.cs: Changed returning object[] to string[], bool[]... in
1597 * ItemReference.cs: Fixed for item references without custom
1599 * BatchingImpl.cs: Added real inputs/outputs checking.
1600 * Engine.cs: Moved global properties setting.
1601 * Project.cs: Moved global properties setting.
1603 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1605 * Target.cs: Added checks for target existence.
1606 * BuildItemGroup.cs: Changed to use transforms.
1607 * MetadataReference.cs: Wrote real implementation.
1608 * ItemReference.cs: Rewritten to use transforms.
1609 * BuildItem.cs: Changes for transforms and metadata.
1610 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1612 * Project.cs: Fixed project importing.
1613 * ImportedProject.cs: Changed to throw exceptions instead of returning
1616 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1618 * Engine.cs: Removed FIXME.
1619 * Project.cs: Splitted ProcessElements and added project importing.
1620 * ImportedProject.cs: Rewritten.
1622 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1624 * TaskElement.cs: Added getting of objects of every type.
1625 * BuildItemGroup.cs: Added ToITaskItemArray ().
1626 * Expression.cs: Implemented part that is not using metadata.
1627 * ItemReference.cs: Implemented parsing item references. Need to fix
1629 * BuildItem.cs: Fixed ToITaskItem ().
1630 * PropertyReference.cs: Implemented parsing property references. This
1631 also needs validity checking.
1633 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1635 * TaskElement.cs: Added Output element handling.
1636 * Target.cs: Cleaned up.
1637 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1638 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1639 ItemReference.cs, ChangeType.cs: Added.
1640 * BuildItem.cs: Added creating BuildItem from TaskItem.
1641 * BuildPropertyGroup.cs: Small changes.
1642 * BatchingImpl.cs: Fixed to return real task execution result.
1643 * BuildProperty.cs: Fixed FinalValue property.
1644 * Engine.cs: Reformatted logging.
1645 * Project.cs: Added check to EvaluateProperty.
1647 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1649 * TaskElement.cs: Added part of execution engine.
1650 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1651 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1652 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1653 * BuildItem.cs: Added handling of built-in metadata and referencing
1654 Items by name not FullName.
1655 * BatchingImpl.cs: Added temporary task "batching".
1656 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1657 * Project.cs: Added Evaluate. It will be moved to separate class.
1659 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1661 * EventSource.cs, Engine.cs: Added CriticalEvents.
1662 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1663 Project.cs: Added some support for items.
1664 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1666 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1668 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1671 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1673 * BatchingImpl.cs: Added.
1674 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1675 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1676 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1677 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1678 GroupingCollection.cs: Updated.
1680 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1682 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1683 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1684 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1685 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1686 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1687 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1688 InternalLoggerException.cs, InvalidProjectFileException.cs,
1689 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1690 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1691 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1692 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1693 Initial check-in of implementations.
1695 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1697 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1698 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1699 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1700 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1701 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1702 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1703 Initial check-in of interfaces and a syntax file, real classes are
1704 changing a lot so I'll wait a moment with checking them in.