1 2010-07-24 Ankit Jain <jankit@novell.com>
3 * ConsoleLogger.cs: Collect and dump timing information.
5 2010-07-24 Ankit Jain <jankit@novell.com>
7 * ConsoleLogger.cs: Honor LoggerVerbosity.Quiet .
9 2010-07-22 Ankit Jain <jankit@novell.com>
11 * ConsoleLogger.cs: Add support for parameter 'NoItemAndPropertyList'.
13 2010-07-22 Ankit Jain <jankit@novell.com>
15 * Project.cs: Add reserved properties MSBuildProjectFullPath
16 and MSBuildProjectExtension .
18 2010-07-09 Ankit Jain <jankit@novell.com>
20 Correctly handle precedence of ToolsVersion value coming
22 * BuildEngine.cs (BuildProjectFile): Restore project.ToolsVersion .
23 * Engine.cs: Likewise. Also validate DefaultToolsVersion .
24 * Project.cs: Handle invalid tools version specified in the project
25 file, and fall back to engine's version.
26 * MSBuild.cs: Fix the precedence order, and validate.
27 * UnknownToolsVersionException.cs: New.
29 2010-06-23 Ankit Jain <jankit@novell.com>
31 * TargetBatchingImpl.cs (BuildTargetNeeded): Fix var names to
32 correctly reflect what they track. Log messages when skipping
35 2010-06-04 Ankit Jain <jankit@novell.com>
37 * Import.cs (EvaluateProjectPath): Add a hack to support multiple
38 msbuild extension paths. Paths can be specified via the environment
39 variable - $MSBuildExtensionsPath . ~/.config/xbuild/tasks is also
40 checked for extensions, besides the default location.
41 This explicitly looks for a "$(MSBuildExtensionsPath)" in the import
42 expression and tries to replace that with possible paths, till it
43 finds the file. In rest of the project, the property would resolve
44 to its single default value.
46 2010-06-03 Ankit Jain <jankit@novell.com>
48 * Engine.cs (GetLoadedProject): Return null if project not found.
49 Based on a patch by Dale Ragan <dale.ragan@sinesignal.com> .
51 2010-05-28 Ankit Jain <jankit@novell.com>
54 * DirectoryScanner.cs (ProcessInclude): Set %(RecursiveDir) only if
55 the '**' wildcard was found in the original Include.
57 2010-04-10 Ankit Jain <jankit@novell.com>
59 * Project.cs (InitializeProperties): Set MSBuildBinPath to the current
62 2010-04-10 Ankit Jain <jankit@novell.com>
64 * TaskEngine.cs (Prepare): Throw InvalidProjectFileException instead of a generic
67 2010-04-10 Ankit Jain <jankit@novell.com>
69 * ConsoleLogger.cs (EventsToString): If the target being executed is
70 from an imported file, then show that.
72 2010-04-10 Ankit Jain <jankit@novell.com>
74 * Project.cs: Add property MSBuildExtensionsPath32, used by silverlight
77 2010-04-07 Ankit Jain <jankit@novell.com>
79 * ConsoleLogger.cs: Dump items and properties when a project starts
80 to build. Useful for debugging.
81 * Engine.cs (LogProjectStarted): Set the properties and items also,
82 for the project started event.
83 * Project.cs (EvaluatedPropertiesAsDictionaryEntries): New.
84 (EvaluatedItemsByNameAsDictionaryEntries): New. Required for
87 2010-04-03 Ankit Jain <jankit@novell.com>
89 * BuildEngine.cs: Implement IBuildEngine2 instead of
91 * BuildTasks.cs: Use the new extension methods for logging.
92 (InitializeTask): Emit a message informing about the assembly
93 from which the task is being loaded. Emit a useful debug message
94 incase of a InvalidCastException.
95 * Engine.cs: Add missing methods, constructors and properties related
96 to ToolsVersion support. Setup a default set of Toolsets.
97 Keep separate taskdbs' per ToolsVersion. The common tasks
98 would come from different *.tasks file, and use different
100 (DefaultToolsVersion): Correctly set this based on the profile.
101 * LogExtensions.cs: New. Extension methods on Engine, for logging.
102 * Project.cs: Add missing methods/contructors/properties related
103 to ToolsVersion support. Add reserved properties -
104 MSBuildToolsPath and MSBuildToolsVersion .
106 * ToolsetCollection.cs: New.
107 * ToolsetDefinitionLocations.cs: New.
109 2010-03-04 Ankit Jain <jankit@novell.com>
111 * BuildEngine.cs (LogErrorEvent): Log as warning, if
112 ContinueOnError==true, and log a corresponding message.
113 * TargetBatchingImpl.cs: Refactor to share code between the
114 batched and unbatched case. If a task fails and
115 ContinueOnError==true, then ignore the failed state.
117 2010-02-19 Ankit Jain <jankit@novell.com>
119 * BuildItem.cs: Track api changes.
120 (SetMetadata): Allow RecursiveDir to be set, this is set by
122 * DirectoryScanner.cs (ProcessInclude): Set RecursiveDir metadata.
124 2010-02-19 Ankit Jain <jankit@novell.com>
126 * Import.cs (Evaluate): Add param @ignoreMissingImports.
127 * Project.cs (Load*): Add overloads with param @projectLoadSettings.
128 (Log*): Mark internal.
129 * ProjectLoadSettings.cs: New.
131 2010-02-04 Ankit Jain <jankit@novell.com>
134 * ConditionFunctionExpression.cs (Exists): Check for directory also.
136 2009-12-22 Ankit Jain <jankit@novell.com>
139 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
140 * BuildItem.cs: Track api changes.
142 2009-12-02 Ankit Jain <jankit@novell.com>
145 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
146 being iterated over. Patch by Laurent Etiemble
147 <laurent.etiemble@gmail.com>
149 2009-11-28 Ankit Jain <jankit@novell.com>
152 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
153 * Project.cs (Batch): New. Contains the perBatchItems and the
154 commonItems for the batch.
155 Use a stack of batches, instead of directly setting the current
159 (SetBatchedItems): Make this private.
160 (GlobalProperties.set): Re-evaluating the project is not required
162 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
164 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
166 * Target.cs (Build): Reset the current batch to nil before evaluating
167 and building this target.
169 2009-11-28 Ankit Jain <jankit@novell.com>
171 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
172 available in either perBatchItemsByName or commonItemsByName
173 or the evaluatedItemsByName collection. Allows the use of
174 items which are not batched, but are consumed in case of batching.
176 2009-11-26 Ankit Jain <jankit@novell.com>
178 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
179 refs also, for Inputs and Outputs.
181 2009-10-13 Ankit Jain <jankit@novell.com>
183 * DirectoryScanner.cs:
184 * ExpressionCollection.cs:
185 * GroupingCollection.cs:
187 * Target.cs: Fix warnings.
189 2009-10-12 Ankit Jain <jankit@novell.com>
191 * Target.cs (TargetFile): New. Gives the name of the file
192 containing the target definition.
193 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
194 return this for ProjectFileOfTaskNode.
195 * BuildTask.cs (LogTaskStarted):
196 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
198 (InitializeTask): Set BuildEngine's task file to parent target's
200 * Engine.cs (LogProjectStarted): Incase of default targets, set
201 TargetNames to String.Empty .
202 * TargetBatchingImpl.cs (LogTargetStarted):
203 (LogTargetFinished): Use target.TargetFile for the event.
205 * ConsoleLogger.cs: Keep a stack of project/target/task being
206 executed. And corresponding list of errors and warnings.
207 (EventsToString): Stringifies the current "stack", to be used
208 as key to the table of errors/warnings and for show messages
209 at the end of the build.
211 2009-10-12 Ankit Jain <jankit@novell.com>
213 * Project.cs (Load): Add argument checks.
215 2009-10-11 Ankit Jain <jankit@novell.com>
217 * ConsoleLogger.cs (no_colors): Rename to ..
218 (use_colors): .. this. Fix the case when XBUILD_COLORS
221 2009-10-11 Ankit Jain <jankit@novell.com>
223 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
224 Support 'XBUILD_COLORS' to set colors for errors, warnings,
227 2009-10-10 Ankit Jain <jankit@novell.com>
229 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
230 becomes true, don't reset it. We are looking for "atleast one
233 2009-10-08 Ankit Jain <jankit@novell.com>
235 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
236 directly using DirectoryInfo ("z:"), that doesn't return
239 2009-10-08 Ankit Jain <jankit@novell.com>
241 * DirectoryScanner.cs: Handle absolute paths. Fix to work
242 correctly on windows. Change order of adding paths to match
243 msbuild, useful to have.
245 2009-10-08 Ankit Jain <jankit@novell.com>
247 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
248 of the 'Output' element also.
249 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
251 2009-10-07 Ankit Jain <jankit@novell.com>
253 * ConsoleLogger.cs: Mark build as failed, if any project failed.
255 2009-10-06 Ankit Jain <jankit@novell.com>
257 * ConsoleLogger: Improve error reporting. Don't count failed task,
258 target or project as another error. Show "errors" after "warnings",
259 more useful to the user.
260 * Project.cs (BuildTarget): Log error instead of using CWL.
262 2009-10-03 Ankit Jain <jankit@novell.com>
264 * Project.cs (OS): New.
265 (InitializeProperties): Set 'OS' as a pre-defined property, set to
266 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
268 2009-10-02 Ankit Jain <jankit@novell.com>
270 * Expression.cs (Parse): Don't change '/' to '\\', not required.
272 2009-10-01 Ankit Jain <jankit@novell.com>
274 * Project.cs (AddImport): Show the correct source file name, when
275 the import is in the main project file.
277 2009-10-01 Ankit Jain <jankit@novell.com>
280 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
281 the full path of the imported project here itself, instead of ..
283 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
285 * Project.cs (AddImport): Don't process if condition is false.
286 Warn if a circular reference is detected, and ignore the import.
288 2009-09-29 Ankit Jain <jankit@novell.com>
290 * GroupingCollection.cs (Evaluate): Mark internal.
291 * Project.cs (AddImport): Only evaluate the properties,
292 till before the import.
294 2009-09-29 Ankit Jain <jankit@novell.com>
296 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
297 the project xml, as returned Xml*Reader normalizes the newlines.
298 Instead directly use the TextReader with XmlDocument.Load ().
300 2009-09-27 Ankit Jain <jankit@novell.com>
302 * ConditionParser.cs: Show the condition being parsed in the
305 2009-09-26 Ankit Jain <jankit@novell.com>
307 * Expression.cs: Allow '-' in item, property and metadata names.
309 2009-09-26 Ankit Jain <jankit@novell.com>
311 * Project.cs (Evaluate): Split into this and ..
312 (PrepareForEvaluate): .. this.
313 (AddImport): Evaluate the current set of properties/items etc,
314 before processing the imported project. Honor the Condition
316 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
318 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
319 * BuildItemGroup.cs (Evaluate): Evaluate only once.
320 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
322 2009-09-26 Ankit Jain <jankit@novell.com>
324 * Project.cs: Get InitialTargets from the imported projects also.
325 The combined list of targets are executed, in the order they were
327 DefaultTargets are also read in from imported projects, and the first
328 non-empty DefaultTargets found is used.
330 2009-09-25 Ankit Jain <jankit@novell.com>
332 * Project.cs (BuildTarget): Handle skipped targets.
334 2009-09-25 Ankit Jain <jankit@novell.com>
336 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
337 InvalidProjectFileException with useful error.
339 2009-09-24 Ankit Jain <jankit@novell.com>
341 * Project.cs (Load): Emit the .sln.proj file only if env var
342 XBUILD_EMIT_SOLUTION is set.
344 2009-09-24 Ankit Jain <jankit@novell.com>
346 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
348 2009-09-24 Ankit Jain <jankit@novell.com>
350 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
353 2009-09-10 Ankit Jain <jankit@novell.com>
355 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
356 preserved, so use ConvertTo ITaskItem, rather than string.
357 Ensure that the new items have the metadata from references _in_
358 Include, and the metadata of _this_ builditem.
359 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
360 (MatchedFilenames): Rename to ..
361 (MatchedItems): .. this, and change type of array of ITaskItem.
362 Ensure that metadata of items in Includes are retained in the
365 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
366 param. If separator is present, then just return a "Join'ed"
367 string as the single task item.
368 * ItemReference.cs: Track api changes.
370 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
371 as we need separate task items.
373 2009-09-01 Ankit Jain <jankit@novell.com>
376 * Project.cs (BuildTarget): Move caching of target outputs to ..
377 * Target.cs: .. here. Move LogTargetSkipped also here.
378 Ensure that caching happens for target dependencies also.
380 2009-09-01 Ankit Jain <jankit@novell.com>
382 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
385 2009-09-01 Ankit Jain <jankit@novell.com>
387 * Expression.cs (ParseOptions): New enum. Replace the bool params
388 of exression.Parse with this. Add option to control expansion of
390 (CopyToExpressionCollection): Track api changes.
392 Update all expr.Parse calls to use the new enum.
393 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
394 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
396 * BatchingImplBase.cs: Track api changes. Allow metadata refs
398 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
399 * ItemReference.cs: Allow metadata in transforms.
400 * TaskEngine.cs: Allow metadata refs.
402 * MetadataReference.cs (.ctor): Add a 'original string' param.
404 2009-08-29 Ankit Jain <jankit@novell.com>
406 * Expression.cs (ExpressionOptions): New.
408 Introduce a ExpressionOptions argument to all ConvertTo*
409 methods. Implement the rule: in evaluation phase, expand
410 all items completely, but dont expand item refs in properties.
411 At other times, expand the item refs in the properties.
412 See comments in Expression.cs, for a full explanation.
413 * BuildItem.cs: Track api changes.
414 * BuildItemGroup.cs: Likewise.
415 * BuildProperty.cs: Track api changes. Handle self-references.
416 * BuildTask.cs: Track api changes.
417 * IReference.cs: Add ExpressionOptions param.
418 * ItemReference.cs: Track api changes.
419 * PropertyReference.cs: Likewise.
420 * MetadataReference.cs: Likewise.
421 * ExpressionCollection.cs: Track api changes. Add support for
422 converting all primitive types and DateTime, instead of a fixed
424 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
425 * TaskBatchingImpl.cs: Handle the case when batching is required,
426 but no items are available.
428 * TaskEngine.cs: Throw on unsupported types. Correctly handle
429 properties in case of empty values.
431 2009-08-26 Ankit Jain <jankit@novell.com>
433 * Expression.cs: Correctly handle a item reference with transform
434 when allowItems is false. If item ref is ignored, then the transform
435 will get incorrectly matched as a metadata ref.
436 * ItemReference.cs (.ctor): Add a @original_string param.
438 2009-08-26 Ankit Jain <jankit@novell.com>
440 * Utilities.cs (UnescapeFromXml): New. From md.
441 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
442 of the property element.
444 2009-08-26 Ankit Jain <jankit@novell.com>
446 * BuildProperty.cs (ConvertToString): New.
447 (ConvertoToITaskItemArray): New. Parse the property value.
448 * PropertyReference.cs (ConvertToString): Use BuildProperty's
450 (ConvertoToITaskItemArray): Likewise.
452 2009-08-21 Ankit Jain <jankit@novell.com>
454 * Engine.cs (EndProjectBuild): Use the @succeeded argument
455 instead of hardcoding 'true'.
456 * Target.cs (Build): Add an overload to return executeOnErrors
457 value for the target executed. If building dependencies fails,
458 and executeOnErrors is true, then execute OnError tasks.
459 Add the new param to ..
460 (BuildDependencies): this, ..
462 (GetDependencies): Improve error message and variable name.
463 (ExecuteOnErrors): Honor OnError tag's Condition also.
464 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
466 2009-08-20 Ankit Jain <jankit@novell.com>
469 * Project.cs (Load): Add support for loading .sln files.
471 2009-08-20 Ankit Jain <jankit@novell.com>
473 * BuildTask.cs (Execute): Use task_logger only after the task
474 has been initialized. Catch and report task loading errors.
475 * Target.cs (DoBuild): Dont rethrow the exception, and emit
476 the stacktrace as a low importance message.
478 2009-08-18 Ankit Jain <jankit@novell.com>
480 * BatchingImplBase.cs: Make the item name lookups and metadata be case
482 * TaskDatabase.cs: Likewise.
483 * TaskEngine.cs: Make property name looks, case insensitive.
485 2009-08-09 Miguel de Icaza <miguel@novell.com>
487 * ConsoleLogger.cs: Change the format of the error and warnings
488 strings to work when invoked inside Emacs by not rendering the
489 column if available, by using lowercase "error"/"warning" strings
490 instead of camelcased versions and to not have unnecessary padding.
492 2009-07-31 Ankit Jain <jankit@novell.com>
494 * ConsoleLogger.cs: Keep track of all the errors and warnings
495 and show them at the end.
497 2009-07-31 Ankit Jain <jankit@novell.com>
499 * Target.cs (Build): Log a message if a target is skipped.
501 * BuildTask.cs (Execute): Log error if task execution fails.
503 2009-07-30 Ankit Jain <jankit@novell.com>
505 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
506 v2.0, this will change when multi-targeting lands.
508 2009-07-30 Ankit Jain <jankit@novell.com>
510 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
511 'MSBuildProjectName' properties.
513 2009-07-28 Ankit Jain <jankit@novell.com>
515 * TaskEngine.cs (Prepare): Fix formatting mistake.
516 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
517 fails. Also, emit result of project at Normal verbosity level.
519 2009-07-23 Ankit Jain <jankit@novell.com>
522 * Project.cs (ExtensionsPath): New.
523 (InitializeProperties): Set "MSBuildExtensionsPath" property.
525 2009-06-12 Ankit Jain <jankit@novell.com>
528 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
529 itemref is allowed if the prev/next element is ";".
531 2009-06-12 Ankit Jain <jankit@novell.com>
533 * Utilities.cs (FromMSBuildPath): Return null if the path contains
534 "drive:" only on windows.
536 2009-06-07 Ankit Jain <jankit@novell.com>
538 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
541 2009-05-29 Ankit Jain <jankit@novell.com>
543 Correctly handle global properties. Correctly log
544 project/build events.
546 * BuildPropertyGroup.cs (Clone): Implement.
547 * Engine.cs (globalProperties): Rename to ..
548 (global_properties): .. this.
549 (currentlyBuildingProjectsStack): New. Used to correctly
550 log and raise project/build start/finish events.
551 (BuildProjectFile): Override any project global properties
552 with explicitly specified ones, here in the param @globalProperties.
553 Mark project for reevaluation, which will update the engine's
554 global properties also.
555 Reset both engine and project's old global properties at the end.
556 (UnregisterAllLoggers): Log build finished only if we are currently
558 (StartBuild): Rename to ..
559 (StartProjectBuild): .. this. Keeps track of the projects being built
560 in the new stack, and logs project and build events accordingly.
561 (EndProjectBuild): New. Uses the stack to keep track of projects
562 finishing builds, and raises project and build events accordingly.
563 (LogProjectStarted): Move here from Project.cs
564 (LogProjectFinished): Likewise.
566 * Project.cs (Build): Log start of project build.
567 Set current directory to the project file's dir, and reset at end.
568 (BuildInternal): Don't log here, its done in Build.
569 (BuildTarget): Already built targets are keyed by the set of global
570 properties that they were built with.
571 (GlobalPropertiesToString): New.
572 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
573 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
574 (Evaluate): Remove built targets only if we are currently building and
575 build settings are None.
576 Merge project's global properties with those of the parent engine.
577 Add missing properties from engine's global properties.
578 (LogTargetSkipped): Fix format string, add the reqd argument.
580 2009-05-29 Ankit Jain <jankit@novell.com>
582 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
583 (HasTrailingSlash): New.
585 2009-05-12 Ankit Jain <jankit@novell.com>
587 * Project.cs (.ctor): Init timeOfLastDirty.
589 2009-05-05 Miguel de Icaza <miguel@novell.com>
591 * Contribution from Martin Brenn to fix #498154.
593 2009-04-27 Ankit Jain <jankit@novell.com>
596 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
597 one passed as argument.
599 2009-04-27 Ankit Jain <jankit@novell.com>
601 * TaskEngine.cs (Prepare): Emit a useful error message property value
602 can't be converted to required type.
604 2009-04-27 Ankit Jain <jankit@novell.com>
606 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
607 as valid true values for bool, and corresponding for false.
609 2009-03-27 Jonathan Chambers <joncham@gmail.com>
611 * BuildWhen.cs: Add basic implementation.
612 * BuildChoose.cs: Add basic implementation.
613 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
614 EvaluatedItemsIgnoringCondition.
615 * GroupingCollection.cs: Add evaluation of BuildChoose items.
617 2009-03-26 Jonathan Chambers <joncham@gmail.com>
619 * TaskDatabase.cs (RegisterTask): Search for class by name
620 if task was not found using GetType (which uses namespace).
622 2009-02-26 Ankit Jain <jankit@novell.com>
624 * Target.cs: Handle target with no tasks. Log errors.
626 2009-02-24 Ankit Jain <jankit@novell.com>
628 Lazily load UsingTask tasks.
629 * UsingTask.cs (Evaluate): Register 'this' with task database,
630 but don't load it yet. Register only if condition evaluates to true.
631 Move the load logic to ..
632 (Load): .. here. Register with the specified task database.
633 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
634 in a table keyed by task name, but don't load it yet.
635 (GetTypeFromClassName): Try to load UsingTask if task is not already
636 loaded. Move loading logic to ..
637 (GetTypeFromClassNameInternal): .. here.
638 (CopyTasks): Copy the usingTasks table also.
640 2009-02-23 Ankit Jain <jankit@novell.com>
642 * BuildItem.cs (AddMetadata): Allow overwriting older values.
644 2009-02-22 Ankit Jain <jankit@novell.com>
646 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
647 instead of XmlElement. Eg. XmlComment
649 2009-02-21 Ankit Jain <jankit@novell.com>
651 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
652 * Project.cs (Load): Use FromMSBuildPath on the path.
653 (InitializeProperties): Set "MSBuildToolsPath" also.
655 2009-02-20 Ankit Jain <jankit@novell.com>
658 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
659 transforms) in conditions.
660 * ConditionParser.cs: Parse unquoted item, property references.
661 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
662 * Token.cs (Token.ToString): Override.
663 (TokenType.Transform): Uncomment.
665 2009-02-12 Jonathan Chambers <joncham@gmail.com>
667 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
668 no XmlElement.InnerText. This allows properties to be additional
671 2009-02-01 Ankit Jain <jankit@novell.com>
673 * BuildEngine.cs (BuildProjectFile): Use
674 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
675 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
676 built. Move logging of project start/finish to ..
677 * Project.cs: .. here. Build a target only if hasn't been built already.
678 Keep track of target outputs, and return those even if an already built
679 target has been invoked again.
680 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
682 2009-01-31 Ankit Jain <jankit@novell.com>
684 * BatchingImpl.cs: Split into ..
685 * BatchingImplBase.cs: .. this,
686 * TaskBatchingImpl.cs: .. this ..
687 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
689 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
690 (Log*): Move to TargetBatchingImpl .
694 2009-01-30 Ankit Jain <jankit@novell.com>
696 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
699 2009-01-29 Ankit Jain <jankit@novell.com>
701 * BuildItem.cs (child_items): Change type from BuildItemGroup to
703 (HasParent): Rename to ..
704 (HasParentItem): .. this.
705 (ParentItemGroup): Add setter.
707 * BuildItemGroup.cs (.ctor): Add overload with @project param.
709 (AddItem): Correctly set the ParentItemGroup for new build items.
710 (ParentProject): Add setter.
711 * Project.cs: Set the project for new BuildItemGroup instances.
712 * TaskEngine.cs (PublishItemGroup): Likewise.
714 2009-01-06 Ankit Jain <jankit@novell.com>
716 * Project.cs (Build): Honor InitialTargets list.
718 2009-01-06 Ankit Jain <jankit@novell.com>
720 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
721 the property type also.
722 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
725 2009-01-06 Ankit Jain <jankit@novell.com>
727 * Project.cs (Build): Correctly handle null targetNames argument.
729 2009-01-06 Ankit Jain <jankit@novell.com>
731 * Engine.cs (LogProjectStarted): Add a null check.
733 2009-01-01 Ankit Jain <jankit@novell.com>
735 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
736 * ChangeType (ToBuildItemGroup): Add 'split' param.
738 * Expression.cs (Parse): Add a new overload with a 'split' param.
739 * ExpressionCollection.cs (Add): Add new overload for IReference,
740 remove the ones for Item/Metadata/PropertyReference.
741 (ConvertToArray): Implement correctly.
742 (ConvertToString): Track api changes.
743 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
744 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
745 (AddItemsToArray): New.
746 (ConvertToITaskItemArrayFromString): Refactor a bit.
747 (ThrowCantConcatError): New.
748 * ItemReference.cs: Update.
749 * MetadataReference.cs: Update.
750 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
752 * BuildPropertyGroup.cs: Track api changes.
753 * TaskEngine.cs (PublishOutput): Improve exception message.
754 * Project.cs (DoLoad): Improve exception message. Add a null check.
756 2008-12-30 Ankit Jain <jankit@novell.com>
758 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
759 metadata values for unqualified references.
760 (BuildItemGroupToITaskItemArray): Rename to ..
761 (BuildItemGroupToITaskItems): .. this.
764 2008-12-18 Ankit Jain <jankit@novell.com>
766 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
768 2008-12-17 Ankit Jain <jankit@novell.com>
770 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
771 only one instance of unique metadata value is required.
773 2008-11-22 Ankit Jain <jankit@novell.com>
775 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
777 * MetadataReference.cs (ConvertToITaskItemArray): New.
778 * Project.cs (GetAllItemGroups): New.
780 2008-11-21 Ankit Jain <jankit@novell.com>
782 * BatchingImpl.cs: Add task batching implementation.
783 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
784 * ExpressionCollection.cs (Count): New.
785 (ConvertToString): Handle MetadataReference.
786 * ItemReference.cs (ConvertToString):
787 (ConvertToITaskItemArray): Use the batching api.
789 * MetadataReference.cs (ConvertToString): New.
791 * Project.cs: Add api for accessing batched items and metadata.
792 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
795 2008-10-01 Ankit Jain <jankit@novell.com>
797 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
798 (BuildProjectFile): If filename is null (project.LoadXml) then use
800 * BuildTask.cs (InitializeTask): Track api change.
801 * Expression.cs (Parse): Skip empty entries in the expression.
803 2008-09-24 Ankit Jain <jankit@novell.com>
805 * Engine.cs: Add argument checks.
806 * Project.cs: Likewise.
808 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
810 * Project.cs (Build): Add outputs to targetOutputs.
812 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
814 * ExpressionCollection.cs (ConvertToArray): Simplify.
816 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
818 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
819 simplified. It still needs tests and refactoring.
821 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
823 * BuildEngine.cs (BuildProjectFile): Don't crash on null
826 * Target.cs: Add Outputs property.
828 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
830 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
831 (). Support condition.
833 * BatchingImpl.cs (BatchBuildTask): Simplify.
835 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
837 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
840 * ConditionFunctionExpression.cs: Removed warnings.
842 * BuildTask.cs (Execute): Write exceptions to std err (they should be
843 logged but it's better than swallowing).
845 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
847 * ConditionTokenizer.cs: Add Putback ().
849 * ConditionParser.cs: Add parsing of functions.
851 * ConditionFunctionExpression.cs: Add.
853 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
855 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
856 set property in persisted property group.
858 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
860 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
863 * ConsoleLogger.cs (TargetFinishedHandler)
864 (TaskFinishedHandler): Increment error count.
866 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
868 * BuildItem.cs (RemoveMetadata): Remove from XML.
869 (SetMetadata): Trigger project reevaluation.
871 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
873 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
876 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
878 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
879 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
880 BatchingImpl.cs, BuildProperty.cs: Track API changes.
882 * Expression.cs (Parse): Added allowItems parameter and made regexes
885 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
886 will try to import a.ext when given a.EXT.
888 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
890 * BuildItemGroup.cs: Store information saying what is the last item
891 group that contains build item name.
893 * Project.cs (Build): Pass empty array (build default targets).
895 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
897 * Token.cs: Commented Transform and LiteralSubExpression and added
900 * ConditionParser.cs: Removed redundant casts, rewrote
901 ParseFactorExpression () and added parsing of '!'.
903 * ConditionTokenizer.cs: Always skip whitespaces when getting next
904 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
905 Moved ReadChar () in front of all ifs.
907 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
909 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
910 from XML. (not to escape items that have parents twice).
912 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
914 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
915 (Project): Renamed to ParentProject.
917 * BuildItem.cs (ctor)
918 (CopyCustomMetadata): Add null check.
920 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
921 (RemoveProperty): Added null check.
923 * TargetCollection.cs (RemoveTarget): Added null check.
925 * Engine.cs (UnloadProject): Added null check.
927 * GroupingCollection.cs (Remove): Check if removed group belongs to
930 * Project.cs (AddNewItem): Implemented.
931 (RemoveItem): Reorganized.
932 (SetProjectExtensions): Added null check.
934 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
936 * BuildItemGroup.cs (Detach): Added.
938 (RemoveItemAt): Used Detach ().
940 * BuildItem.cs: Made FromXml and HasParent internal and added
941 ParentItem and ParentItemGroup properties (internal).
944 * GroupingCollection.cs (Remove): Used Detach ().
946 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
948 (GetEvaluatedItemsByNameIgnoringCondition)
949 (GetEvaluatedItemsByName)
950 (GetEvaluatedProperty): Reevaluate if needed.
952 (RemoveAllItemGroups)
953 (RemoveAllPropertyGroups): Implemented.
954 (DoLoad): Added closing of TextReader.
956 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
958 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
959 change but just mark that it needs it.
961 * Project.cs: Reevaluate when it needs reevaluation and one of
962 Evaluated* properties is used.
964 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
966 * Target.cs: Throw an exception when <OnError> is not last element in
969 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
971 * TargetCollection.cs: If a target is already there replace it with
974 * BuildProperty.cs: Added XmlElement property.
976 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
978 * ImportCollection.cs: Don't add imports that are already added.
980 * BuildItemGroup.cs: MonoTODOs.
982 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
983 condition can't be evaluated to bool.
985 * BuildPropertyGroup.cs (Evaluate): Simplify.
987 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
989 * BuildWhen.cs: Moved BindToXml () code to ctor.
991 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
992 property needed for removing groups.
994 * Engine.cs: Added StartBuild () that logs build start when Build ()
997 * GroupingCollection.cs: Added Remove () for item and property groups.
999 * Project.cs (AddNewImport): Implemented.
1000 (AddNewItemGroup): Implemented.
1001 (AddNewPropertyGroup): Implemented.
1002 (AddNewUsingTaskFromAssemblyFile): Implemented.
1003 (AddNewUsingTaskFromAssemblyName): Implemented.
1004 (RemoveItemGroup): Implemented.
1005 (RemovePropertyGroup): Implemented.
1007 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
1009 * BuildItemGroup.cs (Clear): Remove from XML.
1011 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
1012 to Project.EvaluatedProperties.
1013 (Clear): Remove from XML.
1015 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1017 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
1020 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1022 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
1023 Add () calls when processing a project from Import and
1024 evaluate_iterator for evaluation.
1026 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1028 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
1029 and prepend relative directory of importing project to full path of
1032 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1034 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1035 BuildItemGroupCollection.cs, Project.cs: Track API changes.
1037 * GroupingCollection.cs: Now it needs Project reference so added it.
1039 * BuildTask.cs: Formatting.
1041 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
1043 * ConditionParser.cs (ParseAndEvaluate): Added.
1045 * BuildItem.cs: Changed exception message.
1047 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1049 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1050 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
1051 GroupingCollection doesn't need Project reference.
1053 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
1055 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
1056 (Project.EvaluatedItems is a read only item group.)
1057 (ReplaceWith): Added.
1059 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
1060 global property group causes reevaluation of its project.
1062 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
1065 * OldExpression.cs: Removed.
1067 * BuildProperty.cs (Evaluate): Simplified.
1069 * ChangeType.cs (TemporaryTransform): Simplified.
1071 * BuildItem.cs: There are now 3 types of build items: from XML, having
1072 parent from XML, virtual. Added SplitParentItem ().
1074 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1076 * Utilities.cs: Added Unescape ().
1078 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
1079 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
1080 groups (at the moment just unescape).
1082 * Expression.cs (CopyToExpressionList): Unescape strings.
1084 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1086 * Target.cs (ctor): Added ImportedProject argument and removed
1088 (AddNewTask): Implemented.
1090 * TargetCollection.cs (AddNewTarget): Implemented.
1092 * Project.cs: Track API changes.
1094 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1096 * Target.cs (Build): Don't throw anything in case of error, just
1099 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
1102 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
1105 * BuildProperty.cs (ToString): Throw an exception if property is not
1107 (op_Explicit): Added a null check.
1109 * Engine.cs: Better error message.
1111 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
1112 IndexOutOfRangeException.
1114 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
1115 (MarkProjectAsDirty): Set time.
1117 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1119 * BuildItemGroup.cs (Clone): Throw exception.
1121 * Project.cs (Load): Throw InvalidProjectFileException if anything
1124 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1126 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
1127 and ConvertToITaskItemArray ().
1129 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1131 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
1132 classes that were public in Beta 2 and aren't used.
1134 * Expression.cs: Added replacement for parsing expressions char by
1135 char. It uses regexes to find item/property/metadata references in
1138 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1139 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1140 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1142 * ConditionRelationalExpression.cs: Formatting.
1144 * OldExpression.cs: Commented everything.
1146 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1147 parsing to Expression.
1149 * BuildItem.cs: Check if project is from XML in set_Condition and
1152 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1155 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1156 can evaluate expression in CanEvaluateToBool ().
1158 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1160 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1161 which item group is imported.
1163 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1165 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1167 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1168 BuildItemGroupCollection.cs: Little changes related to
1171 * ImportCollection.cs: Use GroupingCollection not an internal list.
1173 * Import.cs (Evaluate): Split to functions and check if
1174 EvaluatedProjectPath is empty.
1176 * GroupingCollection.cs, Project.cs: Move evaluation to
1177 GroupingCollection. Change algorithm to use 2 passes: first for property
1178 groups and imports and second for item groups.
1180 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1182 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1183 BuildItemGroup> not IDictionary.
1185 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1186 evaluated to false because we want to add every item to
1187 Project.EvaluatedItemsByNameIgnoringCondition.
1189 * Project.cs (Build): Don't throw an exception just return false.
1190 (GetEvaluatedProperty): Avoid NullReferenceException.
1191 (SetProjectExtensions): Implemented.
1193 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1195 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1197 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1198 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1199 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1201 * ImportCollection.cs: Added a note.
1203 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1205 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1207 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1208 (UsingTask[] array, int index)
1210 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1211 items to Project.EvaluatedItems in PublishItemGroup ();
1213 * BuildItemGroup.cs: Added [MonoTODO].
1215 * UsingTask.cs: Used expression for AssemblyFile to get around
1216 problems with '\' and '/'.
1218 * BuildItem.cs (ctor): Added null checks.
1219 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1220 (SetMetadata): Don't escape evaluatedMetadata and escape
1221 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1223 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1224 FromXml () instead of null checks.
1225 (SetProperty): Escape propertyValue when it is literal.
1227 * BuildProperty.cs: Changed exception message.
1229 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1231 (GetProjectExtensions): Implemented.
1233 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1235 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1236 GetParameterValue (), use expressions in ContinueOnError.
1237 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1238 instead of InvalidOperationException ().
1239 * ImportCollection.cs: Implement CopyTo ().
1240 * Target.cs: Remove redundant variables (XmlAttributes), return
1241 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1242 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1243 * Import.cs: Throw an exception when file does not exist.
1244 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1245 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1246 need to treat item as a token probably
1248 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1250 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1251 throw an exception).
1252 * BuildItemGroupCollection.cs: Changed exception types.
1254 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1256 * Engine.cs: Removed redundant cast.
1258 * UsingTaskCollection.cs:
1262 * TargetCollection.cs: Comment unused variable.
1263 * ConditionTokenizer.cs: Simplified checking if current token is a
1265 * Target.cs: Removed old code.
1267 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1269 * Target.cs: Changed "" to String.Empty.
1270 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1271 string was evaluated to String.Empty.
1272 * InternalLoggerException.cs:
1273 * InvalidProjectFileException.cs: Added LinkDemand before
1275 * ConsoleLogger.cs: Changed "" to String.Empty.
1276 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1277 with change to generics).
1278 * Project.cs: Made Build () throw more meaningful exception.
1280 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1282 * Target.cs: Reformatted.
1283 * TaskEngine.cs: Removed redundant code.
1284 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1285 * Engine.cs: Made BuildProjectFile () load project file if it's not
1288 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1290 * ConditionRelationalExpression.cs: Change comparers to case
1292 * ImportCollection.cs: Add NotImplementedExceptions.
1293 * BuildPropertyGroup.cs: Reformatted a bit.
1294 * BuildProperty.cs: The same.
1295 * Project.cs: Moved evaluation of imports before evaluation of
1296 properties. This may "work" until importing projects is redesigned but
1297 probably isn't correct.
1299 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1301 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1303 * BuildItemGroup.cs: Change return to continue.
1305 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1307 * ConditionParser.cs: Copyright note.
1308 * ExpressionCollection.cs: Fixed arrays passing.
1310 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1312 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1313 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1314 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1315 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1317 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1319 * Token.cs: Changed names: removed "than".
1320 * ConditionRelationalExpression.cs: Added.
1321 * ConditionFactorExpression.cs: Added.
1322 * BuildItemGroup.cs: Changed Condition property return value to return
1323 String.Empty instead of null.
1324 * ConditionParser.cs: Added support for parsing relational expressions
1326 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1327 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1328 and CanEvaluateToBool (), CanEvaluateToNumber () and
1329 CanEvaluateToString ().
1330 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1331 appropriately to ConditionExpression base class.
1332 * ConditionTokenizer.cs: Added null check and changed names in enums:
1334 * ConditionNotExpression.cs: Added.
1335 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1336 * Project.cs: Added checks for condition.
1338 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1340 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1341 ConditionalParser.cs: Changed name,
1343 * ConditionExpression.cs: Added Evaluate ().
1344 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1345 * BatchingImpl.cs: Added check if task should be executed.
1347 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1349 * UsingTask.cs: Changed properties to return null on empty attribute.
1350 * UsingTaskCollection.cs: Added object to SyncRoot.
1351 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1353 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1355 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1356 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1358 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1360 * Utilities.cs: Implemented Escape ().
1361 * BuildItem.cs: Added null checks.
1362 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1363 * Project.cs: Commented out redundant Evaluate ().
1364 * BuildChoose.cs: Minor changes.
1366 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1368 * Token: Added new few missing tokens.
1369 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1370 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1371 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1372 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1373 LiteralTokenizer.cs:
1374 Removed literal expression parsing based on tokenizer and
1375 parser. It needs to be done by regex.
1377 Moved tokenizer to ConditionalTokenizer.cs.
1379 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1381 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1382 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1383 methods converting reference to string from ToString () to
1384 ConvertToString () to avoid mistakes like using ToString () provided
1387 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1389 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1390 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1391 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1392 OldExpression and changed To* functions to one ConvertTo ().
1393 * TaskEngine.cs: Fixed PublishOutput ().
1394 * OldExpression.cs: Added. It will be temporarily used before
1395 LiteralExpression will be written using Tokenizer.
1396 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1397 ExpressionParseException.cs, LiteralExpression.cs: Added.
1399 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1401 * ImportedProject.cs: Removed warning.
1402 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1405 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1407 * Project.cs: Removed unnecessary variable.
1408 * Engine.cs: Added fixme.
1410 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1412 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1413 class (Mono.XBuild.Utilities.ReservedNameUtils).
1415 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1417 * BuildTask.cs: Removed unnecessary variable.
1418 * Engine.cs: Added logging of the build start.
1419 * Project.cs: Removed unnecessary variable.
1421 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1423 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1425 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1427 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1429 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1431 * BuildItem.cs: Fix typo?
1433 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1435 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1436 Engine.cs, Project.cs: Coding style fixes.
1438 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1440 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1442 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1444 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1445 to pass tests. Wrote serialization constructor.
1446 * Engine.cs, Project.cs: Global engine and project unloading, test and
1449 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1451 * UsingTask.cs: Formatting changes.
1453 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1455 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1456 to lists instead of hashtables.
1457 * Import.cs: Cleaned up, moved importing from Project.cs
1458 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1459 * Engine.cs: Cleaned up properties.
1460 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1461 Separated evaluation and loading.
1463 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1465 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1466 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1467 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1468 binding and evaluation, merge xml binding in constructors.
1469 * DirectoryScanner.cs: Includes CAN be empty.
1470 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1471 * ConsoleLogger.cs: Fix compilation warning.
1473 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1475 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1477 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1479 * Engine.cs: API cleanup.
1481 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1483 * Project.cs: Cleaned up add.
1484 * Expression.cs: Hacked to transform \ and / to path separators.
1485 * BuildPropertyGroup.cs: Small cleanup.
1486 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1489 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1491 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1492 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1494 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1495 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1496 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1498 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1499 * TaskElement.cs: Temporarily removed.
1500 * Xml.cs: Changed to static.
1502 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1504 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1505 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1506 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1507 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1508 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1509 IBuildPropertyGroupCollection.cs: Removed.
1511 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1513 * BuildItem.cs: Removed IBuildItem references.
1514 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1515 IBuildItemGroup references. Changed Evaluate to internal.
1516 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1517 reference and hidden constructors.
1518 * BuildProperty.cs: Removed IBuildProperty reference.
1519 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1520 IBuildPropertyGroup references. Changed Evaluate to internal.
1521 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1522 reference and hidden constructors.
1523 * ConsoleLogger.cs: Updated names of event handlers.
1524 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1525 Escape. Added UnloadAllProjects () and UnloadProject ().
1526 * FileLogger.cs: Removed ApplyParameter ().
1527 * GroupingCollection.cs: Hidden.
1528 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1529 * ItemPropertyGroupingBase.cs: Commented.
1530 * ProcessingPass.cs: Hidden.
1531 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1533 * Target.cs: Removed ITarget reference.
1534 * TargetCollection.cs: Removed ITargetCollection reference.
1535 * TaskElement.cs: Removed ITaskElement reference.
1536 * TaskEngineAssemblyResolver.cs: Hidden.
1537 * Utilities.cs: Made static class, removed CheckPath (),
1538 ValidateCulture (), GetSupportedCultures () and added Escape ().
1540 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1542 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1545 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1547 * Project.cs: Added MonoTODO attributes.
1548 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1549 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1550 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1551 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1552 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1553 BuildItemGroup.cs, InvalidProjectFileException.cs,
1554 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1555 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1556 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1557 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1558 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1559 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1560 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1561 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1562 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1563 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1564 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1565 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1567 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1569 * TaskDatabase.cs: Change Shared to Framework.
1570 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1571 CaseInsensitiveHashCodeProvider
1573 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1575 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1576 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1579 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1581 * InternalLoggerException.cs: Changed protected fields to private.
1583 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1585 * Engine.cs: Added check for globalProperties.
1586 * Project.cs: Added using path from importedProject.FullFileName when
1587 adding UsingTask elements.
1589 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1591 * TaskElement.cs: Changed ReflectedType to PropertyType.
1592 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1595 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1597 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1599 * BuildProperty.cs: Organized PropertyType enum.
1600 * Engine.cs: Added setting CommandLine PropertyType of global
1603 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1605 * InvalidProjectFileException.cs: Changed Message property.
1606 * ChangeType.cs (TransformToString): Added separator between items.
1607 * TaskEngineAssemblyResolver.cs: Formatting.
1609 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1611 * DirectoryScanner.cs: Added.
1612 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1613 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1614 * Project.cs: Removed Evalute* ().
1616 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1618 * Target.cs: Formatting.
1619 * Expression.cs: Added check if array == null.
1620 * BuildItem.cs: Removed 'break' to remove warnings.
1621 * ConsoleLogger.cs: Formatting.
1622 * Engine.cs: Added handling of default target(s).
1623 * Project.cs: Added handling of default target(s).
1625 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1627 * TaskElement.cs: Added check for parameters.
1628 * Target.cs: Added logging of target skipping.
1629 * Expression.cs: Changed returning object[] to string[], bool[]... in
1631 * ItemReference.cs: Fixed for item references without custom
1633 * BatchingImpl.cs: Added real inputs/outputs checking.
1634 * Engine.cs: Moved global properties setting.
1635 * Project.cs: Moved global properties setting.
1637 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1639 * Target.cs: Added checks for target existence.
1640 * BuildItemGroup.cs: Changed to use transforms.
1641 * MetadataReference.cs: Wrote real implementation.
1642 * ItemReference.cs: Rewritten to use transforms.
1643 * BuildItem.cs: Changes for transforms and metadata.
1644 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1646 * Project.cs: Fixed project importing.
1647 * ImportedProject.cs: Changed to throw exceptions instead of returning
1650 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1652 * Engine.cs: Removed FIXME.
1653 * Project.cs: Splitted ProcessElements and added project importing.
1654 * ImportedProject.cs: Rewritten.
1656 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1658 * TaskElement.cs: Added getting of objects of every type.
1659 * BuildItemGroup.cs: Added ToITaskItemArray ().
1660 * Expression.cs: Implemented part that is not using metadata.
1661 * ItemReference.cs: Implemented parsing item references. Need to fix
1663 * BuildItem.cs: Fixed ToITaskItem ().
1664 * PropertyReference.cs: Implemented parsing property references. This
1665 also needs validity checking.
1667 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1669 * TaskElement.cs: Added Output element handling.
1670 * Target.cs: Cleaned up.
1671 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1672 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1673 ItemReference.cs, ChangeType.cs: Added.
1674 * BuildItem.cs: Added creating BuildItem from TaskItem.
1675 * BuildPropertyGroup.cs: Small changes.
1676 * BatchingImpl.cs: Fixed to return real task execution result.
1677 * BuildProperty.cs: Fixed FinalValue property.
1678 * Engine.cs: Reformatted logging.
1679 * Project.cs: Added check to EvaluateProperty.
1681 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1683 * TaskElement.cs: Added part of execution engine.
1684 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1685 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1686 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1687 * BuildItem.cs: Added handling of built-in metadata and referencing
1688 Items by name not FullName.
1689 * BatchingImpl.cs: Added temporary task "batching".
1690 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1691 * Project.cs: Added Evaluate. It will be moved to separate class.
1693 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1695 * EventSource.cs, Engine.cs: Added CriticalEvents.
1696 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1697 Project.cs: Added some support for items.
1698 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1700 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1702 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1705 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1707 * BatchingImpl.cs: Added.
1708 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1709 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1710 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1711 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1712 GroupingCollection.cs: Updated.
1714 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1716 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1717 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1718 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1719 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1720 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1721 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1722 InternalLoggerException.cs, InvalidProjectFileException.cs,
1723 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1724 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1725 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1726 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1727 Initial check-in of implementations.
1729 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1731 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1732 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1733 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1734 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1735 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1736 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1737 Initial check-in of interfaces and a syntax file, real classes are
1738 changing a lot so I'll wait a moment with checking them in.