1 2010-07-24 Ankit Jain <jankit@novell.com>
3 * ConsoleLogger.cs: Honor LoggerVerbosity.Quiet .
5 2010-07-22 Ankit Jain <jankit@novell.com>
7 * ConsoleLogger.cs: Add support for parameter 'NoItemAndPropertyList'.
9 2010-07-22 Ankit Jain <jankit@novell.com>
11 * Project.cs: Add reserved properties MSBuildProjectFullPath
12 and MSBuildProjectExtension .
14 2010-07-09 Ankit Jain <jankit@novell.com>
16 Correctly handle precedence of ToolsVersion value coming
18 * BuildEngine.cs (BuildProjectFile): Restore project.ToolsVersion .
19 * Engine.cs: Likewise. Also validate DefaultToolsVersion .
20 * Project.cs: Handle invalid tools version specified in the project
21 file, and fall back to engine's version.
22 * MSBuild.cs: Fix the precedence order, and validate.
23 * UnknownToolsVersionException.cs: New.
25 2010-06-23 Ankit Jain <jankit@novell.com>
27 * TargetBatchingImpl.cs (BuildTargetNeeded): Fix var names to
28 correctly reflect what they track. Log messages when skipping
31 2010-06-04 Ankit Jain <jankit@novell.com>
33 * Import.cs (EvaluateProjectPath): Add a hack to support multiple
34 msbuild extension paths. Paths can be specified via the environment
35 variable - $MSBuildExtensionsPath . ~/.config/xbuild/tasks is also
36 checked for extensions, besides the default location.
37 This explicitly looks for a "$(MSBuildExtensionsPath)" in the import
38 expression and tries to replace that with possible paths, till it
39 finds the file. In rest of the project, the property would resolve
40 to its single default value.
42 2010-06-03 Ankit Jain <jankit@novell.com>
44 * Engine.cs (GetLoadedProject): Return null if project not found.
45 Based on a patch by Dale Ragan <dale.ragan@sinesignal.com> .
47 2010-05-28 Ankit Jain <jankit@novell.com>
50 * DirectoryScanner.cs (ProcessInclude): Set %(RecursiveDir) only if
51 the '**' wildcard was found in the original Include.
53 2010-04-10 Ankit Jain <jankit@novell.com>
55 * Project.cs (InitializeProperties): Set MSBuildBinPath to the current
58 2010-04-10 Ankit Jain <jankit@novell.com>
60 * TaskEngine.cs (Prepare): Throw InvalidProjectFileException instead of a generic
63 2010-04-10 Ankit Jain <jankit@novell.com>
65 * ConsoleLogger.cs (EventsToString): If the target being executed is
66 from an imported file, then show that.
68 2010-04-10 Ankit Jain <jankit@novell.com>
70 * Project.cs: Add property MSBuildExtensionsPath32, used by silverlight
73 2010-04-07 Ankit Jain <jankit@novell.com>
75 * ConsoleLogger.cs: Dump items and properties when a project starts
76 to build. Useful for debugging.
77 * Engine.cs (LogProjectStarted): Set the properties and items also,
78 for the project started event.
79 * Project.cs (EvaluatedPropertiesAsDictionaryEntries): New.
80 (EvaluatedItemsByNameAsDictionaryEntries): New. Required for
83 2010-04-03 Ankit Jain <jankit@novell.com>
85 * BuildEngine.cs: Implement IBuildEngine2 instead of
87 * BuildTasks.cs: Use the new extension methods for logging.
88 (InitializeTask): Emit a message informing about the assembly
89 from which the task is being loaded. Emit a useful debug message
90 incase of a InvalidCastException.
91 * Engine.cs: Add missing methods, constructors and properties related
92 to ToolsVersion support. Setup a default set of Toolsets.
93 Keep separate taskdbs' per ToolsVersion. The common tasks
94 would come from different *.tasks file, and use different
96 (DefaultToolsVersion): Correctly set this based on the profile.
97 * LogExtensions.cs: New. Extension methods on Engine, for logging.
98 * Project.cs: Add missing methods/contructors/properties related
99 to ToolsVersion support. Add reserved properties -
100 MSBuildToolsPath and MSBuildToolsVersion .
102 * ToolsetCollection.cs: New.
103 * ToolsetDefinitionLocations.cs: New.
105 2010-03-04 Ankit Jain <jankit@novell.com>
107 * BuildEngine.cs (LogErrorEvent): Log as warning, if
108 ContinueOnError==true, and log a corresponding message.
109 * TargetBatchingImpl.cs: Refactor to share code between the
110 batched and unbatched case. If a task fails and
111 ContinueOnError==true, then ignore the failed state.
113 2010-02-19 Ankit Jain <jankit@novell.com>
115 * BuildItem.cs: Track api changes.
116 (SetMetadata): Allow RecursiveDir to be set, this is set by
118 * DirectoryScanner.cs (ProcessInclude): Set RecursiveDir metadata.
120 2010-02-19 Ankit Jain <jankit@novell.com>
122 * Import.cs (Evaluate): Add param @ignoreMissingImports.
123 * Project.cs (Load*): Add overloads with param @projectLoadSettings.
124 (Log*): Mark internal.
125 * ProjectLoadSettings.cs: New.
127 2010-02-04 Ankit Jain <jankit@novell.com>
130 * ConditionFunctionExpression.cs (Exists): Check for directory also.
132 2009-12-22 Ankit Jain <jankit@novell.com>
135 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
136 * BuildItem.cs: Track api changes.
138 2009-12-02 Ankit Jain <jankit@novell.com>
141 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
142 being iterated over. Patch by Laurent Etiemble
143 <laurent.etiemble@gmail.com>
145 2009-11-28 Ankit Jain <jankit@novell.com>
148 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
149 * Project.cs (Batch): New. Contains the perBatchItems and the
150 commonItems for the batch.
151 Use a stack of batches, instead of directly setting the current
155 (SetBatchedItems): Make this private.
156 (GlobalProperties.set): Re-evaluating the project is not required
158 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
160 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
162 * Target.cs (Build): Reset the current batch to nil before evaluating
163 and building this target.
165 2009-11-28 Ankit Jain <jankit@novell.com>
167 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
168 available in either perBatchItemsByName or commonItemsByName
169 or the evaluatedItemsByName collection. Allows the use of
170 items which are not batched, but are consumed in case of batching.
172 2009-11-26 Ankit Jain <jankit@novell.com>
174 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
175 refs also, for Inputs and Outputs.
177 2009-10-13 Ankit Jain <jankit@novell.com>
179 * DirectoryScanner.cs:
180 * ExpressionCollection.cs:
181 * GroupingCollection.cs:
183 * Target.cs: Fix warnings.
185 2009-10-12 Ankit Jain <jankit@novell.com>
187 * Target.cs (TargetFile): New. Gives the name of the file
188 containing the target definition.
189 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
190 return this for ProjectFileOfTaskNode.
191 * BuildTask.cs (LogTaskStarted):
192 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
194 (InitializeTask): Set BuildEngine's task file to parent target's
196 * Engine.cs (LogProjectStarted): Incase of default targets, set
197 TargetNames to String.Empty .
198 * TargetBatchingImpl.cs (LogTargetStarted):
199 (LogTargetFinished): Use target.TargetFile for the event.
201 * ConsoleLogger.cs: Keep a stack of project/target/task being
202 executed. And corresponding list of errors and warnings.
203 (EventsToString): Stringifies the current "stack", to be used
204 as key to the table of errors/warnings and for show messages
205 at the end of the build.
207 2009-10-12 Ankit Jain <jankit@novell.com>
209 * Project.cs (Load): Add argument checks.
211 2009-10-11 Ankit Jain <jankit@novell.com>
213 * ConsoleLogger.cs (no_colors): Rename to ..
214 (use_colors): .. this. Fix the case when XBUILD_COLORS
217 2009-10-11 Ankit Jain <jankit@novell.com>
219 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
220 Support 'XBUILD_COLORS' to set colors for errors, warnings,
223 2009-10-10 Ankit Jain <jankit@novell.com>
225 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
226 becomes true, don't reset it. We are looking for "atleast one
229 2009-10-08 Ankit Jain <jankit@novell.com>
231 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
232 directly using DirectoryInfo ("z:"), that doesn't return
235 2009-10-08 Ankit Jain <jankit@novell.com>
237 * DirectoryScanner.cs: Handle absolute paths. Fix to work
238 correctly on windows. Change order of adding paths to match
239 msbuild, useful to have.
241 2009-10-08 Ankit Jain <jankit@novell.com>
243 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
244 of the 'Output' element also.
245 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
247 2009-10-07 Ankit Jain <jankit@novell.com>
249 * ConsoleLogger.cs: Mark build as failed, if any project failed.
251 2009-10-06 Ankit Jain <jankit@novell.com>
253 * ConsoleLogger: Improve error reporting. Don't count failed task,
254 target or project as another error. Show "errors" after "warnings",
255 more useful to the user.
256 * Project.cs (BuildTarget): Log error instead of using CWL.
258 2009-10-03 Ankit Jain <jankit@novell.com>
260 * Project.cs (OS): New.
261 (InitializeProperties): Set 'OS' as a pre-defined property, set to
262 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
264 2009-10-02 Ankit Jain <jankit@novell.com>
266 * Expression.cs (Parse): Don't change '/' to '\\', not required.
268 2009-10-01 Ankit Jain <jankit@novell.com>
270 * Project.cs (AddImport): Show the correct source file name, when
271 the import is in the main project file.
273 2009-10-01 Ankit Jain <jankit@novell.com>
276 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
277 the full path of the imported project here itself, instead of ..
279 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
281 * Project.cs (AddImport): Don't process if condition is false.
282 Warn if a circular reference is detected, and ignore the import.
284 2009-09-29 Ankit Jain <jankit@novell.com>
286 * GroupingCollection.cs (Evaluate): Mark internal.
287 * Project.cs (AddImport): Only evaluate the properties,
288 till before the import.
290 2009-09-29 Ankit Jain <jankit@novell.com>
292 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
293 the project xml, as returned Xml*Reader normalizes the newlines.
294 Instead directly use the TextReader with XmlDocument.Load ().
296 2009-09-27 Ankit Jain <jankit@novell.com>
298 * ConditionParser.cs: Show the condition being parsed in the
301 2009-09-26 Ankit Jain <jankit@novell.com>
303 * Expression.cs: Allow '-' in item, property and metadata names.
305 2009-09-26 Ankit Jain <jankit@novell.com>
307 * Project.cs (Evaluate): Split into this and ..
308 (PrepareForEvaluate): .. this.
309 (AddImport): Evaluate the current set of properties/items etc,
310 before processing the imported project. Honor the Condition
312 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
314 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
315 * BuildItemGroup.cs (Evaluate): Evaluate only once.
316 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
318 2009-09-26 Ankit Jain <jankit@novell.com>
320 * Project.cs: Get InitialTargets from the imported projects also.
321 The combined list of targets are executed, in the order they were
323 DefaultTargets are also read in from imported projects, and the first
324 non-empty DefaultTargets found is used.
326 2009-09-25 Ankit Jain <jankit@novell.com>
328 * Project.cs (BuildTarget): Handle skipped targets.
330 2009-09-25 Ankit Jain <jankit@novell.com>
332 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
333 InvalidProjectFileException with useful error.
335 2009-09-24 Ankit Jain <jankit@novell.com>
337 * Project.cs (Load): Emit the .sln.proj file only if env var
338 XBUILD_EMIT_SOLUTION is set.
340 2009-09-24 Ankit Jain <jankit@novell.com>
342 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
344 2009-09-24 Ankit Jain <jankit@novell.com>
346 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
349 2009-09-10 Ankit Jain <jankit@novell.com>
351 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
352 preserved, so use ConvertTo ITaskItem, rather than string.
353 Ensure that the new items have the metadata from references _in_
354 Include, and the metadata of _this_ builditem.
355 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
356 (MatchedFilenames): Rename to ..
357 (MatchedItems): .. this, and change type of array of ITaskItem.
358 Ensure that metadata of items in Includes are retained in the
361 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
362 param. If separator is present, then just return a "Join'ed"
363 string as the single task item.
364 * ItemReference.cs: Track api changes.
366 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
367 as we need separate task items.
369 2009-09-01 Ankit Jain <jankit@novell.com>
372 * Project.cs (BuildTarget): Move caching of target outputs to ..
373 * Target.cs: .. here. Move LogTargetSkipped also here.
374 Ensure that caching happens for target dependencies also.
376 2009-09-01 Ankit Jain <jankit@novell.com>
378 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
381 2009-09-01 Ankit Jain <jankit@novell.com>
383 * Expression.cs (ParseOptions): New enum. Replace the bool params
384 of exression.Parse with this. Add option to control expansion of
386 (CopyToExpressionCollection): Track api changes.
388 Update all expr.Parse calls to use the new enum.
389 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
390 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
392 * BatchingImplBase.cs: Track api changes. Allow metadata refs
394 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
395 * ItemReference.cs: Allow metadata in transforms.
396 * TaskEngine.cs: Allow metadata refs.
398 * MetadataReference.cs (.ctor): Add a 'original string' param.
400 2009-08-29 Ankit Jain <jankit@novell.com>
402 * Expression.cs (ExpressionOptions): New.
404 Introduce a ExpressionOptions argument to all ConvertTo*
405 methods. Implement the rule: in evaluation phase, expand
406 all items completely, but dont expand item refs in properties.
407 At other times, expand the item refs in the properties.
408 See comments in Expression.cs, for a full explanation.
409 * BuildItem.cs: Track api changes.
410 * BuildItemGroup.cs: Likewise.
411 * BuildProperty.cs: Track api changes. Handle self-references.
412 * BuildTask.cs: Track api changes.
413 * IReference.cs: Add ExpressionOptions param.
414 * ItemReference.cs: Track api changes.
415 * PropertyReference.cs: Likewise.
416 * MetadataReference.cs: Likewise.
417 * ExpressionCollection.cs: Track api changes. Add support for
418 converting all primitive types and DateTime, instead of a fixed
420 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
421 * TaskBatchingImpl.cs: Handle the case when batching is required,
422 but no items are available.
424 * TaskEngine.cs: Throw on unsupported types. Correctly handle
425 properties in case of empty values.
427 2009-08-26 Ankit Jain <jankit@novell.com>
429 * Expression.cs: Correctly handle a item reference with transform
430 when allowItems is false. If item ref is ignored, then the transform
431 will get incorrectly matched as a metadata ref.
432 * ItemReference.cs (.ctor): Add a @original_string param.
434 2009-08-26 Ankit Jain <jankit@novell.com>
436 * Utilities.cs (UnescapeFromXml): New. From md.
437 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
438 of the property element.
440 2009-08-26 Ankit Jain <jankit@novell.com>
442 * BuildProperty.cs (ConvertToString): New.
443 (ConvertoToITaskItemArray): New. Parse the property value.
444 * PropertyReference.cs (ConvertToString): Use BuildProperty's
446 (ConvertoToITaskItemArray): Likewise.
448 2009-08-21 Ankit Jain <jankit@novell.com>
450 * Engine.cs (EndProjectBuild): Use the @succeeded argument
451 instead of hardcoding 'true'.
452 * Target.cs (Build): Add an overload to return executeOnErrors
453 value for the target executed. If building dependencies fails,
454 and executeOnErrors is true, then execute OnError tasks.
455 Add the new param to ..
456 (BuildDependencies): this, ..
458 (GetDependencies): Improve error message and variable name.
459 (ExecuteOnErrors): Honor OnError tag's Condition also.
460 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
462 2009-08-20 Ankit Jain <jankit@novell.com>
465 * Project.cs (Load): Add support for loading .sln files.
467 2009-08-20 Ankit Jain <jankit@novell.com>
469 * BuildTask.cs (Execute): Use task_logger only after the task
470 has been initialized. Catch and report task loading errors.
471 * Target.cs (DoBuild): Dont rethrow the exception, and emit
472 the stacktrace as a low importance message.
474 2009-08-18 Ankit Jain <jankit@novell.com>
476 * BatchingImplBase.cs: Make the item name lookups and metadata be case
478 * TaskDatabase.cs: Likewise.
479 * TaskEngine.cs: Make property name looks, case insensitive.
481 2009-08-09 Miguel de Icaza <miguel@novell.com>
483 * ConsoleLogger.cs: Change the format of the error and warnings
484 strings to work when invoked inside Emacs by not rendering the
485 column if available, by using lowercase "error"/"warning" strings
486 instead of camelcased versions and to not have unnecessary padding.
488 2009-07-31 Ankit Jain <jankit@novell.com>
490 * ConsoleLogger.cs: Keep track of all the errors and warnings
491 and show them at the end.
493 2009-07-31 Ankit Jain <jankit@novell.com>
495 * Target.cs (Build): Log a message if a target is skipped.
497 * BuildTask.cs (Execute): Log error if task execution fails.
499 2009-07-30 Ankit Jain <jankit@novell.com>
501 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
502 v2.0, this will change when multi-targeting lands.
504 2009-07-30 Ankit Jain <jankit@novell.com>
506 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
507 'MSBuildProjectName' properties.
509 2009-07-28 Ankit Jain <jankit@novell.com>
511 * TaskEngine.cs (Prepare): Fix formatting mistake.
512 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
513 fails. Also, emit result of project at Normal verbosity level.
515 2009-07-23 Ankit Jain <jankit@novell.com>
518 * Project.cs (ExtensionsPath): New.
519 (InitializeProperties): Set "MSBuildExtensionsPath" property.
521 2009-06-12 Ankit Jain <jankit@novell.com>
524 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
525 itemref is allowed if the prev/next element is ";".
527 2009-06-12 Ankit Jain <jankit@novell.com>
529 * Utilities.cs (FromMSBuildPath): Return null if the path contains
530 "drive:" only on windows.
532 2009-06-07 Ankit Jain <jankit@novell.com>
534 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
537 2009-05-29 Ankit Jain <jankit@novell.com>
539 Correctly handle global properties. Correctly log
540 project/build events.
542 * BuildPropertyGroup.cs (Clone): Implement.
543 * Engine.cs (globalProperties): Rename to ..
544 (global_properties): .. this.
545 (currentlyBuildingProjectsStack): New. Used to correctly
546 log and raise project/build start/finish events.
547 (BuildProjectFile): Override any project global properties
548 with explicitly specified ones, here in the param @globalProperties.
549 Mark project for reevaluation, which will update the engine's
550 global properties also.
551 Reset both engine and project's old global properties at the end.
552 (UnregisterAllLoggers): Log build finished only if we are currently
554 (StartBuild): Rename to ..
555 (StartProjectBuild): .. this. Keeps track of the projects being built
556 in the new stack, and logs project and build events accordingly.
557 (EndProjectBuild): New. Uses the stack to keep track of projects
558 finishing builds, and raises project and build events accordingly.
559 (LogProjectStarted): Move here from Project.cs
560 (LogProjectFinished): Likewise.
562 * Project.cs (Build): Log start of project build.
563 Set current directory to the project file's dir, and reset at end.
564 (BuildInternal): Don't log here, its done in Build.
565 (BuildTarget): Already built targets are keyed by the set of global
566 properties that they were built with.
567 (GlobalPropertiesToString): New.
568 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
569 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
570 (Evaluate): Remove built targets only if we are currently building and
571 build settings are None.
572 Merge project's global properties with those of the parent engine.
573 Add missing properties from engine's global properties.
574 (LogTargetSkipped): Fix format string, add the reqd argument.
576 2009-05-29 Ankit Jain <jankit@novell.com>
578 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
579 (HasTrailingSlash): New.
581 2009-05-12 Ankit Jain <jankit@novell.com>
583 * Project.cs (.ctor): Init timeOfLastDirty.
585 2009-05-05 Miguel de Icaza <miguel@novell.com>
587 * Contribution from Martin Brenn to fix #498154.
589 2009-04-27 Ankit Jain <jankit@novell.com>
592 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
593 one passed as argument.
595 2009-04-27 Ankit Jain <jankit@novell.com>
597 * TaskEngine.cs (Prepare): Emit a useful error message property value
598 can't be converted to required type.
600 2009-04-27 Ankit Jain <jankit@novell.com>
602 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
603 as valid true values for bool, and corresponding for false.
605 2009-03-27 Jonathan Chambers <joncham@gmail.com>
607 * BuildWhen.cs: Add basic implementation.
608 * BuildChoose.cs: Add basic implementation.
609 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
610 EvaluatedItemsIgnoringCondition.
611 * GroupingCollection.cs: Add evaluation of BuildChoose items.
613 2009-03-26 Jonathan Chambers <joncham@gmail.com>
615 * TaskDatabase.cs (RegisterTask): Search for class by name
616 if task was not found using GetType (which uses namespace).
618 2009-02-26 Ankit Jain <jankit@novell.com>
620 * Target.cs: Handle target with no tasks. Log errors.
622 2009-02-24 Ankit Jain <jankit@novell.com>
624 Lazily load UsingTask tasks.
625 * UsingTask.cs (Evaluate): Register 'this' with task database,
626 but don't load it yet. Register only if condition evaluates to true.
627 Move the load logic to ..
628 (Load): .. here. Register with the specified task database.
629 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
630 in a table keyed by task name, but don't load it yet.
631 (GetTypeFromClassName): Try to load UsingTask if task is not already
632 loaded. Move loading logic to ..
633 (GetTypeFromClassNameInternal): .. here.
634 (CopyTasks): Copy the usingTasks table also.
636 2009-02-23 Ankit Jain <jankit@novell.com>
638 * BuildItem.cs (AddMetadata): Allow overwriting older values.
640 2009-02-22 Ankit Jain <jankit@novell.com>
642 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
643 instead of XmlElement. Eg. XmlComment
645 2009-02-21 Ankit Jain <jankit@novell.com>
647 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
648 * Project.cs (Load): Use FromMSBuildPath on the path.
649 (InitializeProperties): Set "MSBuildToolsPath" also.
651 2009-02-20 Ankit Jain <jankit@novell.com>
654 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
655 transforms) in conditions.
656 * ConditionParser.cs: Parse unquoted item, property references.
657 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
658 * Token.cs (Token.ToString): Override.
659 (TokenType.Transform): Uncomment.
661 2009-02-12 Jonathan Chambers <joncham@gmail.com>
663 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
664 no XmlElement.InnerText. This allows properties to be additional
667 2009-02-01 Ankit Jain <jankit@novell.com>
669 * BuildEngine.cs (BuildProjectFile): Use
670 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
671 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
672 built. Move logging of project start/finish to ..
673 * Project.cs: .. here. Build a target only if hasn't been built already.
674 Keep track of target outputs, and return those even if an already built
675 target has been invoked again.
676 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
678 2009-01-31 Ankit Jain <jankit@novell.com>
680 * BatchingImpl.cs: Split into ..
681 * BatchingImplBase.cs: .. this,
682 * TaskBatchingImpl.cs: .. this ..
683 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
685 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
686 (Log*): Move to TargetBatchingImpl .
690 2009-01-30 Ankit Jain <jankit@novell.com>
692 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
695 2009-01-29 Ankit Jain <jankit@novell.com>
697 * BuildItem.cs (child_items): Change type from BuildItemGroup to
699 (HasParent): Rename to ..
700 (HasParentItem): .. this.
701 (ParentItemGroup): Add setter.
703 * BuildItemGroup.cs (.ctor): Add overload with @project param.
705 (AddItem): Correctly set the ParentItemGroup for new build items.
706 (ParentProject): Add setter.
707 * Project.cs: Set the project for new BuildItemGroup instances.
708 * TaskEngine.cs (PublishItemGroup): Likewise.
710 2009-01-06 Ankit Jain <jankit@novell.com>
712 * Project.cs (Build): Honor InitialTargets list.
714 2009-01-06 Ankit Jain <jankit@novell.com>
716 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
717 the property type also.
718 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
721 2009-01-06 Ankit Jain <jankit@novell.com>
723 * Project.cs (Build): Correctly handle null targetNames argument.
725 2009-01-06 Ankit Jain <jankit@novell.com>
727 * Engine.cs (LogProjectStarted): Add a null check.
729 2009-01-01 Ankit Jain <jankit@novell.com>
731 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
732 * ChangeType (ToBuildItemGroup): Add 'split' param.
734 * Expression.cs (Parse): Add a new overload with a 'split' param.
735 * ExpressionCollection.cs (Add): Add new overload for IReference,
736 remove the ones for Item/Metadata/PropertyReference.
737 (ConvertToArray): Implement correctly.
738 (ConvertToString): Track api changes.
739 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
740 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
741 (AddItemsToArray): New.
742 (ConvertToITaskItemArrayFromString): Refactor a bit.
743 (ThrowCantConcatError): New.
744 * ItemReference.cs: Update.
745 * MetadataReference.cs: Update.
746 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
748 * BuildPropertyGroup.cs: Track api changes.
749 * TaskEngine.cs (PublishOutput): Improve exception message.
750 * Project.cs (DoLoad): Improve exception message. Add a null check.
752 2008-12-30 Ankit Jain <jankit@novell.com>
754 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
755 metadata values for unqualified references.
756 (BuildItemGroupToITaskItemArray): Rename to ..
757 (BuildItemGroupToITaskItems): .. this.
760 2008-12-18 Ankit Jain <jankit@novell.com>
762 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
764 2008-12-17 Ankit Jain <jankit@novell.com>
766 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
767 only one instance of unique metadata value is required.
769 2008-11-22 Ankit Jain <jankit@novell.com>
771 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
773 * MetadataReference.cs (ConvertToITaskItemArray): New.
774 * Project.cs (GetAllItemGroups): New.
776 2008-11-21 Ankit Jain <jankit@novell.com>
778 * BatchingImpl.cs: Add task batching implementation.
779 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
780 * ExpressionCollection.cs (Count): New.
781 (ConvertToString): Handle MetadataReference.
782 * ItemReference.cs (ConvertToString):
783 (ConvertToITaskItemArray): Use the batching api.
785 * MetadataReference.cs (ConvertToString): New.
787 * Project.cs: Add api for accessing batched items and metadata.
788 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
791 2008-10-01 Ankit Jain <jankit@novell.com>
793 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
794 (BuildProjectFile): If filename is null (project.LoadXml) then use
796 * BuildTask.cs (InitializeTask): Track api change.
797 * Expression.cs (Parse): Skip empty entries in the expression.
799 2008-09-24 Ankit Jain <jankit@novell.com>
801 * Engine.cs: Add argument checks.
802 * Project.cs: Likewise.
804 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
806 * Project.cs (Build): Add outputs to targetOutputs.
808 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
810 * ExpressionCollection.cs (ConvertToArray): Simplify.
812 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
814 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
815 simplified. It still needs tests and refactoring.
817 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
819 * BuildEngine.cs (BuildProjectFile): Don't crash on null
822 * Target.cs: Add Outputs property.
824 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
826 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
827 (). Support condition.
829 * BatchingImpl.cs (BatchBuildTask): Simplify.
831 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
833 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
836 * ConditionFunctionExpression.cs: Removed warnings.
838 * BuildTask.cs (Execute): Write exceptions to std err (they should be
839 logged but it's better than swallowing).
841 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
843 * ConditionTokenizer.cs: Add Putback ().
845 * ConditionParser.cs: Add parsing of functions.
847 * ConditionFunctionExpression.cs: Add.
849 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
851 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
852 set property in persisted property group.
854 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
856 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
859 * ConsoleLogger.cs (TargetFinishedHandler)
860 (TaskFinishedHandler): Increment error count.
862 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
864 * BuildItem.cs (RemoveMetadata): Remove from XML.
865 (SetMetadata): Trigger project reevaluation.
867 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
869 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
872 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
874 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
875 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
876 BatchingImpl.cs, BuildProperty.cs: Track API changes.
878 * Expression.cs (Parse): Added allowItems parameter and made regexes
881 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
882 will try to import a.ext when given a.EXT.
884 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
886 * BuildItemGroup.cs: Store information saying what is the last item
887 group that contains build item name.
889 * Project.cs (Build): Pass empty array (build default targets).
891 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
893 * Token.cs: Commented Transform and LiteralSubExpression and added
896 * ConditionParser.cs: Removed redundant casts, rewrote
897 ParseFactorExpression () and added parsing of '!'.
899 * ConditionTokenizer.cs: Always skip whitespaces when getting next
900 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
901 Moved ReadChar () in front of all ifs.
903 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
905 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
906 from XML. (not to escape items that have parents twice).
908 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
910 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
911 (Project): Renamed to ParentProject.
913 * BuildItem.cs (ctor)
914 (CopyCustomMetadata): Add null check.
916 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
917 (RemoveProperty): Added null check.
919 * TargetCollection.cs (RemoveTarget): Added null check.
921 * Engine.cs (UnloadProject): Added null check.
923 * GroupingCollection.cs (Remove): Check if removed group belongs to
926 * Project.cs (AddNewItem): Implemented.
927 (RemoveItem): Reorganized.
928 (SetProjectExtensions): Added null check.
930 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
932 * BuildItemGroup.cs (Detach): Added.
934 (RemoveItemAt): Used Detach ().
936 * BuildItem.cs: Made FromXml and HasParent internal and added
937 ParentItem and ParentItemGroup properties (internal).
940 * GroupingCollection.cs (Remove): Used Detach ().
942 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
944 (GetEvaluatedItemsByNameIgnoringCondition)
945 (GetEvaluatedItemsByName)
946 (GetEvaluatedProperty): Reevaluate if needed.
948 (RemoveAllItemGroups)
949 (RemoveAllPropertyGroups): Implemented.
950 (DoLoad): Added closing of TextReader.
952 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
954 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
955 change but just mark that it needs it.
957 * Project.cs: Reevaluate when it needs reevaluation and one of
958 Evaluated* properties is used.
960 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
962 * Target.cs: Throw an exception when <OnError> is not last element in
965 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
967 * TargetCollection.cs: If a target is already there replace it with
970 * BuildProperty.cs: Added XmlElement property.
972 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
974 * ImportCollection.cs: Don't add imports that are already added.
976 * BuildItemGroup.cs: MonoTODOs.
978 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
979 condition can't be evaluated to bool.
981 * BuildPropertyGroup.cs (Evaluate): Simplify.
983 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
985 * BuildWhen.cs: Moved BindToXml () code to ctor.
987 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
988 property needed for removing groups.
990 * Engine.cs: Added StartBuild () that logs build start when Build ()
993 * GroupingCollection.cs: Added Remove () for item and property groups.
995 * Project.cs (AddNewImport): Implemented.
996 (AddNewItemGroup): Implemented.
997 (AddNewPropertyGroup): Implemented.
998 (AddNewUsingTaskFromAssemblyFile): Implemented.
999 (AddNewUsingTaskFromAssemblyName): Implemented.
1000 (RemoveItemGroup): Implemented.
1001 (RemovePropertyGroup): Implemented.
1003 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
1005 * BuildItemGroup.cs (Clear): Remove from XML.
1007 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
1008 to Project.EvaluatedProperties.
1009 (Clear): Remove from XML.
1011 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1013 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
1016 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1018 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
1019 Add () calls when processing a project from Import and
1020 evaluate_iterator for evaluation.
1022 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1024 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
1025 and prepend relative directory of importing project to full path of
1028 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1030 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1031 BuildItemGroupCollection.cs, Project.cs: Track API changes.
1033 * GroupingCollection.cs: Now it needs Project reference so added it.
1035 * BuildTask.cs: Formatting.
1037 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
1039 * ConditionParser.cs (ParseAndEvaluate): Added.
1041 * BuildItem.cs: Changed exception message.
1043 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1045 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1046 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
1047 GroupingCollection doesn't need Project reference.
1049 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
1051 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
1052 (Project.EvaluatedItems is a read only item group.)
1053 (ReplaceWith): Added.
1055 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
1056 global property group causes reevaluation of its project.
1058 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
1061 * OldExpression.cs: Removed.
1063 * BuildProperty.cs (Evaluate): Simplified.
1065 * ChangeType.cs (TemporaryTransform): Simplified.
1067 * BuildItem.cs: There are now 3 types of build items: from XML, having
1068 parent from XML, virtual. Added SplitParentItem ().
1070 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1072 * Utilities.cs: Added Unescape ().
1074 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
1075 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
1076 groups (at the moment just unescape).
1078 * Expression.cs (CopyToExpressionList): Unescape strings.
1080 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1082 * Target.cs (ctor): Added ImportedProject argument and removed
1084 (AddNewTask): Implemented.
1086 * TargetCollection.cs (AddNewTarget): Implemented.
1088 * Project.cs: Track API changes.
1090 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1092 * Target.cs (Build): Don't throw anything in case of error, just
1095 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
1098 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
1101 * BuildProperty.cs (ToString): Throw an exception if property is not
1103 (op_Explicit): Added a null check.
1105 * Engine.cs: Better error message.
1107 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
1108 IndexOutOfRangeException.
1110 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
1111 (MarkProjectAsDirty): Set time.
1113 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1115 * BuildItemGroup.cs (Clone): Throw exception.
1117 * Project.cs (Load): Throw InvalidProjectFileException if anything
1120 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1122 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
1123 and ConvertToITaskItemArray ().
1125 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1127 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
1128 classes that were public in Beta 2 and aren't used.
1130 * Expression.cs: Added replacement for parsing expressions char by
1131 char. It uses regexes to find item/property/metadata references in
1134 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1135 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1136 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1138 * ConditionRelationalExpression.cs: Formatting.
1140 * OldExpression.cs: Commented everything.
1142 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1143 parsing to Expression.
1145 * BuildItem.cs: Check if project is from XML in set_Condition and
1148 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1151 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1152 can evaluate expression in CanEvaluateToBool ().
1154 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1156 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1157 which item group is imported.
1159 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1161 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1163 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1164 BuildItemGroupCollection.cs: Little changes related to
1167 * ImportCollection.cs: Use GroupingCollection not an internal list.
1169 * Import.cs (Evaluate): Split to functions and check if
1170 EvaluatedProjectPath is empty.
1172 * GroupingCollection.cs, Project.cs: Move evaluation to
1173 GroupingCollection. Change algorithm to use 2 passes: first for property
1174 groups and imports and second for item groups.
1176 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1178 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1179 BuildItemGroup> not IDictionary.
1181 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1182 evaluated to false because we want to add every item to
1183 Project.EvaluatedItemsByNameIgnoringCondition.
1185 * Project.cs (Build): Don't throw an exception just return false.
1186 (GetEvaluatedProperty): Avoid NullReferenceException.
1187 (SetProjectExtensions): Implemented.
1189 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1191 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1193 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1194 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1195 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1197 * ImportCollection.cs: Added a note.
1199 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1201 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1203 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1204 (UsingTask[] array, int index)
1206 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1207 items to Project.EvaluatedItems in PublishItemGroup ();
1209 * BuildItemGroup.cs: Added [MonoTODO].
1211 * UsingTask.cs: Used expression for AssemblyFile to get around
1212 problems with '\' and '/'.
1214 * BuildItem.cs (ctor): Added null checks.
1215 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1216 (SetMetadata): Don't escape evaluatedMetadata and escape
1217 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1219 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1220 FromXml () instead of null checks.
1221 (SetProperty): Escape propertyValue when it is literal.
1223 * BuildProperty.cs: Changed exception message.
1225 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1227 (GetProjectExtensions): Implemented.
1229 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1231 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1232 GetParameterValue (), use expressions in ContinueOnError.
1233 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1234 instead of InvalidOperationException ().
1235 * ImportCollection.cs: Implement CopyTo ().
1236 * Target.cs: Remove redundant variables (XmlAttributes), return
1237 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1238 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1239 * Import.cs: Throw an exception when file does not exist.
1240 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1241 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1242 need to treat item as a token probably
1244 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1246 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1247 throw an exception).
1248 * BuildItemGroupCollection.cs: Changed exception types.
1250 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1252 * Engine.cs: Removed redundant cast.
1254 * UsingTaskCollection.cs:
1258 * TargetCollection.cs: Comment unused variable.
1259 * ConditionTokenizer.cs: Simplified checking if current token is a
1261 * Target.cs: Removed old code.
1263 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1265 * Target.cs: Changed "" to String.Empty.
1266 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1267 string was evaluated to String.Empty.
1268 * InternalLoggerException.cs:
1269 * InvalidProjectFileException.cs: Added LinkDemand before
1271 * ConsoleLogger.cs: Changed "" to String.Empty.
1272 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1273 with change to generics).
1274 * Project.cs: Made Build () throw more meaningful exception.
1276 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1278 * Target.cs: Reformatted.
1279 * TaskEngine.cs: Removed redundant code.
1280 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1281 * Engine.cs: Made BuildProjectFile () load project file if it's not
1284 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1286 * ConditionRelationalExpression.cs: Change comparers to case
1288 * ImportCollection.cs: Add NotImplementedExceptions.
1289 * BuildPropertyGroup.cs: Reformatted a bit.
1290 * BuildProperty.cs: The same.
1291 * Project.cs: Moved evaluation of imports before evaluation of
1292 properties. This may "work" until importing projects is redesigned but
1293 probably isn't correct.
1295 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1297 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1299 * BuildItemGroup.cs: Change return to continue.
1301 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1303 * ConditionParser.cs: Copyright note.
1304 * ExpressionCollection.cs: Fixed arrays passing.
1306 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1308 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1309 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1310 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1311 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1313 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1315 * Token.cs: Changed names: removed "than".
1316 * ConditionRelationalExpression.cs: Added.
1317 * ConditionFactorExpression.cs: Added.
1318 * BuildItemGroup.cs: Changed Condition property return value to return
1319 String.Empty instead of null.
1320 * ConditionParser.cs: Added support for parsing relational expressions
1322 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1323 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1324 and CanEvaluateToBool (), CanEvaluateToNumber () and
1325 CanEvaluateToString ().
1326 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1327 appropriately to ConditionExpression base class.
1328 * ConditionTokenizer.cs: Added null check and changed names in enums:
1330 * ConditionNotExpression.cs: Added.
1331 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1332 * Project.cs: Added checks for condition.
1334 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1336 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1337 ConditionalParser.cs: Changed name,
1339 * ConditionExpression.cs: Added Evaluate ().
1340 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1341 * BatchingImpl.cs: Added check if task should be executed.
1343 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1345 * UsingTask.cs: Changed properties to return null on empty attribute.
1346 * UsingTaskCollection.cs: Added object to SyncRoot.
1347 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1349 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1351 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1352 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1354 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1356 * Utilities.cs: Implemented Escape ().
1357 * BuildItem.cs: Added null checks.
1358 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1359 * Project.cs: Commented out redundant Evaluate ().
1360 * BuildChoose.cs: Minor changes.
1362 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1364 * Token: Added new few missing tokens.
1365 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1366 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1367 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1368 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1369 LiteralTokenizer.cs:
1370 Removed literal expression parsing based on tokenizer and
1371 parser. It needs to be done by regex.
1373 Moved tokenizer to ConditionalTokenizer.cs.
1375 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1377 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1378 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1379 methods converting reference to string from ToString () to
1380 ConvertToString () to avoid mistakes like using ToString () provided
1383 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1385 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1386 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1387 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1388 OldExpression and changed To* functions to one ConvertTo ().
1389 * TaskEngine.cs: Fixed PublishOutput ().
1390 * OldExpression.cs: Added. It will be temporarily used before
1391 LiteralExpression will be written using Tokenizer.
1392 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1393 ExpressionParseException.cs, LiteralExpression.cs: Added.
1395 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1397 * ImportedProject.cs: Removed warning.
1398 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1401 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1403 * Project.cs: Removed unnecessary variable.
1404 * Engine.cs: Added fixme.
1406 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1408 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1409 class (Mono.XBuild.Utilities.ReservedNameUtils).
1411 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1413 * BuildTask.cs: Removed unnecessary variable.
1414 * Engine.cs: Added logging of the build start.
1415 * Project.cs: Removed unnecessary variable.
1417 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1419 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1421 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1423 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1425 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1427 * BuildItem.cs: Fix typo?
1429 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1431 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1432 Engine.cs, Project.cs: Coding style fixes.
1434 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1436 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1438 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1440 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1441 to pass tests. Wrote serialization constructor.
1442 * Engine.cs, Project.cs: Global engine and project unloading, test and
1445 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1447 * UsingTask.cs: Formatting changes.
1449 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1451 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1452 to lists instead of hashtables.
1453 * Import.cs: Cleaned up, moved importing from Project.cs
1454 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1455 * Engine.cs: Cleaned up properties.
1456 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1457 Separated evaluation and loading.
1459 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1461 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1462 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1463 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1464 binding and evaluation, merge xml binding in constructors.
1465 * DirectoryScanner.cs: Includes CAN be empty.
1466 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1467 * ConsoleLogger.cs: Fix compilation warning.
1469 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1471 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1473 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1475 * Engine.cs: API cleanup.
1477 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1479 * Project.cs: Cleaned up add.
1480 * Expression.cs: Hacked to transform \ and / to path separators.
1481 * BuildPropertyGroup.cs: Small cleanup.
1482 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1485 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1487 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1488 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1490 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1491 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1492 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1494 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1495 * TaskElement.cs: Temporarily removed.
1496 * Xml.cs: Changed to static.
1498 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1500 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1501 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1502 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1503 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1504 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1505 IBuildPropertyGroupCollection.cs: Removed.
1507 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1509 * BuildItem.cs: Removed IBuildItem references.
1510 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1511 IBuildItemGroup references. Changed Evaluate to internal.
1512 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1513 reference and hidden constructors.
1514 * BuildProperty.cs: Removed IBuildProperty reference.
1515 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1516 IBuildPropertyGroup references. Changed Evaluate to internal.
1517 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1518 reference and hidden constructors.
1519 * ConsoleLogger.cs: Updated names of event handlers.
1520 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1521 Escape. Added UnloadAllProjects () and UnloadProject ().
1522 * FileLogger.cs: Removed ApplyParameter ().
1523 * GroupingCollection.cs: Hidden.
1524 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1525 * ItemPropertyGroupingBase.cs: Commented.
1526 * ProcessingPass.cs: Hidden.
1527 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1529 * Target.cs: Removed ITarget reference.
1530 * TargetCollection.cs: Removed ITargetCollection reference.
1531 * TaskElement.cs: Removed ITaskElement reference.
1532 * TaskEngineAssemblyResolver.cs: Hidden.
1533 * Utilities.cs: Made static class, removed CheckPath (),
1534 ValidateCulture (), GetSupportedCultures () and added Escape ().
1536 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1538 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1541 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1543 * Project.cs: Added MonoTODO attributes.
1544 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1545 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1546 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1547 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1548 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1549 BuildItemGroup.cs, InvalidProjectFileException.cs,
1550 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1551 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1552 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1553 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1554 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1555 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1556 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1557 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1558 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1559 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1560 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1561 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1563 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1565 * TaskDatabase.cs: Change Shared to Framework.
1566 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1567 CaseInsensitiveHashCodeProvider
1569 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1571 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1572 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1575 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1577 * InternalLoggerException.cs: Changed protected fields to private.
1579 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1581 * Engine.cs: Added check for globalProperties.
1582 * Project.cs: Added using path from importedProject.FullFileName when
1583 adding UsingTask elements.
1585 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1587 * TaskElement.cs: Changed ReflectedType to PropertyType.
1588 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1591 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1593 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1595 * BuildProperty.cs: Organized PropertyType enum.
1596 * Engine.cs: Added setting CommandLine PropertyType of global
1599 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1601 * InvalidProjectFileException.cs: Changed Message property.
1602 * ChangeType.cs (TransformToString): Added separator between items.
1603 * TaskEngineAssemblyResolver.cs: Formatting.
1605 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1607 * DirectoryScanner.cs: Added.
1608 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1609 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1610 * Project.cs: Removed Evalute* ().
1612 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1614 * Target.cs: Formatting.
1615 * Expression.cs: Added check if array == null.
1616 * BuildItem.cs: Removed 'break' to remove warnings.
1617 * ConsoleLogger.cs: Formatting.
1618 * Engine.cs: Added handling of default target(s).
1619 * Project.cs: Added handling of default target(s).
1621 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1623 * TaskElement.cs: Added check for parameters.
1624 * Target.cs: Added logging of target skipping.
1625 * Expression.cs: Changed returning object[] to string[], bool[]... in
1627 * ItemReference.cs: Fixed for item references without custom
1629 * BatchingImpl.cs: Added real inputs/outputs checking.
1630 * Engine.cs: Moved global properties setting.
1631 * Project.cs: Moved global properties setting.
1633 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1635 * Target.cs: Added checks for target existence.
1636 * BuildItemGroup.cs: Changed to use transforms.
1637 * MetadataReference.cs: Wrote real implementation.
1638 * ItemReference.cs: Rewritten to use transforms.
1639 * BuildItem.cs: Changes for transforms and metadata.
1640 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1642 * Project.cs: Fixed project importing.
1643 * ImportedProject.cs: Changed to throw exceptions instead of returning
1646 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1648 * Engine.cs: Removed FIXME.
1649 * Project.cs: Splitted ProcessElements and added project importing.
1650 * ImportedProject.cs: Rewritten.
1652 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1654 * TaskElement.cs: Added getting of objects of every type.
1655 * BuildItemGroup.cs: Added ToITaskItemArray ().
1656 * Expression.cs: Implemented part that is not using metadata.
1657 * ItemReference.cs: Implemented parsing item references. Need to fix
1659 * BuildItem.cs: Fixed ToITaskItem ().
1660 * PropertyReference.cs: Implemented parsing property references. This
1661 also needs validity checking.
1663 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1665 * TaskElement.cs: Added Output element handling.
1666 * Target.cs: Cleaned up.
1667 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1668 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1669 ItemReference.cs, ChangeType.cs: Added.
1670 * BuildItem.cs: Added creating BuildItem from TaskItem.
1671 * BuildPropertyGroup.cs: Small changes.
1672 * BatchingImpl.cs: Fixed to return real task execution result.
1673 * BuildProperty.cs: Fixed FinalValue property.
1674 * Engine.cs: Reformatted logging.
1675 * Project.cs: Added check to EvaluateProperty.
1677 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1679 * TaskElement.cs: Added part of execution engine.
1680 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1681 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1682 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1683 * BuildItem.cs: Added handling of built-in metadata and referencing
1684 Items by name not FullName.
1685 * BatchingImpl.cs: Added temporary task "batching".
1686 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1687 * Project.cs: Added Evaluate. It will be moved to separate class.
1689 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1691 * EventSource.cs, Engine.cs: Added CriticalEvents.
1692 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1693 Project.cs: Added some support for items.
1694 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1696 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1698 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1701 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1703 * BatchingImpl.cs: Added.
1704 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1705 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1706 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1707 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1708 GroupingCollection.cs: Updated.
1710 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1712 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1713 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1714 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1715 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1716 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1717 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1718 InternalLoggerException.cs, InvalidProjectFileException.cs,
1719 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1720 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1721 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1722 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1723 Initial check-in of implementations.
1725 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1727 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1728 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1729 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1730 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1731 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1732 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1733 Initial check-in of interfaces and a syntax file, real classes are
1734 changing a lot so I'll wait a moment with checking them in.