- adding a Path property on ExtensionDescriptor that's used in place of the area name for default route URLs
- the Path property if not set will be the Name if it's a valid URL segment, otherwise it will be the Id
- if an *invalid* Path is given an error will be logged and the extension will not be loaded
--HG--
branch : dev
Adding StubCacheManager and Signal to various test container setups
Also ignoring some tests in extensionmanagertests until the semantics can be cleared up
--HG--
branch : perf
Breaking out the shape binding strategies
Implements a ShapeAttribute based shape discovery
Implements a template file name based discovery
Adjusts webforms engine for fully-qualified view names to limit itself to known extensions
--HG--
branch : mvc3p1
Symptom: One the first modification to a source file starts a dynamic
compilation. After that, changes are ignored.
Fix: The problem was that we need to override the "FileHash" value returned
for csproj files to include the hash of all source files. This is so that
any changes to any source file will notify ASP.NET that the .csproj file
needs to be recompiled using a the corresponding build provider.
--HG--
branch : dev
Suppose Module A is loaded through its pre-compiled version
Suppose Module B is loaded through its pre-compiled version
Suppose Module A depends on Module B
If the csproj of Module B is updated, Module B will be dynamically compiled.
We have to ensure Module A is also dynamically compiled, because Module A can't
reference the pre-compiled version of B anymore.
The way we enforce this is by asking every loader if they are compatible
with all module references of a module before picking it as the actual loader.
If a loader decides it's not compatible with the module references, the next
loader in order of priority will be considered.
--HG--
branch : dev
OrchardHost calls into all extension loaders to all extensions descriptor,
allowing each loader to add the set of resource to monitor for change.
OrchardHost resets its list of shells at the beginning of a request if
any monitored resources has changed.
--HG--
branch : dev
First pass is "probing": any loader who thinks it can load a
given extension returns a descriptor for it. The descriptor contains
information about how old the extension is.
The extension manager sorts the descriptor list return by probing all
loaders, and picks the most recent entry.
During the 2nd pass, each loader is called again, with the candidate extension
entry as argument. This allows each loader to be notified that, if they don't
load an extension, they might still need to cleanup some state related to
previous loading.
In essence, this is implementing a complete state machine of loaders and
extension "active/inactive" states/transitions.
--HG--
branch : dev
Four main component types are populated from topology
Additional information for table/area/controller name populated
Some core types for records added automatically
--HG--
branch : dev