2008-04-26 Marek Habersack * GenericBuildProvider.cs: the Parse () method should reuse the previously opened TextReader when calling generator.Parse (), to avoid opening the input file multiple times. Fixes bug #383881 2008-04-25 Marek Habersack * AspGenerator.cs: put some safeguards in, to make sure streams are closed in any case. 2008-04-24 Marek Habersack * AspComponentFoundry.cs: added a new GetComponentType overload which returns component source and a boolean flag whether the control was registered from web.config (2.0). 2008-04-22 Marek Habersack * BuildManager.cs: ignore also arbitrary exceptions when batch-building an assembly. Fixes bug #323556 2008-04-19 Marek Habersack * BuildManager.cs: use absolute virtual path to query the VirtualPathProvider for path existence. When ASP.NET is self-hosted, force non-batch compilation. Fixes bug #380985 * ILocation.cs: added a new property, FileText. * Location.cs: added implementation of the ILocation.FileText property. * ParseException.cs: use the new ILocation.FileText, if defined, to get the file source. * AspGenerator.cs: when TextReader is present, use it to read with the VirtualPathProvider to read the file source. Fixes bug #381364 * AspParser.cs: added a new property FileText to provide the file contents which was read in the constructor. 2008-04-18 Marek Habersack * BuildManager.cs: when any parsing error occurs during batch building, ignore the file which caused it. If the file with parsing error is the one requested by user, throw the parsing exception. Fixes bug #323742 2008-04-15 Marek Habersack * CachingCompiler.cs: dispose of streams the way it should be done. 2008-04-09 Marek Habersack * BuildManager.cs: refactoring - the SetCommonParameters and GetDefaultCompilerTypeForLanguage moved here from BuildProvider, and made internal static. Do not catch compilation exceptions and wrap them in HttpException, let the CompilationException pass through. Fixes bug #377904 * AppWebReferencesCompiler.cs: added - support for compiling of wsdl files found in the App_WebResources directory. Fixes bug #377934 * BuildProvider.cs: refactoring - moved the SetCommonParameters and GetDefaultCompilerTypeForLanguage to BuildManager * WsdlBuildProvider.cs: added the CodeCompilerType property override. Namespace for the generated code is taken from the wsdl path, relative to App_Code or App_WebReferences, if the wsdl in question is under on of those directories. GenerateCode uses OpenReader () so that VirtualPathProvider works for wsdl files. * AssemblyBuilder.cs: make sure Encoding.UTF8 is explicitly used when generating source from code unit and use WebEncoding.FileEncoding when adding code files to the unit. Fixes bug #377938 Cope with virtualPath being null in BuildAssembly. Reference assemblies specified in web.config when linking. 2008-04-08 Marek Habersack * AspComponentFoundry.cs: add loaded assembly to the BuildManager's list of referenced assemblies instead to WebConfigurationmanager.ExtraAssemblies. Fixes bug #377915 * AppCodeCompiler.cs: VirtualPath used in PhysicalToVirtual. * BuildManager.cs: switched to VirtualPath instead of a string path in several methods. Batch compilation is turned off if we have a custom VirtualPathProvider which implements only the VirtualFile and falls back to DefaultVirtualDirectory implementation for directory access. Added an internal method AddToReferencedAssemblies. Remove invalidated entry from WebConfigurationManager.ExtraAssemblies. * GenericBuildProvider.cs: AddCodeFile accepts a virtual path. * BuildProvider.cs: SetVirtualPath accepts a VirtualPath now. * AssemblyBuilder.cs: constructors use the new VirtualPath class now. AddCodeFile can use the VirtualPathProvider if necessary now. BuildAssembly overloads accept VirtualPath parameter instead of a string path now. * TemplateBuildProvider.cs: GetCodeBehindSource returns the virtual path now. 2008-03-31 Marek Habersack * AppCodeCompiler.cs: implemented support for AppInitialize (a static method in any class defined in the App_Code source files), ran just after the App_Code assemblies are compiled in order to perform any application initialization actions. 2008-03-27 Marek Habersack * 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 * BuildManager.cs: if we're running in a case-insensitive environment, use case-insensitive comparer for the build caches. 2008-02-29 Marek Habersack * 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 * 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 * 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 * BuildManager.cs: known file types extensions are now matched case-insensitively. 2008-02-25 Marek Habersack * 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 * AppSettingsExpressionBuilder.cs: Improve exception messages. Return "raw" appsetting value if targetType is null. 2008-02-07 Marek Habersack * 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 * 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 * 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 * 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 * AspGenerator.cs: correct typo. Fix #357547. 2008-01-27 Marek Habersack * BuildManager.cs: GetReferencedAssemblies includes the extra assemblies and the App_Code assemblies. Patch from Mike Morano , thanks! 2008-01-24 Marek Habersack * 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 * BaseCompiler.cs: Assign AppRelativeVirtualPath correctly 2008-01-08 Marek Habersack * 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 * 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 * 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 * 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 * BaseCompiler.cs: check for base type globality in all the location it is used. 2007-12-23 Vladimir Krasnov * AppSettingsExpressionBuilder.cs: fixed GetAppSetting, should convert to property type 2007-12-21 Marek Habersack * 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 * 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 * 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 * 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 * PageCompiler.cs: use pageParser.OutputCacheVaryByContentEncodings when initializing the output cache in the 2.0 profile. 2007-11-06 Marek Habersack * BuildManager.cs: properly retrieve the BuildProviderCollection from configuration files. 2007-11-03 Marek Habersack * TemplateControlCompiler.cs: do not call converters specified in the member custom attributes if 'str' is null in GetExpressionFromString. 2007-10-23 Marek Habersack * 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 * PageCompiler.cs: added code to set the AsyncMode and AsyncTimeout Page properties. 2007-10-15 Marek Habersack * TemplateControlCompiler.cs, WebServiceCompiler.cs, BuildProvider.cs, BaseCompiler.cs, CachingCompiler.cs: use HttpApplication.LoadType instead of Type.GetType. 2007-10-10 Marek Habersack * 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 * 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 * TemplateControlCompiler.cs: support nullable types in GenerateExpressionFromString. 2007-09-21 Marek Habersack * 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 , thanks! Fixes bug #324229. 2007-09-20 Marek Habersack * 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 * 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 * 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 * 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 * 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 * 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 * 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 , thanks! 2007-08-29 Marek Habersack * CachingCompiler.cs: consider contents of the 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 * AppCodeCompiler.cs: use HttpApplication.BinDirectoryAssemblies and HttpApplication.LoadTypeFromBin. * BuildProvider.cs: use HttpApplication.BinDirectoryAssemblies in AddAssembliesInBin. 2007-08-21 Marek Habersack * BuildProvider.cs: use HttpApplication.PrivateBinPath enumerator to look up assemblies in the binary path(s). 2007-08-19 Juraj Skripsky * GlobalAsaxCompiler.cs (ProcessObjects): Make string comparison for scope case insensitive. Fixes bug #82479. 2007-08-14 Marek Habersack * 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 * AspComponentFoundry.cs: properly add new foundry if the corresponding entry in the foundries collection is a Queue. Patch from Juraj Skripsky , thanks! Fixes bug #82285. 2007-07-31 Marek Habersack * 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 * 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 * 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 * AppResourcesCompiler.cs: use HttpRuntime.InternalCache to keep private entries. * CachingCompiler.cs: as above * AspGenerator.cs: as above 2007-06-13 Marek Habersack * TemplateControlCompiler.cs: make sure control has a writable TemplateControl property prior to assigning values to it. 2007-06-09 Marek Habersack * 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 * 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 * TemplateControlCompiler.cs: be case-insensitive when looking for Bind requests. 2007-05-29 Marek Habersack * 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 * ResourceExpressionBuilder.cs: properly cast GetGlobalResourceObject calls to the type of the property being assigned to. 2007-05-25 Marek Habersack * TemplateControlCompiler.cs: Changed a few incorrect ObjectCreationExpression to the correct DelegateCreationExpression. Fixes #81706. 2007-05-24 Marek Habersack * PageCompiler.cs: added support for the PreviousPageType directive. * Directive.cs: as above. 2007-05-22 Marek Habersack * UserControlCompiler.cs: the Profile property should be present also in user controls. 2007-05-15 Marek Habersack * 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 * 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 * 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 * TemplateControlCompiler.cs: do not query the parent for TemplateSourceDirectory if we are generating code for a Master Page. 2007-04-30 Marek Habersack * ConnectionStringsExpressionBuilder.cs: support expressions with suffixes .ProviderName and .ConnectionString (case-insensitie) and generate a call to GetConnectionStringProviderName in the former case. Fixes bug #81490 * AppCodeCompiler.cs: support for cases when there exists a custom profile class but there is no App_Code directory or it's empty. Fixes bug #81489. * TemplateControlCompiler.cs: fix generation of code for declarative attribute assignments of the form Font-Size="small" (i.e. when a font size is assigned a symbolic, relative size value). This fixes for example rendering of the 0th level of TreeView controls. 2007-04-27 Marek Habersack * AppCodeCompiler.cs: do not look at the number of errors, check the compiler return code instead. Resolve assembly names from the global web.config to their locations before passing them to the compiler provider. * AssemblyBuilder.cs: as above * AppResourcesCompiler.cs: as above * AspComponentFoundry.cs: formatting changes. AssemblyFoundry looks for the specified namespace+type in the top-level assemblies if necessary. 2007-04-26 Marek Habersack * AssemblyBuilder.cs: handle compilation failures in a better way. * PageCompiler.cs: the Master property must be in the partial class if present. Fixes bug #81442 2007-04-20 Marek Habersack * AppCodeCompiler.cs: fix App_Code build when the directory contains both known and unknown files. 2007-04-19 Gert Driesen * AspComponentFoundry.cs: Fixed build on 1.0 profile. Spaces to tabs. 2007-04-19 Marek Habersack * AppCodeCompiler.cs: yet another method of detecting if we have a custom profile. * BaseCompiler.cs: as above * AspComponentFoundry.cs: implemented delayed loading of control assemblies. Fixes bug #81058. 2007-04-19 Gert Driesen * BaseCompiler.cs: On 2.0, when ClassName attribute contains namespace then use it instead of the default ASP namespace. Fixes part of bug #81399. 2007-04-19 Marek Habersack * BaseCompiler.cs: don't look at the number of profile properties when deciding if we have a custom profile. It is possible to have a profile that just inherits from a base class and does not list any custom properties. Fixes bug #81396. * AppCodeCompiler.cs: as above 2007-04-15 Marek Habersack * AppCodeCompiler.cs: properly convert physical file path to virtual path for build providers. Make sure there's actually anything to compile. 2007-04-11 Marek Habersack * AppCodeCompiler.cs: move custom profile type check till after the App_Code compilation is done. That way we can have custom profile providers in there. Fixes bug #81307. 2007-04-10 Marek Habersack * AppResourceFilesCollection.cs: watch App_LocalResources for changes. 2007-04-06 Marek Habersack * BaseCompiler.cs: display the source of the file in which the error actually happened if the file exists, or the unit otherwise. 2007-04-03 Marek Habersack * AppResourcesCompiler.cs: global resources are put in the "Resources." namespace while local ones are not. Fixes bug #81174 which was reopened after r75261. 2007-03-26 Marek Habersack * TemplateControlCompiler.cs: refactor assining properties from resources a bit to support pages and user controls. Fixes bug #81204. Process meta:resourcekey after all the field/attribute assignments are done. Fixes bug #80809. Clean the code up a bit. Use GetExpressionFromString to generate a correct expression for custom page/control attributes. Fixes bug #81132. 2007-03-21 Marek Habersack * BaseCompiler.cs: cast 'this' to CodeFileBaseClass in AssignAppRelativeVirtualPath if the attribute was defined. * TemplateControlCompiler.cs: added support for setting custom attributes of a base class from the Page or Control directive attributes. 2007-03-20 Marek Habersack * ResourceExpressionBuilder.cs: if the resource class key is null or empty, call GetLocalResourceObject, if not, GetGlobalResourceObject. Fixes bug #81174. 2007-03-16 Marek Habersack * AppCodeCompiler.cs: produce message that makes more sense. 2007-03-15 Marek Habersack * AppResourcesCompiler.cs: handle global resource keys with dots the way MS.NET does. All the dots are replaced with underscores when generating the stronly-typed property. 2007-03-14 Marek Habersack * AppResourcesCompiler.cs: Fix a bug with global resources file grouping where no translated resources were processed due to base name mismatch. * TemplateControlCompiler.cs: hadle situations when there exist a control in the page with id matching the name of a field/property in the parent class. In this case we use 'protected new' to override the parent. 2007-03-13 Marek Habersack * AspParser.cs: fix an off-by-one parsing bug with server-side includes. * PageThemeCompiler.cs: let property builders through, stop the builders that have no control type. Fixes bug #81092 * PageCompiler.cs: interfaces are to be implemented by the parent partial class, not the generated one. * AppResourceFilesCollection.cs: added separate constructor for local resources handling. * TemplateControlCompiler.cs: request the local resource object with proper virtual path. Put field declarations for controls in the partial class. Make sure builders are in valid state before trying to use them. * BaseCompiler.cs: added code to assing AppRelativeVirtualPath property in the page/control constructor. Change the generated code model for pages/controls to comply with the way MS.NET does (partial class contains only two properties plus declarations of all the controls, the actual control/page class inherits from the partial class). Fixes bug #81001. * AppResourcesCompiler.cs: does not require specifying manually whether it's a global or local resource compiler anymore. New constructors take care of that. Changed to compile local resources on demand, when a control/page is parsed. 2007-03-12 Marek Habersack * AspParser.cs: revert r73587 as it breaks more than it fixes. * AspComponentFoundry.cs: try to register foundries from App_Code assemblies if tag prefix and its namespace are defined. Fixes bug #78797. * BuildManager.cs, BaseCompiler.cs: CodeAssemblies is a collection of Assembly instances, not strings. * CachingCompiler.cs: make sure items in the CodeAssemblies and TopLevelAssemblies are really instances of the Assembly class before trying to use them. CodeAssemblies is a collection of Assembly instances, not strings. * AppCodeCompiler.cs: on MS.NET CodeAssemblies is a collection of assemblies, not paths to assemblies. 2007-03-10 Marek Habersack * PageCompiler.cs, BaseCompiler.cs: refactoring: moved the CreateProfileProperty and InternalCreatePageProperty to BaseCompiler from PageCompiler. * GlobalAsaxCompiler.cs: generate the Profile property for the Global_asax class. 2007-03-09 Marek Habersack * AppCodeCompiler.cs: Add the GetProfile method to the ProfileCommon auto-generated class. * AppResourcesCompiler.cs: attempt to load the resource file earlier in the process, to gracefully handle empty files. * ThemeDirectoryCompiler.cs: make compiled themes depend on the .skin and .css files composing the theme. 2007-03-05 Marek Habersack * PageThemeCompiler.cs: Use correct theme path for AppRelativeTemplateSourceDirectory. Do not process builders of type CodeRenderBuilder. Make sure builder.ControlType is not null before depending on it. * ThemeDirectoryCompiler.cs: theme parser should be passed the virtual directory of the theme. 2007-03-03 Marek Habersack * PageCompiler.cs: Added support for setting the MaintainScrollPositionOnPostBack property if the corresponding page directive attribute is found. * Directive.cs: added the MaintainScrollPositionOnPostBack and LinePragmas directives. 2007-03-02 Marek Habersack * AppCodeCompiler.cs: Correctly process App_Code directories which have no compilable files in the top-level directory. Fixes bug #80998. Write preservation files for the App_Code assemblies. 2007-03-01 Marek Habersack * AspParser.cs: fix GetVerbatim for cases when the end is e.g. --> or --%> and the string matched is ---> or ---%> respectively. The new code always backs out to make sure the end is matched correctly. 2007-02-27 Marek Habersack * TemplateControlCompiler.cs: ParseExpression returns an object, don't assume any concrete type. Use the current culture when converting the expression to a string. * ConnectionStringsExpressionBuilder.cs: Implement support for expressions of the <%$ ConnectionStrings:StringName %> form 2007-02-19 Marek Habersack * ResourceExpressionBuilder.cs: Do not prepend the .Resources prefix here 2007-02-16 Marek Habersack * CachingCompiler.cs, BaseCompiler.cs: Make sure that no assembly is referenced twice by the compiler(s). * TemplateControlCompiler.cs: Fix the problem with cultures which have a comma as their decimal separator and font/whatever units. New code does not reparse the text representation of the unit on the runtime (e.g. 0.9em) but instead it constructs the property using the FontUnit/Unit constructors which take, respectively, Unit and double/unittype parameters. This avoids culture-specific parsing. Also fix converting from invariant strings in a culture-aware environment (e.g. in a page that uses Culture="auto") during the page parsing phase. 2007-02-12 Marek Habersack * PreservationFile.cs: Support preservation (assembly mapping) files (the ones with .compiled extension in the ASP.NET temporary directory). This one implements a loader/saver class. * AppResourcesCompiler.cs: support for assembly name mapping. * AppCodeCompiler.cs: support for assembly name mapping. 2007-02-08 Marek Habersack * TemplateControlCompiler.cs: Fix TemplateSourceDirectory. * AspComponentFoundry.cs: Avoid duplicate control registration exception. * ResourceExpressionBuilder.cs: Make sure all the global resources are looked up using the "Resources." prefix. * AppResourcesCompiler.cs: Make sure all the global resources are embedded with the "Resources." prefix. 2007-02-02 Marek Habersack * AspGenerator.cs: Move the cache insert code to a separate method, for use from other places. * AspComponentFoundry.cs: Register controls mentioned in web.config, but defer their compilation to the moment when they are actually requested. 2007-01-22 Marek Habersack * ThemeDirectoryCompiler.cs: Make sure the code works for empty themes. 2007-01-20 Miguel de Icaza * ClientBuildManager.cs: Remove unused variable (this could be a real problem, we never use the appPhysicalTargetDir) * AssemblyBuilder.cs: Remove unused field. * AppResourceFilesCollection.cs: Remove unused field. * TemplateControlCompiler.cs (GetExpressionFromString): Remove unused variable. * AppResourcesCompiler.cs: Remove unused variable. * AppSettingsExpressionBuilder.cs (GetAppSetting): remove unused parameter. * PageCompiler.cs: Put InternalCreatePageProperty inside the NET_2_0 block to eliminate warnings. 2007-01-20 Gert Driesen * BaseCompiler.cs: Fixed build on 1.0 profile. 2007-01-20 Marek Habersack * BaseCompiler.cs: If the control base type is in the root namespace, make sure global:: is prepended to it. * TemplateControlCompiler.cs: AutoHandlers is obsolete in 2.0, mark it as such in the generated code as well. * AppCodeCompiler.cs: Include debug information if configured in web.config. Fixes bug #80096. 2007-01-17 Marek Habersack * AppCodeCompiler.cs: Reference toplevel assemblies (at this stage App_GlobalResources) when compiling App_Code sources. * CachingCompiler.cs: Reference toplevel assemblies when compiling e.g. Global.asax * AppResourcesCompiler.cs: Close the streams properly. * AspGenerator.cs: Don't ignore thead/tbody anymore. 2007-01-15 Marek Habersack * WsdlBuildProvider.cs: New build provider for WSDL files. Compile only when System.Web.Services are present. * TemplateControlCompiler.cs: Forgotten in the previous commit - don't pass the current culture to GetLocalResourceObject, let the method figure it out on its own. 2007-01-05 Marek Habersack * AppResourceFilesCollection.cs: new class to keep and manage collection of resource files for the App_{Global,Local}Resources folders. * TemplateControlCompiler.cs: rely on HttpContext.GetLocalResourceObject to select the correct culture. * AppResourceFileInfo.cs: new class for keeping resource files information. * AppResourcesCompiler.cs: new implementation. 2006-12-20 Marek Habersack * AssemblyBuilder.cs: add an internal version of the AddCodeCompileUnit method. * AppCodeCompiler.cs: implement support for ProfileCommon generation from properties named in the element in Web.config. * PageCompiler.cs: create the Profile property in 2.0 code. 2006-12-12 Vladimir Krasnov * ThemeDirectoryCompiler.jvm.cs: fixed virtual path for themes 2006-12-10 Igor Zelmanovich * ThemeDirectoryCompiler.cs: refactoring. 2006-11-28 Marek Habersack * BuildManager.cs: Add an internal property to signal whether or not we have any resources from App_{Global,Local}Resources * AspGenerator.cs: Register controls from system.web/pages/controls collection before parsing. * AppResourcesCompiler.cs: Let the build process know if we have compiled any resources from App_{Global,Local}Resources 2006-11-27 Marek Habersack * CachingCompiler.cs: Automatically reference App_Code assemblies. * AppCodeCompiler.cs: Add ~/bin/*.dll to the referenced assemblies when compiling. 2006-11-25 Marek Habersack * AppResourcesCompiler.cs: small optimizations. * AppResourceFilesCompiler.cs: small optimizations. 2006-11-21 Gonzalo Paniagua Javier * WebServiceCompiler.cs: add the type to the cache after getting it from the compiled assembly. 2006-11-20 Marek Habersack * AppCodeCompiler.cs: Reference assemblies listed in system.web/compilation/assemblies. Don't create empty assemblies. 2006-11-19 Igor Zelmanovich * TemplateControlCompiler.cs: fixed: When <%# Bind(...) %>-expression is used more then once for same control The variable associated with this control is declared only once. 2006-11-18 Marek Habersack * AppResourceFilesCompiler.cs: Fixed an exception thrown when files with names like File.resources or File.resx are found in the resource directories. 2006-11-16 Marek Habersack * ForceCopyBuildProvider.cs: Added the build provider for copy-only files. * MasterPageBuildProvider.cs: Added the build provider for Master Pages. * IgnoreFileBuildProvider.cs: Make the class sealed. * AppCodeCompiler.cs: Fixed BuildProvider creation for a path. Now correctly uses the BuildProviderCollection to retrieve the appropriate builder and maps the physical input file path into application relative path when setting the virtual path of the build provider. 2006-11-13 Marek Habersack * AssemblyBuilder.cs: Added referenced assemblies support. Added a constructor with just the CodeDomProvider argument. CreateCodeFile now uses the code provider's file extension. Added internal method to add pre-generated source code files. Added a BuildAssembly overload that takes no virtual path as the parameter. BuildAssembly now uses an array of source files instead of compile units and also handles embedded resources and referenced assemblies. BuildAssembly deletes the temporary files if MONO_ASPNET_NODELET isn't set in the environment. * AppCodeCompiler.cs: Use the FileUtils methods for temporary file creation. Use the build providers collection to build unknown files in App_Code. Use AssemblyBuilder to compile the assembly. * AppResourceFilesCompiler.cs: Use the FileUtils methods for temporary file creation. * WebHandlerBuildProvider.cs: Added the BuildProviderAppliesTo attribute. * UserControlBuildProvider.cs: Added the BuildProviderAppliesTo attribute. * PageBuildProvider.cs: Added the BuildProviderAppliesTo attribute. * WebServiceBuildProvider.cs: Added the BuildProviderAppliesTo attribute. * IgnoreFileBuildProvider.cs: Added the BuildProviderAppliesTo attribute. 2006-11-08 Marek Habersack * BuildProvider.cs: Implemented the GetCustomString method. Removed the necessity to retrieve the CompilationSection twice when GetDefaultCompilerType is called. * AppResourcesCompiler.cs: Added resource compiler results handling. * AppCodeCompiler.cs: The App_Code compiler classes * BuildManager.cs: Implement the CodeAssemblies property. Added an internal TopLevelTypes property to be used in the custom GetType methods. Implemented the GetCompiledCustomString method. Implemented the GetType method overloads. Implemented the GetVirtualPathDependencies method. * BaseCompiler.cs: Reference the assemblies from App_Code, if any 2006-10-18 Marek Habersack * TemplateControlCompiler.cs: add support for resource expressions in tag attributes. * ResourceExpressionBuilder.cs: add support for resource expressions in tag attributes. * BaseCompiler.cs: add global/local resource assemblies to compilation references, if present. * AppResourcesCompiler.cs: global/local resources compiler. * AppResourceFilesCompiler.cs: compiler of resource files. 2006-10-03 Igor Zelmanovich * TemplateControlCompiler.cs: fixed: Bind functions (Data-Binding Syntax). At run time, the Bind method calls the Eval method, if there is DataItem != null to bind to. If there is DataItem == null (like InsertItemTemplate in FormView) Bind method don't raise exception and works properly to extract data from bounded controls on postback. 2006-09-20 Gonzalo Paniagua Javier * AspGenerator.cs: if we are tracking non-server tags for well-formedness, handle tags that do not need to be closed (br, img,...) Fixes bug #79437. 2006-09-18 Gonzalo Paniagua Javier * PageCompiler.cs: support the EnableEventValidation attribute. 2006-09-08 Gonzalo Paniagua Javier * AspGenerator.cs: after parsing an include file, don't error out if we still have opened tags unless this was the last file to parse. Fixes bug #79318. 2006-09-05 Konstantin Triger * ParseException.cs: Ensure the source file stream is closed. 2006-08-25 Kornél Pál * AppSettingsExpressionBuilder.cs: Use assembly name constants. * ConnectionStringsExpressionBuilder.cs: Use name reference constants. * ResourceExpressionBuilder.cs: Use assembly name constants. 2006-08-20 Vladimir Krasnov * ThemeDirectoryCompiler.jvm.cs: implemented GetCompiledInstance 2006-08-10 Gonzalo Paniagua Javier * ClientBuildManager.cs: handle domain shutdown and unload. Implemented some properties. Commented. 2006-08-10 Andrew Skiba * ThemeDirectoryCompiler.cs: render css path as a virtual path. 2006-08-08 Vladimir Krasnov * added ThemeDirectoryCompiler.jvm.cs 2006-07-28 Gonzalo Paniagua Javier * PageThemeCompiler.cs: Don't generate a 'Items.Clear ()' call if the property Items does not exist. Patch by Marek Habersack that fixes bug #78971. 2006-07-28 Gonzalo Paniagua Javier * TemplateControlCompiler.cs: support assigning nullable types. Patch by Marek Habersack that fixes bug #78970. 2006-07-13 Gonzalo Paniagua Javier * TemplateControlCompiler.cs: make password work again. 2006-06-21 Juraj Skripsky * AspTokenizer.cs (ReadAttValue), AspParser.cs (GetAttributes): MS.NET handles nested quotes differently for server controls and for "normal" controls. Add a property "AlternatingQuotes" to the tokenizer and let the parser decide whether it is well-formed or not. 2006-06-20 Andrew Skiba * PageThemeCompiler.cs, TemplateControlCompiler.cs: take care of UrlPropertyAttribute. 2006-06-18 Andrew Skiba * TemplateControlCompiler.cs: check IsWritablePropertyOrField before generating code for assignment statement and DataBind event. 2006-06-15 Juraj Skripsky * AspTokenizer.cs (ReadAttValue), AspParser.cs (GetAttributes): Don't allow an attribute value to contain the same quote characters as the ones used for delimiting the value itself. Add a token NOTWELLFORMED to signal that case to AspParser. Fixes bug #78643. 2006-06-08 Konstantin Triger * ThemeDirectoryCompiler.cs: use physical path instead of virtual path. 2006-04-24 Andrew Skiba * ThemeDirectoryCompiler.cs: use UrlUtils.Combine to combine pathes 2006-04-23 Andrew Skiba * PageThemeCompiler.cs: initialize __linkedStyleSheets field with the array of style sheets from the parser * ThemeDirectoryCompiler.cs: scan *.css files in theme directory and put them in LinkedStyleSheets of PageThemeParser 2006-04-20 Chris Toshok * BaseCompiler.cs: for 2.0, emit the correct namespace and class names in the case where you use "NS.ClassName" in the Inherits attribute. Fixes bug #78135. 2006-04-20 Gonzalo Paniagua Javier * CachingCompiler.cs: no need to play the Wait/PulseAll game, as we already acquired the lock even when we might have not created the 'key' to the compilation ticket. 2006-04-16 Andrew Skiba * ThemeDirectoryCompiler.cs: add to the directory parser all the assemblies found by PageThemeFileParsers 2006-04-12 Lluis Sanchez Gual * TemplateControlCompiler.cs: Properly read all content of string properties. 2006-04-11 Andrew Skiba * TemplateControlCompiler.cs : fix for partial parsers 2006-04-11 Andrew Skiba * ThemeDirectoryCompiler.cs : map the virtual path to the physical path 2006-04-08 Miguel de Icaza * TemplateControlCompiler.cs: An attempt to fix the regression introduced in r58505 (a bug fix for 77762). This was reported in the mailing list with a batch of new 2.0 failures. We really need a test suite in NUnit to check on ASP.NET aspx changes. 2006-03-27 Robert Jordan * CachingCompiler.cs: change the compilation locking scheme from "one mcs per process" to "one mcs per file". 2006-03-24 Gonzalo Paniagua Javier * System.Web.Compilation/TemplateControlCompiler.cs: handle the new StringPropertyBuilder. 2006-03-24 Chris Toshok * BaseCompiler.cs (GetCompiledType): fall back to CodeDomProvider if system.web/compilation doesn't list a compiler for our language. 2006-03-13 Chris Toshok * TemplateControlCompiler.cs (InitMethod): when generating the call to ApplyStyleSheetSkin, don't just blindly pass "this" as the argument to it. Only do that if the class we're compiling is actually a subclass of Page. If it's not, pass this.Page. 2006-03-07 Chris Toshok * AspGenerator.cs: refactor the parsing code so that we can initiate parsing from outside this class. * PageCompiler.cs (PrependStatementsToFrameworkInitialize): new method, add our StyleSheetTheme assignment here. (AppendStatementsToFrameworkInitialize): rename AddStatements* to this. * TemplateControlCompiler.cs (EnsureID): make protected. (CreateAssignStatementsFromAttributes): same (AddChildCall): same. (CreateControlTree): same. (CreateFrameworkInitializeMethod): change "AddStatementsToFrameworkInitialize" to "AppendStatementsToFrameworkInitialize", and add call to "PrependStatementsToFrameworkInitialize" before the generation of "base.FrameworkInitialize()." * PageThemeCompiler.cs (CreateControlSkinMethod): remove spew. 2006-03-07 Chris Toshok * ThemeDirectoryCompiler.cs: new file. * PageThemeCompiler.cs: new file. 2006-03-07 Chris Toshok * BaseCompiler.cs: fix typo in "initialize" in multiple places. (Init): move the CreateMethods call here. 2006-03-02 Chris Toshok * TemplateControlCompiler.cs (InitMethod): emit an assignment for SkinID just after the creation of our object, and right after that call "_ctrl.ApplyStyleSheetSkin (page)". (CreateAssignStatementsFromAttributes): split out the majority of this code to CreateAssignStatementFromAttribute, and change this method to simply a loop over the attribute keys. In the 2.0 case, skip the SkinID property, since that's handled explicitly in InitMethod. * PageCompiler.cs (AddStatementsToInitMethod): emit assignments for Theme and StyleSheetTheme. 2006-02-23 Chris Toshok * TemplateControlCompiler.cs (AddContentTemplateInvocation): track change from ContentControlBuilderInternal to ContentBuilderInternal. (AddCodeRender): same. 2006-02-16 Gonzalo Paniagua Javier * AssemblyBuilder.cs: * BuildManager.cs: compile the assembly from AssemblyBuilder and use GetGeneratedType() on the BuildProvider instead of loading the assembly and trying a wild guess at the type name. 2006-02-14 Gonzalo Paniagua Javier * GlobalAsaxCompiler.cs: * PageCompiler.cs: * TemplateControlCompiler.cs: CreateMethods is now internal. * WebServiceBuildProvider.cs: * PageBuildProvider.cs: * UserControlBuildProvider.cs: * WebHandlerBuildProvider.cs: new build providers. * BuildProvider.cs: add assemblies. * BaseCompiler.cs: expose the provider and the compile unit through properties. 2006-02-10 Gonzalo Paniagua Javier * CompilerType.cs: implemented. * AssemblyBuilder.cs: implemented most of it. * WebServiceCompiler.cs: * CachingCompiler.cs: update 2.0 compiler instance creation code. * ClientBuildManager.cs: implemented some of its methods. Not yet ready. * BuildManager.cs: the more interesting methods are implemented now. * BaseCompiler.cs: delete the temporary files in case of error. * BuildProvider.cs: implemented the Get*Compiler* protected methods. 2006-02-07 Chris Toshok * TemplateControlCompiler.cs (AddParsedSubObjectStmt): append the calls to AddParsedSubObject to a special statement collection -- builder.flushOutputStatements -- not to builder.method.Statements. (InitMethod): initially, set flushOutputStatements to method.Statements. If we're dealing with a ContentPlaceHolder, set flushOutputStatements to be the else block of a conditional we create. This causes the compiled control to fall back to the ContentPlaceHolder's child controls in case there's no corresponding Content template. (AddChildCall): use methodStatements instead of method.Statements. (CreateControlTree): same. * PageCompiler.cs (CreatePropertyAssign): factor out the string,string implementation and add one that also takes a CodeExpression; make the string,string implementation call the three arg one with thisRef. (AddStatementsToInitMethod): make use of the 3-arg form of CreatePropertyAssign to reduce code. Also, add support for setting the page's Title from the parser's Title. 2006-02-07 Chris Toshok * UserControlCompiler.cs (AddStatementsToInitMethod): emit code to assign __ctrl.MasterPageFile to our master page, if we have one. * PageCompiler.cs (CreateContructor): remove the MasterPageFile assignment from here. (AddStatementsToInitMethod): and move it here. * TemplateControlCompiler.cs (InitMethod): in the case where builder is a RootBuilder (we're building the __BuildControlTree method), call a virtual method so that subclasses can add their own statements to the method (used by both Page and MasterPage); Also, in the RootBuilder case, the argument should be the parser.ClassName type (the class we're building); lastly, expand the ContentPlaceHolder logic to include all the ContentTemplates/InstantiateIn magic. (AddStatementsToInitMethod): empty virtual method. (AddContentTemplateInvocation): ContentControlBuilder -> ContentControlBuilderInternal. (CreateControlTree): same. (CallBaseFrameworkInitialize): new function, create call to base.FrameworkInitialize. (CreateFrameworkInitializeMethod): call CallBaseFrameworkIniitialize. 2006-02-06 Gonzalo Paniagua Javier * IgnoreFileBuildProvider.cs: it's not public. * BuildProvider.cs: mostly implemented. 2006-02-01 Chris Toshok * WebServiceCompiler.cs: CONFIGURATION_2_0 => NET_2_0, and use GetSection instead of GetWebApplicationSection. * CachingCompiler.cs: same. * AspGenerator.cs: same. * BaseCompiler.cs: same. 2006-01-23 Gonzalo Paniagua Javier * AspGenerator.cs: ignore 'thead'. Fixes bug #77326. 2006-01-22 Chris Toshok * IgnoreFileBuildProvider.cs: build provider which does nothing. 2006-01-22 Chris Toshok * AspComponentFoundry.cs (.ctor): use a 2.0 friendly form of the Hashtable ctor to silence a couple of warning. (CompoundFoundry.ctor): same * Directive.cs (InitHash): use a 2.0 friendly form of the Hashtable ctor to silence a couple of warning. * TagAttributes.cs (MakeHash): use a 2.0 friendly form of the Hashtable ctor to silence a warning. (GetDictionary): same. 2006-01-22 Chris Toshok * AppSettingsExpressionBuilder.cs: implement this, patterning it after an example on msdn. Also, enable the ExpressionEditor attribute, but use the string rather than the Type overload so we won't have yet another circular dep. * ConnectionStringsExpressionBuilder.cs: partial implementation. Same deal with the ExpressionEditor attribute. * ResourceExpressionBuilder.cs: same deal with the ExpressionEditor attribute. 2006-01-20 Chris Toshok * ResourceExpressionBuilder.cs (ParseExpression): implement. * ResourceExpressionFields.cs: implement. 2006-01-20 Chris Toshok * ClientBuildManagerParameter.cs: implement. * ClientBuildManagerCallback.cs: this class contains an empty default implementation. 2006-01-10 Gonzalo Paniagua Javier * AspGenerator.cs: add support for 'src' in