Fixed bug in LastModifiedDate parsing of XmlSiteMapNodeProvider so it will use the invariant culture rather than the current one when analyzing the string.
Added call to container.AssertConfigurationIsValid for StructureMap when run in debug mode.
Added ExcludeFromAutoRegistrationAttribute so classes that are not designed to be registered automatically (such as classes that are always instantiated by factories, or classes whose dependencies rely on factories) can be excluded in one place rather than in separate lists for each DI container. This will allow us to add classes that conform to the naming conventions that would ordinarily break the external DI configurations.
Fixed spelling mistake in convention - "Adaptor" is now "Adapter". Deprecated all of the old "Adaptor" classes and replaced them.
Updates to CommonConventions static helper class: 1) Adapter suffix is now registered by default, default convention takes precedence 2) Single implementations of interface no longer required to auto-register 3) ExcludeFromAutoRegistrationAttribute can be applied to any class to explicitly exclude it from auto registration 4) Renamed IsMatch private functions to IsExcludedType for clarity.
Fixes #266, Attributes and LastModifiedDate cannot be updated on MvcSiteMapNodeAttribute because DateTime and IDictionary<string, object> are not supported on .NET Attributes. LastModifiedDate can now be set to an invariant DateTime string and Attributes can be set using JSON.
Fix for .NET 3.5 IJavaScriptSerializer members that did not exist.
Removed StructureMap conventions because they are not in use by the stock registry code.
Updated external DI modules. 1) Added test setting for includeAssembliesForScan for the MvcSiteMapProvider demo. 2) Removed all types from excludeTypes and regex matching because this is now handled by the [ExcludeFromAutoRegistrationAttribute]. The excludeTypes and regex parameters still exist so the end developer can exclude types from registration if needed. 3) Added documentation for excludeTypes. 4) Removed manual registration of the Adapters because it is now done via convention. 5) Fixed using directives by removing unused namespaces.
Replaced Xml.SiteMapXmlReservedAttributeNameProvider with Builder.ReservedAttributeNameProvider in preparation for migrating the reserved attribute logic inside of AttributeDictionary and RouteValueDictionary. Deprecated Xml.SiteMapXmlReservedAttributeNameProvider and Xml.ISiteMapXmlReservedAttributeNameProvider.
Updated all internal classes to use the IReservedAttributeNameProvider instead of ISiteMapXmlReservedAttributeNameProvider. The latter inherits from the former, so this is not a breaking change.
Eliminated the AcquireAttributesFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the AttributesDictionary.
Eliminated the AcquireRouteValuesFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the RouteValuesDictionary.
Eliminated the AcquireRolesFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the RoleCollection.
Eliminated the AcquirePreservedRouteParametersFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the PreservedRouteParamterCollection.
Eliminated the AcquireMetaRobotsValuesFrom() methods from the ISiteMapNodeProvider and ISiteMapBuilder implementations by replacing them with AddRange overloads on the MetaRobotsValueCollection.
Updated Add and AddRange overloads of MetaRobotsValueCollection, RoleCollection, and PreservedRouteParameterCollection to be consistent.
Adding the "area" key in the RouteValue dictionary automatically, so it cannot be accidentally excluded from an ISiteMapNodeProvider implementation. Also made both the AttributeDictionary and RouteValueDictionary safer by making the Add and AddRange overloads automatically overwrite existing keys rather than throwing an exception.
Removed code for defaulting area to empty string from ISiteMapNodeProvider and ISiteMapBuilder implementations bacause it is no longer required.
Refactored inheritance logic of area and controller and moved logic to the top of the module so the SiteMapNode keys will match area and controller even when inherited. Broke the inheritance of controller and action into separate methods. Fixed incorrect overload of AddRange calls in AspNetSiteMapBuilder and AspNetSiteMapNodeProvider.