Finds all extensions and load them into the app domain (or use previously loaded assemblies)
Loads all assembles that have names ending with ".Extension.dll"
Example #1
0
        public static void Register()
        {
            _extensionLoader = new ExtensionLoader();

            var viewProvider    = new EmbeddedViewFileProvider();
            var contentProvider = new EmbeddedFileProvider();

            var provider = new AggregateVirtualPathProvider(viewProvider, contentProvider);

            HostingEnvironment.RegisterVirtualPathProvider(provider);

            var config = CoreConfiguration.Current.Extensibility;

            if (config == null)
            {
                return;
            }

            // automatic extension discovery with '*.Extension.dll' convention
            if (config.AutomaticExtensionDiscovery)
            {
                _extensionLoader.LoadExtensions();

                foreach (var assembly in _extensionLoader.Assemblies)
                {
                    viewProvider.Add(assembly);
                    contentProvider.Add(assembly);
                }
            }
            else
            {
                // controlled extension discovery based on web.config (without conventions)
                foreach (var ext in config.Extensions
                         .OfType <ExtensionElement>()
                         .Distinct(new ExtensionElementNameComparer()))
                {
                    var assembly = _extensionLoader.TryLoadAssemblyByName(ext.Name);
                    if (assembly == null)
                    {
                        continue;
                    }

                    var mapping = new NamespaceMapping(assembly, ext.Namespace);
                    viewProvider.Add(mapping);
                    contentProvider.Add(mapping);
                }
            }
        }
Example #2
0
        public static void Register()
        {
            _extensionLoader = new ExtensionLoader();

              var viewProvider = new EmbeddedViewFileProvider();
              var contentProvider = new EmbeddedFileProvider();

              var provider = new AggregateVirtualPathProvider(viewProvider, contentProvider);
              HostingEnvironment.RegisterVirtualPathProvider(provider);

              var config = CoreConfiguration.Current.Extensibility;
              if (config == null) return;

              // automatic extension discovery with '*.Extension.dll' convention
              if (config.AutomaticExtensionDiscovery)
              {
            _extensionLoader.LoadExtensions();

            foreach (var assembly in _extensionLoader.Assemblies)
            {
              viewProvider.Add(assembly);
              contentProvider.Add(assembly);
            }
              }
              else
              {
            // controlled extension discovery based on web.config (without conventions)
            foreach (var ext in config.Extensions
              .OfType<ExtensionElement>()
              .Distinct(new ExtensionElementNameComparer()))
            {
              var assembly = _extensionLoader.TryLoadAssemblyByName(ext.Name);
              if (assembly == null) continue;

              var mapping = new NamespaceMapping(assembly, ext.Namespace);
              viewProvider.Add(mapping);
              contentProvider.Add(mapping);
            }
              }
        }