[ServiceLocator] Cherry-pick commit from Dynamite-2013 to add FallbackServiceLocator to server as AddOnProvidedServiceLocator default implementation when no DLL matches *.ServiceLocator.DLL in the GAC.
- The FallbackServiceLocator loads all registration modules belonging to DLLs matching GSoft.Dynamite.*.DLL
[ServiceLocator] AddOnProvidedServiceLocator should now support injection starting from a SPWebApp and SPFarm context.
- BREAKING CHANGE: ISharePointServiceLocator interface was changed to remove the unused InjectProperties methods and to encourage the usage of BeginLifetimeScope overrides that take in SP objects as context parameter
- AddOnProvidedServiceLocator should throw and log more informative error messages before fallbacking on the FallbackServiceLocator (which loads only GSoft.Dynamite.*-matching modules)
- When more than one DLL matching *.ServiceLocator is available in GAC, the AddOnProvidedServiceLocator now inspects all property bags accessible from the parameter context - from SPWeb, to SPSite, to SPWebApp to SPFarm - until it finds a property bag value for the key "ServiceLocatorAssemblyName" to help it disambiguate and decide which concrete ServiceLocator to use in the current context.
[ServiceLocator] Using Current from AddOnProvidedServiceLocator now returns root application container instead of exploding
- .BeginLifetimeScope(SPFeature) also now supports usage in SPWebApplication and SPFarm contexts.
- More comments as well to thoroughly explain the PropertyBag inspection routine used to disambiguate when more than one *.ServiceLocator.DLL-matching assemblies are available in GAC
- Logging ServiceLocator disambiguation errors at Unexpected level to make sure they don't go unnoticed
Merge branch 'feature/addon-service-locator' into develop