2008-03-27 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / class / System.Web / System.Web.Compilation / ChangeLog
index 4fd5308878d723253a5563d8bf943f80510901ba..6ef7a0085a234a3d451e3130146777eaa43deaad 100644 (file)
@@ -1,3 +1,613 @@
+2008-03-27  Marek Habersack  <mhabersack@novell.com>
+
+       * BuildManager.cs: AssertVirtualPathExists now queries the
+       VirtualPathProvider for path existence if physical path check
+       fails, before throwing the 404 exception.
+
+2008-03-13  Marek Habersack  <mhabersack@novell.com>
+
+       * BuildManager.cs: if we're running in a case-insensitive
+       environment, use case-insensitive comparer for the build caches. 
+
+2008-02-29  Marek Habersack  <mhabersack@novell.com>
+
+       * BuildManager.cs: implement a mechanism to ignore certain virtual
+       paths when batch compiling. Helps applications which may have
+       .as?x files which won't work on mono for various reasons (one such
+       sample is mojoportal).
+
+2008-02-28  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: make sure that data-bound attribute
+       assignments properly convert the Bind expression to the Eval
+       one. Fixes bug #362039
+
+       * AspGenerator.cs: in 2.0+, aspx files which contain the Content
+       controls can contain only them, whitespace and directives. Fixes
+       bug #339747
+
+2008-02-27  Marek Habersack  <mhabersack@novell.com>
+
+       * AspComponentFoundry.cs: use BuildManager.GetCompiledType in the
+       LoadType method for the 2.0 profile.
+
+       * CompilationException.cs: use a different format of ErrorMessage
+       for the 2.0+ profile.
+
+2008-02-26  Marek Habersack  <mhabersack@novell.com>
+
+       * BuildManager.cs: known file types extensions are now matched
+       case-insensitively.
+
+2008-02-25  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: GetContainerType now checks whether
+       the binding container returned from the builder implements
+       IDataItemContainer (for 2.0+ profiles) and looks for one more
+       property, Rows, if no Items property is found.
+
+2008-02-08  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * AppSettingsExpressionBuilder.cs: Improve exception messages. Return
+       "raw" appsetting value if targetType is null.
+
+2008-02-07  Marek Habersack  <mhabersack@novell.com>
+
+       * CompilationException.cs: added new constructor which takes
+       CompilerResults as one of the parameters.
+       Added CompilerOutput property.
+
+       * AssemblyBuilder.cs: use the new CompilationError constructor.
+
+       * BuildManager.cs: check for virtualPath existence before
+       attempting to compile the assemblies. Fixes bug #359465
+
+2008-02-06  Marek Habersack  <mhabersack@novell.com>
+
+       * GenericBuildProvider.cs: GetGeneratedType may return a type even
+       though the results are null.
+
+       * AssemblyBuilder.cs: if there are no units, no source files, no
+       resources and no embedded resources in the passed options then
+       do not attempt to compile the assembly. Fixes bug #359325
+
+       * AppResourcesAssemblyBuilder.cs, AppCodeCompiler.cs: expect that
+       BuildAssembly may return null results.
+
+       * BuildManager.cs: protect non-page builds from endless recursion
+       if a non-page file recursively references/includes another file
+       from the same batch. If such case is detected, the recursively
+       referenced file is compiled into a separate assembly and removed
+       from the previous compilation batch. Fixes bug #358742.
+       If AssemblyBuilder returns no results from BuildAssembly, it might
+       mean we're dealing with a compilation of empty .as[hm]x files,
+       with no code and only code-behind in bin/. Do not report an error
+       in that case, only add the compiled types to the cache. Fixes bug
+       #357624.
+
+2008-02-05  Marek Habersack  <mhabersack@novell.com>
+
+       * BuildManager.cs: GetAbsoluteVirtualPath correctly converts
+       non-rooted relative paths to absolute ones now. Fixes bug
+       #357504.
+
+       * GenericBuildProvider.cs: introduced a new abstract method,
+       GetReferencedAssemblies, which is called on descendant builders to
+       get a list of assemblies referenced by the parsed file. Fixes bug
+       #357499.
+
+       * AssemblyBuilder.cs: added a new overload of the
+       AddAssemblyReference method, to be used by build providers to
+       register assemblies collected by the corresponding parser.
+
+       * TemplateBuildProvider.cs, SimpleBuildProvider.cs: implemented
+       overload of the new abstract method GetReferencedAssemblies.
+
+       * AspGenerator.cs: introduced a new overload for the Parse method
+       which accepts a bool indicating whether or not to initialize the
+       parser. The overload is used when parsing server-side
+       includes. Fixes bug #357498
+
+2008-02-04  Marek Habersack  <mhabersack@novell.com>
+
+       * AssemblyBuilder.cs: do not use WebEncoding.FileEncoding when
+       generating source code files. Fixes bug #357053.
+
+       * AspGenerator.cs: set isApplication before parsing. Fixes bug
+       #357036.
+
+2008-01-31  Jb Evain  <jbevain@novell.com>
+
+       * AspGenerator.cs: correct typo. Fix #357547.
+
+2008-01-27  Marek Habersack  <mhabersack@novell.com>
+
+       * BuildManager.cs: GetReferencedAssemblies includes the extra
+       assemblies and the App_Code assemblies. Patch from Mike Morano
+       <mmorano@mikeandwan.us>, thanks!
+
+2008-01-24  Marek Habersack  <mhabersack@novell.com>
+
+       * WebHandlerBuildProvider.cs: derive from the new
+       SimpleBuildProvider class.
+
+       * BuildManager.cs: full implementation of the batch compilation
+       for the 2.0 profile. The implementation is most probably different
+       to MS.NET's but the effects are the same (or nearly the same -
+       there are some minor differences). There are missing bits and
+       pieces, but minor ones - to be added later.
+
+       * SimpleBuildProvider.cs: new build provider abstract class
+       deriving from the GenericBuildProvider that implements common code
+       for building web handlers and web services.
+
+       * GenericBuildProvider.cs: new generic abstract class used to
+       implement base builder code for all the build provider types and
+       maximize code reuse.
+
+       * PageBuildProvider.cs: derive from the new TemplateBuildProvider
+       class and implement all the necessary abstract members. 
+       Handle "fake" virtual paths, to properly support generating of the
+       WSDL helper code.
+
+       * BuildProvider.cs: SetVirtualPath now converts the passed path to
+       absolute URL.
+       Added internal virtual method GenerateCode, used by derived
+       classes.
+       SetCommonParameters no longer sets the referenced assemblies, this
+       is done in BuildManager now.
+       Added an internal virtual property CodeUnit which returns the
+       build provider's compilation unit.
+
+       * PageCompiler.cs: fix assignment of base types for asynchronous
+       pages, to match MS.NET.
+       For asynchronous pages, add the necessary methods generation.
+
+       * BaseCompiler.cs: default namespace is now set using a constant.
+       Renamed the Init method into ConstructType, to better reflect its
+       purpose and made the method internal - it is used by the build
+       providers.
+       Added several CreateProvider overloads for easier and more unified
+       compilation provider creation.
+       Added an internal MainClassType property to enable class type name
+       retrieval from other parts of the class hierarchy.
+
+       * ApplicationFileBuildProvider.cs: new build provider deriving
+       from the TemplateBuildProvider class to compile the global.asax
+       file.
+
+       * AspGenerator.cs: properly handle parsers which have no input
+       file path given, but use TextReader instead.
+       Dependencies are virtual paths now, convert them to physical ones
+       before creating cache dependency.
+
+       * CachingCompiler.cs: parser dependencies are virtual paths now,
+       convert them to physical ones before creating cache dependency.
+
+       * AssemblyBuilder.cs: full implementation of the documented
+       functionality as well as a lot of internal build code
+       added. Produces assemblies using the same style what MS.NET for
+       temporary and target file naming. Handles partial type squashing
+       if the same partial type is used by several code compile units
+       added to the same builder instance.
+
+       * MasterPageBuildProvider.cs: use the new TemplateBuildProvider
+       base class and add implementation of all the abstract methods
+       required by it.
+
+       * ThemeDirectoryBuildProvider.cs: new build provider to compile
+       theme directories. Replaces the old ThemeDirectoryCompiler class.
+
+       * UserControlBuildProvider.cs: use the new TemplateBuildProvider
+       base class and add implementation of all the abstract methods
+       required by it.
+
+       * TemplateBuildProvider.cs: new internal abstract class which
+       implements the common tasks for all the template control build
+       providers.
+
+       * WebServiceBuildProvider.cs: use the new SimpleBuildProvider base
+       type to implement building.
+
+2008-01-17  Igor Zelmanovich <igorz@mainsoft.com>
+
+       * BaseCompiler.cs: Assign AppRelativeVirtualPath correctly
+
+2008-01-08  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: statements to assign
+       fields/properties from resources must be processed at the very end
+       of the control creation method. Some controls (like HyperLink) can
+       set their Text attribute using literal content. In such cases, in
+       order to properly localize the control, the value read from the
+       local page resources must be assigned after the literal value has
+       been added to the control. Fixes bug #323494
+
+2008-01-07  Marek Habersack  <mhabersack@novell.com>
+
+       * CachingCompiler.cs: added an overload to the Compile method
+       which accepts a flag whether or not to include debug information
+       in the generated assembly.
+
+2008-01-02  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: add line pragma wherever necessary.
+
+       * PageCompiler.cs: reorder the statements to match MS.NET output.
+       Output line pragma information for directive attributes.
+
+       * BaseCompiler.cs: add a set of AddLinePragma methods for various
+       CodeDOM elements. 
+       Output line pragmas when adding server-side scripts to the CodeDOM
+       tree.
+
+       * AspGenerator.cs: use ServerSideScript to store script location
+       in the original file.
+
+       * UserControlCompiler.cs: output line pragmas for the init
+       method.
+
+2007-12-28  Marek Habersack  <mhabersack@novell.com>
+
+       * PageCompiler.cs: MS.NET compatibility: added the
+       __fileDependencies object to the generated class.
+       Refactored the output to match MS.NET more closely.
+       IHttpHandler or IHttpAsyncHandler are now added to the generated
+       class list of implemented interfaces.
+       
+       * BaseCompiler.cs: Main class field references are prefixed with
+       'global::' now. 
+       Refactored the output to match MS.NET more closely.
+
+2007-12-27  Marek Habersack  <mhabersack@novell.com>
+
+       * BaseCompiler.cs: check for base type globality in all the
+       location it is used.
+
+2007-12-23  Vladimir Krasnov  <vladimirk@mainsoft.com>
+
+       * AppSettingsExpressionBuilder.cs: fixed GetAppSetting, should convert
+       to property type
+
+2007-12-21  Marek Habersack  <mhabersack@novell.com>
+
+       * BaseCompiler.cs: Refactoring. Move the provider creation code to
+       an internal static method, so that other piece of code which need
+       to create the provider can do it using the same code. 
+       Added setters to several internal properties, so that they can be
+       shared with derivative classes.
+
+       * WebServiceCompiler.cs: adjust to the changes above. Fixes bug
+       #350398.
+
+       * CachingCompiler.cs: adjust to the changes above. Also some
+       refactoring.
+
+2007-12-15  Marek Habersack  <mhabersack@novell.com>
+
+       * AppCodeCompiler.cs: do not instantiate CodeDomProvider twice.
+
+       * BaseCompiler.cs: do not use CreateCompiler () in the 2.0
+       profile, it's obsoleted. CachingCompiler will use the
+       CodeDomProvider methods directly in that case.
+
+       * WebServiceCompiler.cs: Updated GetCompiledType to acquire
+       compiler information for the 2.0 profile from system.codeDom.
+
+       * CachingCompiler.cs: the Compile overloads do not use the
+       compiler instance, but call appropriate methods on the
+       CodeDomProvider instance directly.
+       Updated some Compile overloads to acquire compiler information for
+       the 2.0 profile from system.codeDom.
+
+2007-12-14  Juraj Skripsky  <js@hotfeet.ch>
+
+       * TemplateControlCompiler.cs (AddExpressionAssign):
+       Make sure expression does not contain prefix.
+       
+       * AppSettingsExpressionBuilder.cs: Pass type of property to
+       GetAppSetting, not type of declaring type.
+
+2007-12-13  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs, AspComponentFoundry.cs,
+       AssemblyBuilder.cs, AppResourcesCompiler.cs,
+       AppResourcesAssemblyBuilder.cs, AppCodeCompiler.cs: speed
+       optimization - use String.Concat instead of String.Format in some
+       cases.
+
+2007-11-22  Marek Habersack  <mhabersack@novell.com>
+
+       * PageCompiler.cs: use
+       pageParser.OutputCacheVaryByContentEncodings when initializing the
+       output cache in the 2.0 profile.
+
+2007-11-06  Marek Habersack  <mhabersack@novell.com>
+
+       * BuildManager.cs: properly retrieve the BuildProviderCollection
+       from configuration files.
+
+2007-11-03  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: do not call converters specified in
+       the member custom attributes if 'str' is null in
+       GetExpressionFromString.
+
+2007-10-23  Marek Habersack  <mhabersack@novell.com>
+
+       * AppResourcesAssemblyBuilder.cs: do not output preservation files
+       for satellite assemblies, just for the main assembly. Also, don't
+       add the satellite assemblies to the list of top-level assemblies.
+
+2007-10-17  Marek Habersack  <mhabersack@novell.com>
+
+       * PageCompiler.cs: added code to set the AsyncMode and
+       AsyncTimeout Page properties.
+
+2007-10-15  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs, WebServiceCompiler.cs,
+       BuildProvider.cs, BaseCompiler.cs, CachingCompiler.cs: use
+       HttpApplication.LoadType instead of Type.GetType.
+
+2007-10-10  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: be careful when using type
+       converters taken from attributes attached to class members. They
+       may come from the System.Design namespace, which is mostly not
+       implemented on Mono.
+
+2007-10-01  Marek Habersack  <mhabersack@novell.com>
+
+       * AppResourcesCompiler.cs: resources are no longer compiled into a
+       single assembly. Instead, the common assembly construction code
+       has been moved to AppResourcesAssemblyBuilder to use satellite
+       assemblies.
+
+       * AppResourcesAssemblyBuilder.cs: new resource assembly
+       construction code which takes care of outputting satellite
+       assemblies.
+
+2007-09-27  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: support nullable types in
+       GenerateExpressionFromString.
+
+2007-09-21  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: if we're running on a platform with
+       the directory separator character that's different to the Unix
+       style '/' one, convert the input file path to the virtual path
+       style string, with path parts separated by '/'. Patch from Robert
+       Jordan <robertj@gmx.net>, thanks! Fixes bug #324229.
+       
+2007-09-20  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: if a member passed to
+       GetExpressionFromString has a TypeConverter attribute set, try to
+       use the named type converter to convert the string value into the
+       target type. Fixes bug #325489.
+
+2007-09-14  Marek Habersack  <mhabersack@novell.com>
+
+       * AppResourcesCompiler.cs: use _culture and _resourceManager
+       instead of culture and resourceManger in the generated code, to
+       avoid case problems for languages that are case-insensitive.
+
+2007-09-10  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: cast the expression to the field
+       type whenever appropriate in GetExpressionFromString.
+       When generating an object instance and one of the parameters is
+       System.Type, return a typeof expression.
+
+2007-09-07  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: another modification to the way
+       TemplateInstance.Single templates are treated. The search for
+       parent with this attribute set stops as soon as the first
+       TemplateBuilder is encountered, no matter what the value of its
+       TemplateInstance attribute is.
+
+2007-09-06  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: ID must be assigned as soon as
+       possible, before any other attributes of the control are
+       accessed. The control code may rely on ID being set.
+       Extend the process of checking if a control is located within a
+       template with the TemplateInstance.Single attribute set, to all
+       the parents of the current builder.
+
+2007-09-05  Marek Habersack  <mhabersack@novell.com>
+
+       * ThemeDirectoryCompiler.cs: all the skin files compiled in one
+       batch must share the same component foundry. Under MS.NET if any
+       earlier .skin file registers a control prefix any later .skin
+       files may use it without registering.
+
+2007-09-04  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: make sure that base class doesn't
+       contain a field of the same name which is accessible from the
+       current control if we're within a singleton template.
+       When generating code for a property or field, use the name
+       retrieved from the metadata by reflection instead of the one
+       parsed from html. Fixes bug #82687. Patch from SunHo Kim
+       <zsunno@gmail.com>, thanks!
+
+2007-08-29  Marek Habersack  <mhabersack@novell.com>
+
+       * CachingCompiler.cs: consider contents of the
+       <compilation><assemblies> section when constructing a list of
+       assemblies during compilation.
+
+       * TemplateControlCompiler.cs: mark fields corresponding to the
+       controls as global references.
+       When control tree is constructed and the parent of the current
+       builder is a TemplateBuilder marked with the TemplateInstance
+       attribute set to Single, use the control's ID as the field
+       name. This makes it possible to refer to controls inside templates
+       by name instead of by using FindControl.
+
+2007-08-23  Marek Habersack  <mhabersack@novell.com>
+
+       * AppCodeCompiler.cs: use HttpApplication.BinDirectoryAssemblies
+       and HttpApplication.LoadTypeFromBin.
+
+       * BuildProvider.cs: use HttpApplication.BinDirectoryAssemblies in
+       AddAssembliesInBin.
+
+2007-08-21  Marek Habersack  <mhabersack@novell.com>
+
+       * BuildProvider.cs: use HttpApplication.PrivateBinPath enumerator
+       to look up assemblies in the binary path(s).
+
+2007-08-19  Juraj Skripsky <js@hotfeet.ch>
+
+       * GlobalAsaxCompiler.cs (ProcessObjects): Make string comparison
+       for scope case insensitive. Fixes bug #82479.
+
+2007-08-14  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: remove dead code.
+
+       * AssemblyBuilder.cs: include actual exception information when
+       reporting inability to load a compiled assembly.
+
+       * AppCodeCompiler.cs: remove unused variables.
+
+       * AspComponentFoundry.cs: use an ArrayList to implement LIFO for
+       component collections, instead of the old Queue which implemented
+       FIFO. Fixes situations when a control registered later for a
+       certain prefix would not be used in preference to a previously
+       registered one of the same name.
+
+2007-08-06  Marek Habersack  <mhabersack@novell.com>
+
+       * AspComponentFoundry.cs: properly add new foundry if the
+       corresponding entry in the foundries collection is a Queue. Patch
+       from Juraj Skripsky <juraj@hotfeet.ch>, thanks! Fixes bug #82285.
+
+2007-07-31  Marek Habersack  <mhabersack@novell.com>
+
+       * AspComponentFoundry.cs: do not overwrite previously registered
+       foundries when a new one is registered with the same prefix. Fixes
+       bug #82216
+
+2007-07-18  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: on the 2.0 profile, GetContainerType
+       does not look up the Item/Items properties to determine the
+       container type, instead it just returns the type reported by the
+       builder passed to this method. This change makes the generated
+       code match MS.NET. Fixes bug #82119.
+
+2007-07-02  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: don't use StartWith to see if a
+       variable's value is a bind expression, as it erroneously renames
+       all calls to methods starting with the string Bind. Use a regular
+       expression now instead. Fixes bug #81928.
+
+2007-06-20  Marek Habersack  <mhabersack@novell.com>
+
+       * AppResourcesCompiler.cs: use HttpRuntime.InternalCache to keep
+       private entries.
+       * CachingCompiler.cs: as above
+       * AspGenerator.cs: as above
+
+2007-06-13  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: make sure control has a writable
+       TemplateControl property prior to assigning values to it.
+
+2007-06-09  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: TemplateControl is assigned for
+       controls that are placed within ContentPlaceHolder and not for the
+       ContentPlaceHolder itself.
+       No longer add the overriden version of TemplateSourceDirectory to
+       the generated source, all the work is now done in
+       Control.TemplateSourceDirectory.
+
+       * BaseCompiler.cs: AppRelativeVirtualPath shouldn't end with a
+       slash, for compatibility with MS.NET
+
+2007-06-05  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: TemplateSourceDirectory in the 2.0
+       profile uses the TemplateControl property instead of Parent. This
+       allows to return the correct path.
+
+2007-06-01  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: be case-insensitive when looking for
+       Bind requests.
+
+2007-05-29  Marek Habersack  <mhabersack@novell.com>
+
+       * ThemeDirectoryCompiler.cs: pass the skin file's
+       virtual path to the skin file parser as its first paramenter, and
+       not a physical path.
+
+2007-05-28  Marek Habersack  <mhabersack@novell.com>
+
+       * ResourceExpressionBuilder.cs: properly cast
+       GetGlobalResourceObject calls to the type of the property being
+       assigned to.
+
+2007-05-25  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: Changed a few incorrect 
+       ObjectCreationExpression to the correct DelegateCreationExpression.
+       Fixes #81706.
+
+2007-05-24  Marek Habersack  <mhabersack@novell.com>
+
+       * PageCompiler.cs: added support for the PreviousPageType directive.
+
+       * Directive.cs: as above.
+
+2007-05-22  Marek Habersack  <mhabersack@novell.com>
+
+       * UserControlCompiler.cs: the Profile property should be present
+       also in user controls.
+
+2007-05-15  Marek Habersack  <mhabersack@novell.com>
+
+       * ResourceExpressionBuilder.cs: added a static method to generate
+       a GetLocalResourceObject call which properly handles types which
+       cannot be converted from strings.
+
+       * TemplateControlCompiler.cs: use code described above to generate
+       code for properties assigned from resources.
+
+       * WsdlBuildProvider.cs: make the code actually work - get the
+       physical path of VirtualPath instead of converting it to absolute
+       URI path.
+       Do not generate source, add the code unit to assembly builder
+       instead.
+
+       * XsdBuildProvider.cs: added
+
+2007-05-08  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: BuildTemplateMethod is a delegate,
+       so use a delegate create expression - it may make difference for
+       languages other than C# (e.g. VisualBasic).
+
+2007-05-07  Marek Habersack  <mhabersack@novell.com>
+
+       * AspGenerator.cs: if the parser's language is implicit (i.e. set
+       from the default configuration), the first script with the
+       language attribute present sets the language of the parser.
+
+2007-05-04  Marek Habersack  <mhabersack@novell.com>
+
+       * TemplateControlCompiler.cs: do not query the parent for
+       TemplateSourceDirectory if we are generating code for a Master
+       Page.
+
 2007-04-30  Marek Habersack  <mhabersack@novell.com>
 
        * ConnectionStringsExpressionBuilder.cs: support expressions with