1 2010-07-22 Ankit Jain <jankit@novell.com>
3 * Project.cs: Add reserved properties MSBuildProjectFullPath
4 and MSBuildProjectExtension .
6 2010-07-09 Ankit Jain <jankit@novell.com>
8 Correctly handle precedence of ToolsVersion value coming
10 * BuildEngine.cs (BuildProjectFile): Restore project.ToolsVersion .
11 * Engine.cs: Likewise. Also validate DefaultToolsVersion .
12 * Project.cs: Handle invalid tools version specified in the project
13 file, and fall back to engine's version.
14 * MSBuild.cs: Fix the precedence order, and validate.
15 * UnknownToolsVersionException.cs: New.
17 2010-06-23 Ankit Jain <jankit@novell.com>
19 * TargetBatchingImpl.cs (BuildTargetNeeded): Fix var names to
20 correctly reflect what they track. Log messages when skipping
23 2010-06-04 Ankit Jain <jankit@novell.com>
25 * Import.cs (EvaluateProjectPath): Add a hack to support multiple
26 msbuild extension paths. Paths can be specified via the environment
27 variable - $MSBuildExtensionsPath . ~/.config/xbuild/tasks is also
28 checked for extensions, besides the default location.
29 This explicitly looks for a "$(MSBuildExtensionsPath)" in the import
30 expression and tries to replace that with possible paths, till it
31 finds the file. In rest of the project, the property would resolve
32 to its single default value.
34 2010-06-03 Ankit Jain <jankit@novell.com>
36 * Engine.cs (GetLoadedProject): Return null if project not found.
37 Based on a patch by Dale Ragan <dale.ragan@sinesignal.com> .
39 2010-05-28 Ankit Jain <jankit@novell.com>
42 * DirectoryScanner.cs (ProcessInclude): Set %(RecursiveDir) only if
43 the '**' wildcard was found in the original Include.
45 2010-04-10 Ankit Jain <jankit@novell.com>
47 * Project.cs (InitializeProperties): Set MSBuildBinPath to the current
50 2010-04-10 Ankit Jain <jankit@novell.com>
52 * TaskEngine.cs (Prepare): Throw InvalidProjectFileException instead of a generic
55 2010-04-10 Ankit Jain <jankit@novell.com>
57 * ConsoleLogger.cs (EventsToString): If the target being executed is
58 from an imported file, then show that.
60 2010-04-10 Ankit Jain <jankit@novell.com>
62 * Project.cs: Add property MSBuildExtensionsPath32, used by silverlight
65 2010-04-07 Ankit Jain <jankit@novell.com>
67 * ConsoleLogger.cs: Dump items and properties when a project starts
68 to build. Useful for debugging.
69 * Engine.cs (LogProjectStarted): Set the properties and items also,
70 for the project started event.
71 * Project.cs (EvaluatedPropertiesAsDictionaryEntries): New.
72 (EvaluatedItemsByNameAsDictionaryEntries): New. Required for
75 2010-04-03 Ankit Jain <jankit@novell.com>
77 * BuildEngine.cs: Implement IBuildEngine2 instead of
79 * BuildTasks.cs: Use the new extension methods for logging.
80 (InitializeTask): Emit a message informing about the assembly
81 from which the task is being loaded. Emit a useful debug message
82 incase of a InvalidCastException.
83 * Engine.cs: Add missing methods, constructors and properties related
84 to ToolsVersion support. Setup a default set of Toolsets.
85 Keep separate taskdbs' per ToolsVersion. The common tasks
86 would come from different *.tasks file, and use different
88 (DefaultToolsVersion): Correctly set this based on the profile.
89 * LogExtensions.cs: New. Extension methods on Engine, for logging.
90 * Project.cs: Add missing methods/contructors/properties related
91 to ToolsVersion support. Add reserved properties -
92 MSBuildToolsPath and MSBuildToolsVersion .
94 * ToolsetCollection.cs: New.
95 * ToolsetDefinitionLocations.cs: New.
97 2010-03-04 Ankit Jain <jankit@novell.com>
99 * BuildEngine.cs (LogErrorEvent): Log as warning, if
100 ContinueOnError==true, and log a corresponding message.
101 * TargetBatchingImpl.cs: Refactor to share code between the
102 batched and unbatched case. If a task fails and
103 ContinueOnError==true, then ignore the failed state.
105 2010-02-19 Ankit Jain <jankit@novell.com>
107 * BuildItem.cs: Track api changes.
108 (SetMetadata): Allow RecursiveDir to be set, this is set by
110 * DirectoryScanner.cs (ProcessInclude): Set RecursiveDir metadata.
112 2010-02-19 Ankit Jain <jankit@novell.com>
114 * Import.cs (Evaluate): Add param @ignoreMissingImports.
115 * Project.cs (Load*): Add overloads with param @projectLoadSettings.
116 (Log*): Mark internal.
117 * ProjectLoadSettings.cs: New.
119 2010-02-04 Ankit Jain <jankit@novell.com>
122 * ConditionFunctionExpression.cs (Exists): Check for directory also.
124 2009-12-22 Ankit Jain <jankit@novell.com>
127 * DirectoryScanner.cs (Excludes): Change from string to ITaskItem[] .
128 * BuildItem.cs: Track api changes.
130 2009-12-02 Ankit Jain <jankit@novell.com>
133 * Engine.cs (UnloadAllProjects): Don't remove items from the collection
134 being iterated over. Patch by Laurent Etiemble
135 <laurent.etiemble@gmail.com>
137 2009-11-28 Ankit Jain <jankit@novell.com>
140 * BatchingImplBase.cs (DumpBucket*): New. Useful for debugging.
141 * Project.cs (Batch): New. Contains the perBatchItems and the
142 commonItems for the batch.
143 Use a stack of batches, instead of directly setting the current
147 (SetBatchedItems): Make this private.
148 (GlobalProperties.set): Re-evaluating the project is not required
150 * TargetBatchingImpl.cs: Use the new Push/PopBatch instead of directly
152 * TaskBatchingImpl.cs: Likewise. Refactor slightly to PopBatch in
154 * Target.cs (Build): Reset the current batch to nil before evaluating
155 and building this target.
157 2009-11-28 Ankit Jain <jankit@novell.com>
159 * Project.cs (TryGetEvaluatedItemByNameBatched): Item could be
160 available in either perBatchItemsByName or commonItemsByName
161 or the evaluatedItemsByName collection. Allows the use of
162 items which are not batched, but are consumed in case of batching.
164 2009-11-26 Ankit Jain <jankit@novell.com>
166 * TargetBatchingImpl.cs (BuildTargetNeeded): Expand metadata
167 refs also, for Inputs and Outputs.
169 2009-10-13 Ankit Jain <jankit@novell.com>
171 * DirectoryScanner.cs:
172 * ExpressionCollection.cs:
173 * GroupingCollection.cs:
175 * Target.cs: Fix warnings.
177 2009-10-12 Ankit Jain <jankit@novell.com>
179 * Target.cs (TargetFile): New. Gives the name of the file
180 containing the target definition.
181 * BuildEngine.cs (.ctor): Add a 'taskfile' parameters, and
182 return this for ProjectFileOfTaskNode.
183 * BuildTask.cs (LogTaskStarted):
184 (LogTaskFinished): Use parentTarget.ProjectFileOfTaskNode for
186 (InitializeTask): Set BuildEngine's task file to parent target's
188 * Engine.cs (LogProjectStarted): Incase of default targets, set
189 TargetNames to String.Empty .
190 * TargetBatchingImpl.cs (LogTargetStarted):
191 (LogTargetFinished): Use target.TargetFile for the event.
193 * ConsoleLogger.cs: Keep a stack of project/target/task being
194 executed. And corresponding list of errors and warnings.
195 (EventsToString): Stringifies the current "stack", to be used
196 as key to the table of errors/warnings and for show messages
197 at the end of the build.
199 2009-10-12 Ankit Jain <jankit@novell.com>
201 * Project.cs (Load): Add argument checks.
203 2009-10-11 Ankit Jain <jankit@novell.com>
205 * ConsoleLogger.cs (no_colors): Rename to ..
206 (use_colors): .. this. Fix the case when XBUILD_COLORS
209 2009-10-11 Ankit Jain <jankit@novell.com>
211 * ConsoleLogger.cs: Use ColorSetter and ColorResetter .
212 Support 'XBUILD_COLORS' to set colors for errors, warnings,
215 2009-10-10 Ankit Jain <jankit@novell.com>
217 * ConsoleLogger.cs (ProjectFinishedHandler): Once projectFailed
218 becomes true, don't reset it. We are looking for "atleast one
221 2009-10-08 Ankit Jain <jankit@novell.com>
223 * DirectoryScanner.cs: Use Path.GetPathRoot, instead of
224 directly using DirectoryInfo ("z:"), that doesn't return
227 2009-10-08 Ankit Jain <jankit@novell.com>
229 * DirectoryScanner.cs: Handle absolute paths. Fix to work
230 correctly on windows. Change order of adding paths to match
231 msbuild, useful to have.
233 2009-10-08 Ankit Jain <jankit@novell.com>
235 * TaskBatchingImpl.cs (ParseTaskAttributes): Parse attributes
236 of the 'Output' element also.
237 * TaskEngine.cs (PublishOutput): Honor condition on 'Output' also.
239 2009-10-07 Ankit Jain <jankit@novell.com>
241 * ConsoleLogger.cs: Mark build as failed, if any project failed.
243 2009-10-06 Ankit Jain <jankit@novell.com>
245 * ConsoleLogger: Improve error reporting. Don't count failed task,
246 target or project as another error. Show "errors" after "warnings",
247 more useful to the user.
248 * Project.cs (BuildTarget): Log error instead of using CWL.
250 2009-10-03 Ankit Jain <jankit@novell.com>
252 * Project.cs (OS): New.
253 (InitializeProperties): Set 'OS' as a pre-defined property, set to
254 'Windows_NT', 'Unix' or 'OSX' depending on the platform.
256 2009-10-02 Ankit Jain <jankit@novell.com>
258 * Expression.cs (Parse): Don't change '/' to '\\', not required.
260 2009-10-01 Ankit Jain <jankit@novell.com>
262 * Project.cs (AddImport): Show the correct source file name, when
263 the import is in the main project file.
265 2009-10-01 Ankit Jain <jankit@novell.com>
268 * Import.cs (.ctor): Evaluate and set EvaluatedProjectPath to
269 the full path of the imported project here itself, instead of ..
271 * ImportCollection.cs (Add): Use import.EvaluatedProjectPath .
273 * Project.cs (AddImport): Don't process if condition is false.
274 Warn if a circular reference is detected, and ignore the import.
276 2009-09-29 Ankit Jain <jankit@novell.com>
278 * GroupingCollection.cs (Evaluate): Mark internal.
279 * Project.cs (AddImport): Only evaluate the properties,
280 till before the import.
282 2009-09-29 Ankit Jain <jankit@novell.com>
284 * Project.cs (DoLoad): Don't use XmlReader.Create, for loading
285 the project xml, as returned Xml*Reader normalizes the newlines.
286 Instead directly use the TextReader with XmlDocument.Load ().
288 2009-09-27 Ankit Jain <jankit@novell.com>
290 * ConditionParser.cs: Show the condition being parsed in the
293 2009-09-26 Ankit Jain <jankit@novell.com>
295 * Expression.cs: Allow '-' in item, property and metadata names.
297 2009-09-26 Ankit Jain <jankit@novell.com>
299 * Project.cs (Evaluate): Split into this and ..
300 (PrepareForEvaluate): .. this.
301 (AddImport): Evaluate the current set of properties/items etc,
302 before processing the imported project. Honor the Condition
304 (ProcessProjectAttributes): Update MSBuildProjectDefaultTargets
306 * GroupingCollection.cs (Evaluate): Don't evaluate Imports here.
307 * BuildItemGroup.cs (Evaluate): Evaluate only once.
308 * BuildPropertyGroup.cs (Evaluate): Evaluate only once.
310 2009-09-26 Ankit Jain <jankit@novell.com>
312 * Project.cs: Get InitialTargets from the imported projects also.
313 The combined list of targets are executed, in the order they were
315 DefaultTargets are also read in from imported projects, and the first
316 non-empty DefaultTargets found is used.
318 2009-09-25 Ankit Jain <jankit@novell.com>
320 * Project.cs (BuildTarget): Handle skipped targets.
322 2009-09-25 Ankit Jain <jankit@novell.com>
324 * Project.cs (DoLoad): If a VS2003 project is detected, then throw
325 InvalidProjectFileException with useful error.
327 2009-09-24 Ankit Jain <jankit@novell.com>
329 * Project.cs (Load): Emit the .sln.proj file only if env var
330 XBUILD_EMIT_SOLUTION is set.
332 2009-09-24 Ankit Jain <jankit@novell.com>
334 * Project.cs (GetKeyForTarget): Make target name, case insensitive.
336 2009-09-24 Ankit Jain <jankit@novell.com>
338 * Project.cs (InitializeProperties): Set 'MSBuildProjectDefaultTargets'
341 2009-09-10 Ankit Jain <jankit@novell.com>
343 * BuildItem.cs (Evaluate): Metadata from "Include" should be,
344 preserved, so use ConvertTo ITaskItem, rather than string.
345 Ensure that the new items have the metadata from references _in_
346 Include, and the metadata of _this_ builditem.
347 * DirectoryScanner.cs (Includes): Change to a array of ITaskItem.
348 (MatchedFilenames): Rename to ..
349 (MatchedItems): .. this, and change type of array of ITaskItem.
350 Ensure that metadata of items in Includes are retained in the
353 * BuildItemGroup.cs (ConvertoToITaskItemArray): Add 'separator'
354 param. If separator is present, then just return a "Join'ed"
355 string as the single task item.
356 * ItemReference.cs: Track api changes.
358 * BuildProperty.cs (ConvertToITaskItemArray): Split the value,
359 as we need separate task items.
361 2009-09-01 Ankit Jain <jankit@novell.com>
364 * Project.cs (BuildTarget): Move caching of target outputs to ..
365 * Target.cs: .. here. Move LogTargetSkipped also here.
366 Ensure that caching happens for target dependencies also.
368 2009-09-01 Ankit Jain <jankit@novell.com>
370 * DirectoryScanner.cs (Scan): Ignore empty entries in includes and
373 2009-09-01 Ankit Jain <jankit@novell.com>
375 * Expression.cs (ParseOptions): New enum. Replace the bool params
376 of exression.Parse with this. Add option to control expansion of
378 (CopyToExpressionCollection): Track api changes.
380 Update all expr.Parse calls to use the new enum.
381 * BuildItem.cs, BuildProperty.cs, BuildTask.cs, Import.cs,
382 Target.cs, TargetBatchingImpl.cs, UsingTask.cs: Track api changes.
384 * BatchingImplBase.cs: Track api changes. Allow metadata refs
386 * ConditionFactorExpression.cs: Allow metadata refs in conditions.
387 * ItemReference.cs: Allow metadata in transforms.
388 * TaskEngine.cs: Allow metadata refs.
390 * MetadataReference.cs (.ctor): Add a 'original string' param.
392 2009-08-29 Ankit Jain <jankit@novell.com>
394 * Expression.cs (ExpressionOptions): New.
396 Introduce a ExpressionOptions argument to all ConvertTo*
397 methods. Implement the rule: in evaluation phase, expand
398 all items completely, but dont expand item refs in properties.
399 At other times, expand the item refs in the properties.
400 See comments in Expression.cs, for a full explanation.
401 * BuildItem.cs: Track api changes.
402 * BuildItemGroup.cs: Likewise.
403 * BuildProperty.cs: Track api changes. Handle self-references.
404 * BuildTask.cs: Track api changes.
405 * IReference.cs: Add ExpressionOptions param.
406 * ItemReference.cs: Track api changes.
407 * PropertyReference.cs: Likewise.
408 * MetadataReference.cs: Likewise.
409 * ExpressionCollection.cs: Track api changes. Add support for
410 converting all primitive types and DateTime, instead of a fixed
412 * Project.cs (GetMetadataBatched): Use the evaluated metadata.
413 * TaskBatchingImpl.cs: Handle the case when batching is required,
414 but no items are available.
416 * TaskEngine.cs: Throw on unsupported types. Correctly handle
417 properties in case of empty values.
419 2009-08-26 Ankit Jain <jankit@novell.com>
421 * Expression.cs: Correctly handle a item reference with transform
422 when allowItems is false. If item ref is ignored, then the transform
423 will get incorrectly matched as a metadata ref.
424 * ItemReference.cs (.ctor): Add a @original_string param.
426 2009-08-26 Ankit Jain <jankit@novell.com>
428 * Utilities.cs (UnescapeFromXml): New. From md.
429 * BuildProperty.cs (.ctor): Unescape xml codes from the InnerXml
430 of the property element.
432 2009-08-26 Ankit Jain <jankit@novell.com>
434 * BuildProperty.cs (ConvertToString): New.
435 (ConvertoToITaskItemArray): New. Parse the property value.
436 * PropertyReference.cs (ConvertToString): Use BuildProperty's
438 (ConvertoToITaskItemArray): Likewise.
440 2009-08-21 Ankit Jain <jankit@novell.com>
442 * Engine.cs (EndProjectBuild): Use the @succeeded argument
443 instead of hardcoding 'true'.
444 * Target.cs (Build): Add an overload to return executeOnErrors
445 value for the target executed. If building dependencies fails,
446 and executeOnErrors is true, then execute OnError tasks.
447 Add the new param to ..
448 (BuildDependencies): this, ..
450 (GetDependencies): Improve error message and variable name.
451 (ExecuteOnErrors): Honor OnError tag's Condition also.
452 * TaskBatchingImpl.cs (Run): Correctly set executeOnErrors param.
454 2009-08-20 Ankit Jain <jankit@novell.com>
457 * Project.cs (Load): Add support for loading .sln files.
459 2009-08-20 Ankit Jain <jankit@novell.com>
461 * BuildTask.cs (Execute): Use task_logger only after the task
462 has been initialized. Catch and report task loading errors.
463 * Target.cs (DoBuild): Dont rethrow the exception, and emit
464 the stacktrace as a low importance message.
466 2009-08-18 Ankit Jain <jankit@novell.com>
468 * BatchingImplBase.cs: Make the item name lookups and metadata be case
470 * TaskDatabase.cs: Likewise.
471 * TaskEngine.cs: Make property name looks, case insensitive.
473 2009-08-09 Miguel de Icaza <miguel@novell.com>
475 * ConsoleLogger.cs: Change the format of the error and warnings
476 strings to work when invoked inside Emacs by not rendering the
477 column if available, by using lowercase "error"/"warning" strings
478 instead of camelcased versions and to not have unnecessary padding.
480 2009-07-31 Ankit Jain <jankit@novell.com>
482 * ConsoleLogger.cs: Keep track of all the errors and warnings
483 and show them at the end.
485 2009-07-31 Ankit Jain <jankit@novell.com>
487 * Target.cs (Build): Log a message if a target is skipped.
489 * BuildTask.cs (Execute): Log error if task execution fails.
491 2009-07-30 Ankit Jain <jankit@novell.com>
493 * Engine.cs (.ctor): Set default BinPath. Currently this assumes
494 v2.0, this will change when multi-targeting lands.
496 2009-07-30 Ankit Jain <jankit@novell.com>
498 * Project.cs (InitializeProperties) Set 'MSBuildProjectFile' and
499 'MSBuildProjectName' properties.
501 2009-07-28 Ankit Jain <jankit@novell.com>
503 * TaskEngine.cs (Prepare): Fix formatting mistake.
504 * ConsoleLogger.cs: Emit "-- FAILED" also when project/target building
505 fails. Also, emit result of project at Normal verbosity level.
507 2009-07-23 Ankit Jain <jankit@novell.com>
510 * Project.cs (ExtensionsPath): New.
511 (InitializeProperties): Set "MSBuildExtensionsPath" property.
513 2009-06-12 Ankit Jain <jankit@novell.com>
516 * ExpressionCollection.cs (ConvertToITaskItemArray): Whitespace around a
517 itemref is allowed if the prev/next element is ";".
519 2009-06-12 Ankit Jain <jankit@novell.com>
521 * Utilities.cs (FromMSBuildPath): Return null if the path contains
522 "drive:" only on windows.
524 2009-06-07 Ankit Jain <jankit@novell.com>
526 * Target.cs (Outputs): Use ITaskItem[] for conversion, to retain
529 2009-05-29 Ankit Jain <jankit@novell.com>
531 Correctly handle global properties. Correctly log
532 project/build events.
534 * BuildPropertyGroup.cs (Clone): Implement.
535 * Engine.cs (globalProperties): Rename to ..
536 (global_properties): .. this.
537 (currentlyBuildingProjectsStack): New. Used to correctly
538 log and raise project/build start/finish events.
539 (BuildProjectFile): Override any project global properties
540 with explicitly specified ones, here in the param @globalProperties.
541 Mark project for reevaluation, which will update the engine's
542 global properties also.
543 Reset both engine and project's old global properties at the end.
544 (UnregisterAllLoggers): Log build finished only if we are currently
546 (StartBuild): Rename to ..
547 (StartProjectBuild): .. this. Keeps track of the projects being built
548 in the new stack, and logs project and build events accordingly.
549 (EndProjectBuild): New. Uses the stack to keep track of projects
550 finishing builds, and raises project and build events accordingly.
551 (LogProjectStarted): Move here from Project.cs
552 (LogProjectFinished): Likewise.
554 * Project.cs (Build): Log start of project build.
555 Set current directory to the project file's dir, and reset at end.
556 (BuildInternal): Don't log here, its done in Build.
557 (BuildTarget): Already built targets are keyed by the set of global
558 properties that they were built with.
559 (GlobalPropertiesToString): New.
560 (ResetBuildStatus): 'building' must be true to allow built targets to be reset.
561 (RemoveBuiltTargets): Initialize builtTargetKeys in .ctor
562 (Evaluate): Remove built targets only if we are currently building and
563 build settings are None.
564 Merge project's global properties with those of the parent engine.
565 Add missing properties from engine's global properties.
566 (LogTargetSkipped): Fix format string, add the reqd argument.
568 2009-05-29 Ankit Jain <jankit@novell.com>
570 * ConditionFunctionExpression.cs: Add 'HasTrailingSlash' function.
571 (HasTrailingSlash): New.
573 2009-05-12 Ankit Jain <jankit@novell.com>
575 * Project.cs (.ctor): Init timeOfLastDirty.
577 2009-05-05 Miguel de Icaza <miguel@novell.com>
579 * Contribution from Martin Brenn to fix #498154.
581 2009-04-27 Ankit Jain <jankit@novell.com>
584 * Engine.cs (BuildProjectFile): Set project's GlobalProperties to the
585 one passed as argument.
587 2009-04-27 Ankit Jain <jankit@novell.com>
589 * TaskEngine.cs (Prepare): Emit a useful error message property value
590 can't be converted to required type.
592 2009-04-27 Ankit Jain <jankit@novell.com>
594 * ExpressionCollection.cs (ConvertToObject): Allow true/on/yes
595 as valid true values for bool, and corresponding for false.
597 2009-03-27 Jonathan Chambers <joncham@gmail.com>
599 * BuildWhen.cs: Add basic implementation.
600 * BuildChoose.cs: Add basic implementation.
601 * BuildItem.cs (AddEvaluatedItem): Add BuiltItem to
602 EvaluatedItemsIgnoringCondition.
603 * GroupingCollection.cs: Add evaluation of BuildChoose items.
605 2009-03-26 Jonathan Chambers <joncham@gmail.com>
607 * TaskDatabase.cs (RegisterTask): Search for class by name
608 if task was not found using GetType (which uses namespace).
610 2009-02-26 Ankit Jain <jankit@novell.com>
612 * Target.cs: Handle target with no tasks. Log errors.
614 2009-02-24 Ankit Jain <jankit@novell.com>
616 Lazily load UsingTask tasks.
617 * UsingTask.cs (Evaluate): Register 'this' with task database,
618 but don't load it yet. Register only if condition evaluates to true.
619 Move the load logic to ..
620 (Load): .. here. Register with the specified task database.
621 * TaskDatabase.cs (RegisterUsingTask): Store the UsingTask instance
622 in a table keyed by task name, but don't load it yet.
623 (GetTypeFromClassName): Try to load UsingTask if task is not already
624 loaded. Move loading logic to ..
625 (GetTypeFromClassNameInternal): .. here.
626 (CopyTasks): Copy the usingTasks table also.
628 2009-02-23 Ankit Jain <jankit@novell.com>
630 * BuildItem.cs (AddMetadata): Allow overwriting older values.
632 2009-02-22 Ankit Jain <jankit@novell.com>
634 * BuildItem.cs: Iterate over XmlElements childnodes with XmlNode
635 instead of XmlElement. Eg. XmlComment
637 2009-02-21 Ankit Jain <jankit@novell.com>
639 * Utilities.cs (FromMSBuildPath): Copy from monodevelop.
640 * Project.cs (Load): Use FromMSBuildPath on the path.
641 (InitializeProperties): Set "MSBuildToolsPath" also.
643 2009-02-20 Ankit Jain <jankit@novell.com>
646 * ConditionTokenizer.cs: Handle unquoted item references (with or w/o
647 transforms) in conditions.
648 * ConditionParser.cs: Parse unquoted item, property references.
649 eg. Condition = " @(Foo->'%(Extension)') == '.exe' "
650 * Token.cs (Token.ToString): Override.
651 (TokenType.Transform): Uncomment.
653 2009-02-12 Jonathan Chambers <joncham@gmail.com>
655 * BuildProperty.cs: Value corresponds to XmlElement.InnerXml
656 no XmlElement.InnerText. This allows properties to be additional
659 2009-02-01 Ankit Jain <jankit@novell.com>
661 * BuildEngine.cs (BuildProjectFile): Use
662 BuildSettings.DoNotResetPreviouslyBuiltTargets for building projects.
663 * Engine.cs (BuiltTargetsOutputByName): New. Table of targets already
664 built. Move logging of project start/finish to ..
665 * Project.cs: .. here. Build a target only if hasn't been built already.
666 Keep track of target outputs, and return those even if an already built
667 target has been invoked again.
668 Honor BuildSettings.None and DoNotResetPreviouslyBuiltTargets .
670 2009-01-31 Ankit Jain <jankit@novell.com>
672 * BatchingImpl.cs: Split into ..
673 * BatchingImplBase.cs: .. this,
674 * TaskBatchingImpl.cs: .. this ..
675 * TargetBatchingImpl.cs: .. and this. Implement target batching here.
677 * Target.cs (DoBuild): Use TargetBatchingImpl for building.
678 (Log*): Move to TargetBatchingImpl .
682 2009-01-30 Ankit Jain <jankit@novell.com>
684 * TaskEngine.cs (GetObjectFromString): Empty value is allowed only for
687 2009-01-29 Ankit Jain <jankit@novell.com>
689 * BuildItem.cs (child_items): Change type from BuildItemGroup to
691 (HasParent): Rename to ..
692 (HasParentItem): .. this.
693 (ParentItemGroup): Add setter.
695 * BuildItemGroup.cs (.ctor): Add overload with @project param.
697 (AddItem): Correctly set the ParentItemGroup for new build items.
698 (ParentProject): Add setter.
699 * Project.cs: Set the project for new BuildItemGroup instances.
700 * TaskEngine.cs (PublishItemGroup): Likewise.
702 2009-01-06 Ankit Jain <jankit@novell.com>
704 * Project.cs (Build): Honor InitialTargets list.
706 2009-01-06 Ankit Jain <jankit@novell.com>
708 * BuildEngine.cs (BuildProjectFile): Use AddProperty method to specify
709 the property type also.
710 * MSBuild.cs (Execute): Parse 'Properties' task param to set global
713 2009-01-06 Ankit Jain <jankit@novell.com>
715 * Project.cs (Build): Correctly handle null targetNames argument.
717 2009-01-06 Ankit Jain <jankit@novell.com>
719 * Engine.cs (LogProjectStarted): Add a null check.
721 2009-01-01 Ankit Jain <jankit@novell.com>
723 * IReference.cs: New. Interface for Item/Metadata/PropertyReference.
724 * ChangeType (ToBuildItemGroup): Add 'split' param.
726 * Expression.cs (Parse): Add a new overload with a 'split' param.
727 * ExpressionCollection.cs (Add): Add new overload for IReference,
728 remove the ones for Item/Metadata/PropertyReference.
729 (ConvertToArray): Implement correctly.
730 (ConvertToString): Track api changes.
731 (ConvertToITaskItem): Implement with ConvertToITaskItemArray.
732 (ConvertToITaskItemArray): Implement support for concat'ing expressions.
733 (AddItemsToArray): New.
734 (ConvertToITaskItemArrayFromString): Refactor a bit.
735 (ThrowCantConcatError): New.
736 * ItemReference.cs: Update.
737 * MetadataReference.cs: Update.
738 * PropertyReference.cs (ConvertToITaskItemArray): Implement.
740 * BuildPropertyGroup.cs: Track api changes.
741 * TaskEngine.cs (PublishOutput): Improve exception message.
742 * Project.cs (DoLoad): Improve exception message. Add a null check.
744 2008-12-30 Ankit Jain <jankit@novell.com>
746 * MetadataReference.cs (BuildItemGroupToITaskItems): Return unique
747 metadata values for unqualified references.
748 (BuildItemGroupToITaskItemArray): Rename to ..
749 (BuildItemGroupToITaskItems): .. this.
752 2008-12-18 Ankit Jain <jankit@novell.com>
754 * BuildTask.cs (Execute): PublishOutput only if task runs successfully.
756 2008-12-17 Ankit Jain <jankit@novell.com>
758 * MetadataReference.cs (ConvertToITaskItemArray): In case of batching,
759 only one instance of unique metadata value is required.
761 2008-11-22 Ankit Jain <jankit@novell.com>
763 * ExpressionCollection.cs (ConvertToITaskItemArray): Add support for
765 * MetadataReference.cs (ConvertToITaskItemArray): New.
766 * Project.cs (GetAllItemGroups): New.
768 2008-11-21 Ankit Jain <jankit@novell.com>
770 * BatchingImpl.cs: Add task batching implementation.
771 * BuildItem.cs (GetEvaluatedMetadata): Handle built-in metadata names.
772 * ExpressionCollection.cs (Count): New.
773 (ConvertToString): Handle MetadataReference.
774 * ItemReference.cs (ConvertToString):
775 (ConvertToITaskItemArray): Use the batching api.
777 * MetadataReference.cs (ConvertToString): New.
779 * Project.cs: Add api for accessing batched items and metadata.
780 * TaskEngine.cs (PublishItemGroup): Don't clear existing values from
783 2008-10-01 Ankit Jain <jankit@novell.com>
785 * BuildEngine.cs (.ctor): Replace 'projectFile' param with 'project'.
786 (BuildProjectFile): If filename is null (project.LoadXml) then use
788 * BuildTask.cs (InitializeTask): Track api change.
789 * Expression.cs (Parse): Skip empty entries in the expression.
791 2008-09-24 Ankit Jain <jankit@novell.com>
793 * Engine.cs: Add argument checks.
794 * Project.cs: Likewise.
796 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
798 * Project.cs (Build): Add outputs to targetOutputs.
800 2007-03-06 Marek Sieradzki <marek.sieradzki@gmail.com>
802 * ExpressionCollection.cs (ConvertToArray): Simplify.
804 2007-03-05 Marek Sieradzki <marek.sieradzki@gmail.com>
806 * TaskEngine.cs, ChangeType.cs: Moved Collect* to ChangeType and
807 simplified. It still needs tests and refactoring.
809 2007-02-22 Marek Sieradzki <marek.sieradzki@gmail.com>
811 * BuildEngine.cs (BuildProjectFile): Don't crash on null
814 * Target.cs: Add Outputs property.
816 2007-02-20 Marek Sieradzki <marek.sieradzki@gmail.com>
818 * Target.cs (Build): Split to GetDependencies () and BuildDependencies
819 (). Support condition.
821 * BatchingImpl.cs (BatchBuildTask): Simplify.
823 2007-02-18 Marek Sieradzki <marek.sieradzki@gmail.com>
825 * ExpressionCollection.cs (ConvertToITaskItemArrayFromString):
828 * ConditionFunctionExpression.cs: Removed warnings.
830 * BuildTask.cs (Execute): Write exceptions to std err (they should be
831 logged but it's better than swallowing).
833 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
835 * ConditionTokenizer.cs: Add Putback ().
837 * ConditionParser.cs: Add parsing of functions.
839 * ConditionFunctionExpression.cs: Add.
841 2007-02-03 Marek Sieradzki <marek.sieradzki@gmail.com>
843 * BuildPropertyGroup (SetProperty): Throw an exception when trying to
844 set property in persisted property group.
846 2007-01-29 Marek Sieradzki <marek.sieradzki@gmail.com>
848 * BuildTask.cs (Execute): Log errors that happen when invoking ITask
851 * ConsoleLogger.cs (TargetFinishedHandler)
852 (TaskFinishedHandler): Increment error count.
854 2007-01-28 Marek Sieradzki <marek.sieradzki@gmail.com>
856 * BuildItem.cs (RemoveMetadata): Remove from XML.
857 (SetMetadata): Trigger project reevaluation.
859 2007-01-26 Marek Sieradzki <marek.sieradzki@gmail.com>
861 * BuildPropertyGroup.cs (SetProperty): Made it work with persisted
864 2007-01-23 Marek Sieradzki <marek.sieradzki@gmail.com>
866 * BuildTask.cs, ConditionFactorExpression.cs, Target.cs,
867 TaskEngine.cs, UsingTask.cs, ItemReference.cs, BuildItem.cs,
868 BatchingImpl.cs, BuildProperty.cs: Track API changes.
870 * Expression.cs (Parse): Added allowItems parameter and made regexes
873 * Import.cs (Evaluate): Moved hack from tools/xbuild/Makefile here. It
874 will try to import a.ext when given a.EXT.
876 2007-01-21 Marek Sieradzki <marek.sieradzki@gmail.com>
878 * BuildItemGroup.cs: Store information saying what is the last item
879 group that contains build item name.
881 * Project.cs (Build): Pass empty array (build default targets).
883 2007-01-19 Marek Sieradzki <marek.sieradzki@gmail.com>
885 * Token.cs: Commented Transform and LiteralSubExpression and added
888 * ConditionParser.cs: Removed redundant casts, rewrote
889 ParseFactorExpression () and added parsing of '!'.
891 * ConditionTokenizer.cs: Always skip whitespaces when getting next
892 token (no IgnoreWhiteSpace property). Don't create a token from '->'.
893 Moved ReadChar () in front of all ifs.
895 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
897 * BuildItem.cs (SetMetadata): Escape when we get virtual item or item
898 from XML. (not to escape items that have parents twice).
900 2007-01-16 Marek Sieradzki <marek.sieradzki@gmail.com>
902 * BuildItemGroup.cs (AddNewItem): Add XML and mark project as dirty.
903 (Project): Renamed to ParentProject.
905 * BuildItem.cs (ctor)
906 (CopyCustomMetadata): Add null check.
908 * BuildPropertyGroup.cs (AddNewProperty): Reorganized.
909 (RemoveProperty): Added null check.
911 * TargetCollection.cs (RemoveTarget): Added null check.
913 * Engine.cs (UnloadProject): Added null check.
915 * GroupingCollection.cs (Remove): Check if removed group belongs to
918 * Project.cs (AddNewItem): Implemented.
919 (RemoveItem): Reorganized.
920 (SetProjectExtensions): Added null check.
922 2007-01-14 Marek Sieradzki <marek.sieradzki@gmail.com>
924 * BuildItemGroup.cs (Detach): Added.
926 (RemoveItemAt): Used Detach ().
928 * BuildItem.cs: Made FromXml and HasParent internal and added
929 ParentItem and ParentItemGroup properties (internal).
932 * GroupingCollection.cs (Remove): Used Detach ().
934 * Project.cs (ctor): Added PreserveWhitespace = false to get formatted
936 (GetEvaluatedItemsByNameIgnoringCondition)
937 (GetEvaluatedItemsByName)
938 (GetEvaluatedProperty): Reevaluate if needed.
940 (RemoveAllItemGroups)
941 (RemoveAllPropertyGroups): Implemented.
942 (DoLoad): Added closing of TextReader.
944 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
946 * BuildPropertyGroup.cs: Don't trigger reevaluation just after a
947 change but just mark that it needs it.
949 * Project.cs: Reevaluate when it needs reevaluation and one of
950 Evaluated* properties is used.
952 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
954 * Target.cs: Throw an exception when <OnError> is not last element in
957 * BuildPropertyGroup.cs (RemoveProperty): Remove from XML.
959 * TargetCollection.cs: If a target is already there replace it with
962 * BuildProperty.cs: Added XmlElement property.
964 2007-01-12 Marek Sieradzki <marek.sieradzki@gmail.com>
966 * ImportCollection.cs: Don't add imports that are already added.
968 * BuildItemGroup.cs: MonoTODOs.
970 * ConditionParser.cs (ParseAndEvaluate): Throw an exception when
971 condition can't be evaluated to bool.
973 * BuildPropertyGroup.cs (Evaluate): Simplify.
975 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
977 * BuildWhen.cs: Moved BindToXml () code to ctor.
979 * BuildItemGroup.cs, BuildPropertyGroup.cs: Added XmlElement internal
980 property needed for removing groups.
982 * Engine.cs: Added StartBuild () that logs build start when Build ()
985 * GroupingCollection.cs: Added Remove () for item and property groups.
987 * Project.cs (AddNewImport): Implemented.
988 (AddNewItemGroup): Implemented.
989 (AddNewPropertyGroup): Implemented.
990 (AddNewUsingTaskFromAssemblyFile): Implemented.
991 (AddNewUsingTaskFromAssemblyName): Implemented.
992 (RemoveItemGroup): Implemented.
993 (RemovePropertyGroup): Implemented.
995 2007-01-10 Marek Sieradzki <marek.sieradzki@gmail.com>
997 * BuildItemGroup.cs (Clear): Remove from XML.
999 * BuildPropertyGroup.cs (AddNewProperty): Use right namespace and add
1000 to Project.EvaluatedProperties.
1001 (Clear): Remove from XML.
1003 2007-01-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1005 * Project.cs (InitializeProperties): Added $(MSBuildProjectDirectory)
1008 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1010 * GroupingCollection.cs: Use 2 iterators: add_iterator that is used by
1011 Add () calls when processing a project from Import and
1012 evaluate_iterator for evaluation.
1014 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1016 * Import.cs (GetFullPath): Avoid exceptions from Path.GetDirectoryName
1017 and prepend relative directory of importing project to full path of
1020 2007-01-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1022 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1023 BuildItemGroupCollection.cs, Project.cs: Track API changes.
1025 * GroupingCollection.cs: Now it needs Project reference so added it.
1027 * BuildTask.cs: Formatting.
1029 * InvalidProjectFileException.cs: Use MS' names in GetObjectData ().
1031 * ConditionParser.cs (ParseAndEvaluate): Added.
1033 * BuildItem.cs: Changed exception message.
1035 2007-01-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1037 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1038 BuildItemGroupCollection.cs, Project.cs, GroupingCollection.cs:
1039 GroupingCollection doesn't need Project reference.
1041 * BuildTask.cs, Target.cs, TaskEngine.cs, BatchingImpl.cs: Formatting
1043 * BuildItemGroup.cs: Added new readOnly parameter to ctor.
1044 (Project.EvaluatedItems is a read only item group.)
1045 (ReplaceWith): Added.
1047 * BuildPropertyGroup.cs (IsGlobal): Added. Setting a property in
1048 global property group causes reevaluation of its project.
1050 * Project.cs: ProcessXml () is internal and can be "safely" invoked by
1053 * OldExpression.cs: Removed.
1055 * BuildProperty.cs (Evaluate): Simplified.
1057 * ChangeType.cs (TemporaryTransform): Simplified.
1059 * BuildItem.cs: There are now 3 types of build items: from XML, having
1060 parent from XML, virtual. Added SplitParentItem ().
1062 2006-12-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1064 * Utilities.cs: Added Unescape ().
1066 * BuildItemGroup.cs, BuildItem.cs: Pass null project to
1067 BuildItem.Evaluate () to "evaluate" virtual items added to virtual item
1068 groups (at the moment just unescape).
1070 * Expression.cs (CopyToExpressionList): Unescape strings.
1072 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1074 * Target.cs (ctor): Added ImportedProject argument and removed
1076 (AddNewTask): Implemented.
1078 * TargetCollection.cs (AddNewTarget): Implemented.
1080 * Project.cs: Track API changes.
1082 2006-12-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1084 * Target.cs (Build): Don't throw anything in case of error, just
1087 * BuildItemGroup.cs (set_Condition): Throw an exception if group is
1090 * BuildItem.cs: More meaningfull messages in RemoveMetadata () and
1093 * BuildProperty.cs (ToString): Throw an exception if property is not
1095 (op_Explicit): Added a null check.
1097 * Engine.cs: Better error message.
1099 * BuildItemGroupCollection.cs (CopyTo): Changed ArgumentException to
1100 IndexOutOfRangeException.
1102 * Project.cs (DoLoad, Load): Move try/catch to DoLoad ().
1103 (MarkProjectAsDirty): Set time.
1105 2006-12-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1107 * BuildItemGroup.cs (Clone): Throw exception.
1109 * Project.cs (Load): Throw InvalidProjectFileException if anything
1112 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1114 * ItemReference.cs: Avoid KeyNotFoundException in ConvertToString ()
1115 and ConvertToITaskItemArray ().
1117 2006-12-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1119 * ItemPropertyGroupingBase.cs, TaskEngineAssemblyResolver.cs: Removed
1120 classes that were public in Beta 2 and aren't used.
1122 * Expression.cs: Added replacement for parsing expressions char by
1123 char. It uses regexes to find item/property/metadata references in
1126 * ExpressionCollection.cs, BuildTask.cs, ConditionFactorExpression.cs,
1127 Target.cs, TaskEngine.cs, BuildItemGroup.cs, UsingTask.cs, Import.cs,
1128 BuildItem.cs, BatchingImpl.cs, BuildProperty.cs: Track API changes.
1130 * ConditionRelationalExpression.cs: Formatting.
1132 * OldExpression.cs: Commented everything.
1134 * MetadataReference.cs, ItemReference.cs, PropertyReference.cs: Moved
1135 parsing to Expression.
1137 * BuildItem.cs: Check if project is from XML in set_Condition and
1140 * BuildPropertyGroup.cs, Project.cs: Add ImportedProject to
1143 * ConditionNotExpression.cs, ConditionAndExpression.cs: Check if we
1144 can evaluate expression in CanEvaluateToBool ().
1146 2006-12-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1148 * BuildItemGroup.cs (ctor): Add reference to ImportedProject from
1149 which item group is imported.
1151 * BuildItem.cs, Project.cs: Use new BuildItemGroup.ctor ().
1153 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1155 * BuildWhen.cs, BuildPropertyGroupCollection.cs,
1156 BuildItemGroupCollection.cs: Little changes related to
1159 * ImportCollection.cs: Use GroupingCollection not an internal list.
1161 * Import.cs (Evaluate): Split to functions and check if
1162 EvaluatedProjectPath is empty.
1164 * GroupingCollection.cs, Project.cs: Move evaluation to
1165 GroupingCollection. Change algorithm to use 2 passes: first for property
1166 groups and imports and second for item groups.
1168 2006-12-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1170 * TaskEngine.cs, ItemReference.cs: Use IDictionary <string,
1171 BuildItemGroup> not IDictionary.
1173 * BuildItemGroup.cs, BuildItem.cs: Evaluate even if condition was
1174 evaluated to false because we want to add every item to
1175 Project.EvaluatedItemsByNameIgnoringCondition.
1177 * Project.cs (Build): Don't throw an exception just return false.
1178 (GetEvaluatedProperty): Avoid NullReferenceException.
1179 (SetProjectExtensions): Implemented.
1181 2006-12-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1183 * TaskElement.cs, Xml.cs, ProcessingPass.cs: Removed.
1185 * Utilities.cs, HostLogger.cs, Target.cs, TaskDatabase.cs,
1186 BuildItemGroup.cs, BuildPropertyGroup.cs, TargetCollection.cs,
1187 Engine.cs, GroupingCollection.cs, Project.cs: Reformatted.
1189 * ImportCollection.cs: Added a note.
1191 2006-12-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1193 * BuildTask.cs: Implemented AddOutputItem () and AddOutputProperty ().
1195 * UsingTaskCollection.cs: Removed [MonoTODO] and used CopyTo in CopyTo
1196 (UsingTask[] array, int index)
1198 * TaskEngine.cs: Reformatted PublishOutput () and added copying of
1199 items to Project.EvaluatedItems in PublishItemGroup ();
1201 * BuildItemGroup.cs: Added [MonoTODO].
1203 * UsingTask.cs: Used expression for AssemblyFile to get around
1204 problems with '\' and '/'.
1206 * BuildItem.cs (ctor): Added null checks.
1207 (GetMetadata): Return unevaluatedMetadata not evaluatedMetadata.
1208 (SetMetadata): Don't escape evaluatedMetadata and escape
1209 unevaluatedMetadata only when treatPropertyValueAsLiteral.
1211 * BuildPropertyGroup.cs (GetEnumerator, Evaluate, RemoveProperty): Use
1212 FromXml () instead of null checks.
1213 (SetProperty): Escape propertyValue when it is literal.
1215 * BuildProperty.cs: Changed exception message.
1217 * Project.cs: Added XmlNamespaceManager and XmlNamespace internal
1219 (GetProjectExtensions): Implemented.
1221 2006-12-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1223 * BuildTask.cs: Remove [MonoTODO], add exception throwing in
1224 GetParameterValue (), use expressions in ContinueOnError.
1225 * ConditionFactorException.cs: Throw InvalidProjectFileException ()
1226 instead of InvalidOperationException ().
1227 * ImportCollection.cs: Implement CopyTo ().
1228 * Target.cs: Remove redundant variables (XmlAttributes), return
1229 String.Empty in DependsOnTargets, add a null check in RemoveTask ().
1230 * BuildItemGroup.cs, BuildPropertyGroup.cs: Remove [MonoTODO].
1231 * Import.cs: Throw an exception when file does not exist.
1232 * Target.cs: Use StringComparer.InvariantCultureIgnoreCase.
1233 * ConditionTokenizer.cs: Treat '-' as beginning of a number. We'll
1234 need to treat item as a token probably
1236 2006-12-04 Marek Sieradzki <marek.sieradzki@gmail.com>
1238 * Import.cs: Check for project.FullFileName (Path.DirectoryName would
1239 throw an exception).
1240 * BuildItemGroupCollection.cs: Changed exception types.
1242 2006-10-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1244 * Engine.cs: Removed redundant cast.
1246 * UsingTaskCollection.cs:
1250 * TargetCollection.cs: Comment unused variable.
1251 * ConditionTokenizer.cs: Simplified checking if current token is a
1253 * Target.cs: Removed old code.
1255 2006-10-08 Marek Sieradzki <marek.sieradzki@gmail.com>
1257 * Target.cs: Changed "" to String.Empty.
1258 * TaskEngine.cs: Don't try to convert a parameter to specific type if
1259 string was evaluated to String.Empty.
1260 * InternalLoggerException.cs:
1261 * InvalidProjectFileException.cs: Added LinkDemand before
1263 * ConsoleLogger.cs: Changed "" to String.Empty.
1264 * TargetCollection.cs: Fixed GetEnumerator () (stupid bug introduced
1265 with change to generics).
1266 * Project.cs: Made Build () throw more meaningful exception.
1268 2006-10-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1270 * Target.cs: Reformatted.
1271 * TaskEngine.cs: Removed redundant code.
1272 * BuildPropertyGroup.cs: Fixed Clear () and AddNewProperty ().
1273 * Engine.cs: Made BuildProjectFile () load project file if it's not
1276 2006-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1278 * ConditionRelationalExpression.cs: Change comparers to case
1280 * ImportCollection.cs: Add NotImplementedExceptions.
1281 * BuildPropertyGroup.cs: Reformatted a bit.
1282 * BuildProperty.cs: The same.
1283 * Project.cs: Moved evaluation of imports before evaluation of
1284 properties. This may "work" until importing projects is redesigned but
1285 probably isn't correct.
1287 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1289 * BuildPropertyGroup.cs: Check for XmlNodes that aren't XmlElements
1291 * BuildItemGroup.cs: Change return to continue.
1293 2006-09-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1295 * ConditionParser.cs: Copyright note.
1296 * ExpressionCollection.cs: Fixed arrays passing.
1298 2006-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1300 * BuildTask.cs, UsingTaskCollection.cs, ImportCollection.cs,
1301 Target.cs, TaskDatabase.cs, TaskEngine.cs, BuildItemGroup.cs,
1302 BuildChoose.cs, DirectoryScanner.cs, BuildPropertyGroup.cs,
1303 TargetCollection.cs, Engine.cs, Project.cs: Started to use generics.
1305 2006-06-25 Marek Sieradzki <marek.sieradzki@gmail.com>
1307 * Token.cs: Changed names: removed "than".
1308 * ConditionRelationalExpression.cs: Added.
1309 * ConditionFactorExpression.cs: Added.
1310 * BuildItemGroup.cs: Changed Condition property return value to return
1311 String.Empty instead of null.
1312 * ConditionParser.cs: Added support for parsing relational expressions
1314 * ConditionExpression.cs: Removed Evaluate (). Added 2 sets of
1315 abstract functions: BoolEvaluate (), NumberEvaluate () and StringEvaluate ()
1316 and CanEvaluateToBool (), CanEvaluateToNumber () and
1317 CanEvaluateToString ().
1318 * ConditionOrExpression.cs, ConditionAndExpression.cs: Changed
1319 appropriately to ConditionExpression base class.
1320 * ConditionTokenizer.cs: Added null check and changed names in enums:
1322 * ConditionNotExpression.cs: Added.
1323 * BatchingImpl.cs: Changed to use BoolEvaluate ().
1324 * Project.cs: Added checks for condition.
1326 2006-06-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1328 * ConditionalTokenizer.cs, ConditionalExpression.cs,
1329 ConditionalParser.cs: Changed name,
1331 * ConditionExpression.cs: Added Evaluate ().
1332 * ConditionOrExpression.cs, ConditionAndExpression.cs: Added.
1333 * BatchingImpl.cs: Added check if task should be executed.
1335 2006-06-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1337 * UsingTask.cs: Changed properties to return null on empty attribute.
1338 * UsingTaskCollection.cs: Added object to SyncRoot.
1339 * BuildPropertyGroup.cs: Added NotImplementedException throwing.
1341 2006-06-02 Marek Sieradzki <marek.sieradzki@gmail.com>
1343 * BuildItem.cs, BuildProperty.cs, BuildPropertyGroup.cs,
1344 BuildPropertyGroupCollection.cs: Fixed to match the tests.
1346 2006-05-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1348 * Utilities.cs: Implemented Escape ().
1349 * BuildItem.cs: Added null checks.
1350 * BuildPropertyGroup.cs, BuildProperty.cs: Moved FromXml property.
1351 * Project.cs: Commented out redundant Evaluate ().
1352 * BuildChoose.cs: Minor changes.
1354 2006-05-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1356 * Token: Added new few missing tokens.
1357 * Target.cs, Project.cs: Patch from Matthew Metnesky.
1358 * BuildItemGroup.cs, OldExpression.cs, MetadataReference.cs,
1359 ItemReference.cs, PropertyReference.cs, ConditionalTokenizer.cs,
1360 ConditionalParser.cs, Tokenizer.cs, LiteralExpression.cs,
1361 LiteralTokenizer.cs:
1362 Removed literal expression parsing based on tokenizer and
1363 parser. It needs to be done by regex.
1365 Moved tokenizer to ConditionalTokenizer.cs.
1367 2006-05-05 Marek Sieradzki <marek.sieradzki@gmail.com>
1369 * ExpressionCollection.cs, BuildItemGroup.cs, BuildItem.cs,
1370 ItemReference.cs, PropertyReference.cs: Changed name of *Reference
1371 methods converting reference to string from ToString () to
1372 ConvertToString () to avoid mistakes like using ToString () provided
1375 2006-05-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1377 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, MetadataReference.cs,
1378 Import.cs, ItemReference.cs, BuildItem.cs, BatchingImpl.cs,
1379 PropertyReference.cs, BuildProperty.cs: Changed Expression to
1380 OldExpression and changed To* functions to one ConvertTo ().
1381 * TaskEngine.cs: Fixed PublishOutput ().
1382 * OldExpression.cs: Added. It will be temporarily used before
1383 LiteralExpression will be written using Tokenizer.
1384 * Tokenizer.cs, Token.cs, ExpressionCollection.cs,
1385 ExpressionParseException.cs, LiteralExpression.cs: Added.
1387 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1389 * ImportedProject.cs: Removed warning.
1390 * Engine.cs, Project.cs, TaskDatabase.cs: Added registration of
1393 2006-04-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1395 * Project.cs: Removed unnecessary variable.
1396 * Engine.cs: Added fixme.
1398 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1400 * BuildItem.cs: Moved checking if metadata name is reserved to internal
1401 class (Mono.XBuild.Utilities.ReservedNameUtils).
1403 2006-04-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1405 * BuildTask.cs: Removed unnecessary variable.
1406 * Engine.cs: Added logging of the build start.
1407 * Project.cs: Removed unnecessary variable.
1409 2006-04-07 Marek Sieradzki <marek.sieradzki@gmail.com>
1411 * GlobalEngineAccessor.cs, ProjectFileEncoding.cs: Removed.
1413 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1415 * BuildItem.cs, BuildItemGroup.cs: Coding style fixes.
1417 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1419 * BuildItem.cs: Fix typo?
1421 2006-03-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1423 * InternalLoggerException.cs, InvalidProjectFileException.cs,
1424 Engine.cs, Project.cs: Coding style fixes.
1426 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1428 * BuildItem.cs, BuildItemGroup.cs: Cleaned up build items.
1430 2006-03-29 Crestez Leonard <cdleonard@gmail.com>
1432 * InternalLoggerException.cs, InvalidProjectFileException.cs: Fixed
1433 to pass tests. Wrote serialization constructor.
1434 * Engine.cs, Project.cs: Global engine and project unloading, test and
1437 2006-03-28 Marek Sieradzki <marek.sieradzki@gmail.com>
1439 * UsingTask.cs: Formatting changes.
1441 2006-03-27 Crestez Leonard <cdleonard@gmail.com>
1443 * ImportCollection.cs, UsingTaskCollection.cs: Cleaned up, switched
1444 to lists instead of hashtables.
1445 * Import.cs: Cleaned up, moved importing from Project.cs
1446 * BuildProperty.cs, BuildPropertyGroup.cs: Minor fixes.
1447 * Engine.cs: Cleaned up properties.
1448 * Project.cs: Moved importing to Import.cs, cleaned up properties,
1449 Separated evaluation and loading.
1451 2006-03-21 Crestez Leonard <cdleonard@gmail.com>
1453 * Target.cs, TaskEngine.cs, BuildItemGroup.cs, BuildItem.cs,
1454 BuildPropertyGroup.cs, TargetCollection.cs, BuildProperty.cs,
1455 Engine.cs, Project.cs, BuildTask.cs, UsingTask.cs: Separate xml
1456 binding and evaluation, merge xml binding in constructors.
1457 * DirectoryScanner.cs: Includes CAN be empty.
1458 * BuildChoose.cs, ItemReference.cs, ChangeType.cs: Newline at EOF.
1459 * ConsoleLogger.cs: Fix compilation warning.
1461 2006-03-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1463 * BuildPropertyGroup.cs, Expression.cs: Coding style fixed.
1465 2006-03-18 Marek Sieradzki <marek.sieradzki@gmail.com>
1467 * Engine.cs: API cleanup.
1469 2006-03-18 Crestez Leonard <cdleonard@gmail.com>
1471 * Project.cs: Cleaned up add.
1472 * Expression.cs: Hacked to transform \ and / to path separators.
1473 * BuildPropertyGroup.cs: Small cleanup.
1474 * BuildTask.cs, TaskEngine.cs: Fix TaskEngine not getting a Project
1477 2006-03-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1479 * BatchingImpl.cs: Updated with BuildTask instead of TaskElement.
1480 * BuildItem.cs: Updated for new API and fixed crashing on non-existent
1482 * BuildItemGroup.cs, BuildItemGroupCollection.cs, BuildProperty.cs,
1483 BuildPropertyGroup.cs, BuildPropertyGroupCollection.cs, ConsoleLogger.cs,
1484 Engine.cs, Project.cs, Target.cs, TargetCollection.cs: Updated for new
1486 * DirectoryScanner.cs: Fixed ordering and crashing on duplicated items.
1487 * TaskElement.cs: Temporarily removed.
1488 * Xml.cs: Changed to static.
1490 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1492 * IBuildProperty.cs, ICultureStringUtilities.cs, IProject.cs,
1493 IGlobalEngineAccessor.cs, ITaskElement.cs, IBuildPropertyGroup.cs,
1494 ITargetCollection.cs, IEngine.cs, IBuildItemGroupCollection.cs,
1495 IHostLogger.cs, IBuildItem.cs, IHostFeedback.cs,
1496 ILangSecurityLevelChecker.cs, ITarget.cs, IBuildItemGroup.cs,
1497 IBuildPropertyGroupCollection.cs: Removed.
1499 2006-02-26 Marek Sieradzki <marek.sieradzki@gmail.com>
1501 * BuildItem.cs: Removed IBuildItem references.
1502 * BuildItemGroup.cs: Removed ItemPropertyGroupingBase and
1503 IBuildItemGroup references. Changed Evaluate to internal.
1504 * BuildItemGroupCollection.cs. Removed IBuildItemGroupCollection
1505 reference and hidden constructors.
1506 * BuildProperty.cs: Removed IBuildProperty reference.
1507 * BuildPropertyGroup.cs: Removed ItemPropertyGroupingBase and
1508 IBuildPropertyGroup references. Changed Evaluate to internal.
1509 * BuildPropertyGroupCollection.cs: Removed IBuildPropertyGroupCollection
1510 reference and hidden constructors.
1511 * ConsoleLogger.cs: Updated names of event handlers.
1512 * Engine.cs: Removed IEngine reference. Removed ClearAllProjects and
1513 Escape. Added UnloadAllProjects () and UnloadProject ().
1514 * FileLogger.cs: Removed ApplyParameter ().
1515 * GroupingCollection.cs: Hidden.
1516 * InvalidProjectFileException.cs: Removed HasBeenLogged property.
1517 * ItemPropertyGroupingBase.cs: Commented.
1518 * ProcessingPass.cs: Hidden.
1519 * Project.cs: Removed IProject reference. Changed CurrentEncoding to
1521 * Target.cs: Removed ITarget reference.
1522 * TargetCollection.cs: Removed ITargetCollection reference.
1523 * TaskElement.cs: Removed ITaskElement reference.
1524 * TaskEngineAssemblyResolver.cs: Hidden.
1525 * Utilities.cs: Made static class, removed CheckPath (),
1526 ValidateCulture (), GetSupportedCultures () and added Escape ().
1528 2006-02-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1530 * ConsoleLogger.cs, Engine.cs: Quick hacks to make it compile with new
1533 2005-09-22 Marek Sieradzki <marek.sieradzki@gmail.com>
1535 * Project.cs: Added MonoTODO attributes.
1536 * Utilities.cs, TaskElement.cs, IBuildProperty.cs, HostLogger.cs,
1537 ProjectFileEncoding.cs, ICultureStringUtilities.cs, FileLogger.cs,
1538 IProject.cs, BuildSettings.cs, BuildWhen.cs, IGlobalEngineAccessor.cs,
1539 BuildEngine.cs, ITaskElement.cs, Target.cs, TaskDatabase.cs,
1540 SolutionParser.cs, IBuildPropertyGroup.cs, InternalLoggerException.cs,
1541 BuildItemGroup.cs, InvalidProjectFileException.cs,
1542 BuildPropertyGroupCollection.cs, MetadataReference.cs, Expression.cs,
1543 Xml.cs, BuildChoose.cs, EventSource.cs, ProcessingPass.cs,
1544 PropertyPosition.cs, GlobalEngineAccessor.cs, ITargetCollection.cs,
1545 ItemReference.cs, IEngine.cs, BuildItem.cs, DirectoryScanner.cs,
1546 IBuildItemGroupCollection.cs, BuildPropertyGroup.cs, IHostLogger.cs,
1547 IBuildItem.cs, ChangeType.cs, WriteHandler.cs, IHostFeedback.cs,
1548 ILangSecurityLevelChecker.cs, ITarget.cs, BatchingImpl.cs,
1549 ConsoleLogger.cs, TargetCollection.cs, PropertyReference.cs,
1550 IBuildItemGroup.cs, BuildProperty.cs, Engine.cs,
1551 IBuildPropertyGroupCollection.cs, GroupingCollection.cs,Project.cs,
1552 BuildItemGroupCollection.cs, ItemPropertyGroupingBase.cs,
1553 ImportedProject.cs, TaskEngineAssemblyResolver.cs: Added #if NET_2_0.
1555 2005-09-21 Marek Sieradzki <marek.sieradzki@gmail.com>
1557 * TaskDatabase.cs: Change Shared to Framework.
1558 * BuildPropertyGroup.cs, Project.cs: Remove obsoleted
1559 CaseInsensitiveHashCodeProvider
1561 2005-09-11 Marek Sieradzki <marek.sieradzki@gmail.com>
1563 * TaskDatabase.cs: Added handling of LoadInfoType.AssemblyName.
1564 * Engine.cs, Project.cs: Added handling of MSBuildBinPath reserved
1567 2005-09-09 Marek Sieradzki <marek.sieradzki@gmail.com>
1569 * InternalLoggerException.cs: Changed protected fields to private.
1571 2005-09-03 Marek Sieradzki <marek.sieradzki@gmail.com>
1573 * Engine.cs: Added check for globalProperties.
1574 * Project.cs: Added using path from importedProject.FullFileName when
1575 adding UsingTask elements.
1577 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1579 * TaskElement.cs: Changed ReflectedType to PropertyType.
1580 * ChangeType.cs (TransformToString): Changed to pass proper Type to
1583 2005-09-01 Marek Sieradzki <marek.sieradzki@gmail.com>
1585 * BuildPropertyGroup.cs: Added check for PropertyType when adding a
1587 * BuildProperty.cs: Organized PropertyType enum.
1588 * Engine.cs: Added setting CommandLine PropertyType of global
1591 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1593 * InvalidProjectFileException.cs: Changed Message property.
1594 * ChangeType.cs (TransformToString): Added separator between items.
1595 * TaskEngineAssemblyResolver.cs: Formatting.
1597 2005-08-31 Marek Sieradzki <marek.sieradzki@gmail.com>
1599 * DirectoryScanner.cs: Added.
1600 * BuildItem.cs: Moved file scanning code to DirectoryScanner.
1601 * BuildPropertyGroup.cs: Changed Project.Evaluate to Expression.
1602 * Project.cs: Removed Evalute* ().
1604 2005-08-30 Marek Sieradzki <marek.sieradzki@gmail.com>
1606 * Target.cs: Formatting.
1607 * Expression.cs: Added check if array == null.
1608 * BuildItem.cs: Removed 'break' to remove warnings.
1609 * ConsoleLogger.cs: Formatting.
1610 * Engine.cs: Added handling of default target(s).
1611 * Project.cs: Added handling of default target(s).
1613 2005-08-29 Marek Sieradzki <marek.sieradzki@gmail.com>
1615 * TaskElement.cs: Added check for parameters.
1616 * Target.cs: Added logging of target skipping.
1617 * Expression.cs: Changed returning object[] to string[], bool[]... in
1619 * ItemReference.cs: Fixed for item references without custom
1621 * BatchingImpl.cs: Added real inputs/outputs checking.
1622 * Engine.cs: Moved global properties setting.
1623 * Project.cs: Moved global properties setting.
1625 2005-08-27 Marek Sieradzki <marek.sieradzki@gmail.com>
1627 * Target.cs: Added checks for target existence.
1628 * BuildItemGroup.cs: Changed to use transforms.
1629 * MetadataReference.cs: Wrote real implementation.
1630 * ItemReference.cs: Rewritten to use transforms.
1631 * BuildItem.cs: Changes for transforms and metadata.
1632 * ConsoleLogger.cs: Added verbosity checking and fixed error/warning
1634 * Project.cs: Fixed project importing.
1635 * ImportedProject.cs: Changed to throw exceptions instead of returning
1638 2005-08-24 Marek Sieradzki <marek.sieradzki@gmail.com>
1640 * Engine.cs: Removed FIXME.
1641 * Project.cs: Splitted ProcessElements and added project importing.
1642 * ImportedProject.cs: Rewritten.
1644 2005-08-20 Marek Sieradzki <marek.sieradzki@gmail.com>
1646 * TaskElement.cs: Added getting of objects of every type.
1647 * BuildItemGroup.cs: Added ToITaskItemArray ().
1648 * Expression.cs: Implemented part that is not using metadata.
1649 * ItemReference.cs: Implemented parsing item references. Need to fix
1651 * BuildItem.cs: Fixed ToITaskItem ().
1652 * PropertyReference.cs: Implemented parsing property references. This
1653 also needs validity checking.
1655 2005-08-19 Marek Sieradzki <marek.sieradzki@gmail.com>
1657 * TaskElement.cs: Added Output element handling.
1658 * Target.cs: Cleaned up.
1659 * BuildItemGroup.cs: Added creating BuildItem from TaskItem.
1660 * Expression.cs, MetadataReference.cs, PropertyReference.cs,
1661 ItemReference.cs, ChangeType.cs: Added.
1662 * BuildItem.cs: Added creating BuildItem from TaskItem.
1663 * BuildPropertyGroup.cs: Small changes.
1664 * BatchingImpl.cs: Fixed to return real task execution result.
1665 * BuildProperty.cs: Fixed FinalValue property.
1666 * Engine.cs: Reformatted logging.
1667 * Project.cs: Added check to EvaluateProperty.
1669 2005-08-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1671 * TaskElement.cs: Added part of execution engine.
1672 * BuildEngine.cs: Added handling of TaskStarted and TaskFinished.
1673 * BuildItemGroup.cs: Iterating by XmlNode casted to XmlElement.
1674 * EventSource.cs: Added FireTaskStarted and FireTaskFinished.
1675 * BuildItem.cs: Added handling of built-in metadata and referencing
1676 Items by name not FullName.
1677 * BatchingImpl.cs: Added temporary task "batching".
1678 * ConsoleLogger.cs: Added temporary workaround to not show sender.
1679 * Project.cs: Added Evaluate. It will be moved to separate class.
1681 2005-08-14 Marek Sieradzki <marek.sieradzki@gmail.com>
1683 * EventSource.cs, Engine.cs: Added CriticalEvents.
1684 * BuildItem.cs, BuildItemGroup.cs, BuildItemGroupCollection.cs,
1685 Project.cs: Added some support for items.
1686 * BuildProperty.cs, BuildPropertyGroup.cs: Cleaned up.
1688 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1690 * BuildProperty.cs, BuildPropertyGroup.cs, Project.cs: Added loading
1693 2005-08-12 Marek Sieradzki <marek.sieradzki@gmail.com>
1695 * BatchingImpl.cs: Added.
1696 * BuildWhen.cs, BuildEngine.cs, Target.cs,
1697 BuildPropertyGroupCollection.cs, BuildChoose.cs, EventSource.cs,
1698 BuildItem.cs, BuildPropertyGroup.cs, ConsoleLogger.cs,
1699 TargetCollection.cs, BuildProperty.cs, Engine.cs, Project.cs,
1700 GroupingCollection.cs: Updated.
1702 2005-08-06 Marek Sieradzki <marek.sieradzki@gmail.com>
1704 * BuildChoose.cs, BuildEngine.cs, BuildItem.cs,
1705 BuildItemGroupCollection.cs, BuildItemGroup.cs, BuildProperty.cs,
1706 BuildPropertyGroupCollection.cs, BuildPropertyGroup.cs,
1707 BuildSettings.cs, BuildWhen.cs, ConsoleLogger.cs, Engine.cs,
1708 EventSource.cs, FileLogger.cs, GlobalEngineAccessor.cs,
1709 GroupingCollection.cs, HostLogger.cs, ImportedProject.cs,
1710 InternalLoggerException.cs, InvalidProjectFileException.cs,
1711 ItemPropertyGroupingBase.cs, ProcessingPass.cs, Project.cs,
1712 ProjectFileEncoding.cs, PropertyPosition.cs, SolutionParser.cs,
1713 TargetCollection.cs, Target.cs, TaskDatabase.cs, TaskElement.cs,
1714 TaskEngineAssemblyResolver.cs, Utilities.cs, WriteHandler.cs, Xml.cs:
1715 Initial check-in of implementations.
1717 2005-07-16 Marek Sieradzki <marek.sieradzki@gmail.com>
1719 * conditions.jay, IBuildItem.cs, IBuildItemGroup.cs,
1720 IBuildItemGroupCollection.cs, IBuildProperty.cs,
1721 IBuildPropertyGroup.cs, IBuildPropertyGroupCollection.cs,
1722 ICultureStringUtilities.cs, IEngine.cs, IGlobalEngineAccessor.cs,
1723 IHostFeedback.cs, IHostLogger.cs, ILangSecurityLevelChecker.cs,
1724 IProject.cs, ITargetCollection.cs, ITarget.cs, ITaskElement.cs:
1725 Initial check-in of interfaces and a syntax file, real classes are
1726 changing a lot so I'll wait a moment with checking them in.