public IWindsorContainer Build()
        {
            var container = new WindsorContainerEx();

            container.AddSupportForEmptyCollections();

            InstallFacilities(container);

            InstallFeaturePrerequisites(container);

            var assembliesProvider  = container.Resolve <IAssembliesProvider>();
            var configValueProvider = container.Resolve <IConfigValueProvider>();

            InstallPlugins();

            InstallCoreFeatures(container);

            InstallFeatures(container);

            ApplyHttpSpecific(container);

            FinalizeContainer(container);

            return(container);

            void InstallPlugins()
            {
                var pluginFolder = configValueProvider.GetValue("plugin:folder");

                _logger.Debug($"Loading plugins from folder {pluginFolder}.");
                assembliesProvider.LoadPluginAssemblies(pluginFolder);
            }
        }
        public static WindsorContainerEx GetWindsorContainer()
        {
            var container = new WindsorContainerEx();

            container.AddSupportForEmptyCollections();

            container.Register(
                Component
                .For <ISchoolYearContextProvider>()
                .ImplementedBy <StubCurrentSchoolYearContextProvider>());

            container.Register(
                Component
                .For <IETagProvider>()
                .ImplementedBy <StubEtagProviderSinceWeReallyDontCareWhatTheValueIs>());

            container.Register(
                Classes.FromThisAssembly()
                .BasedOn(typeof(IStep <,>)));

            return(container);
        }