/// <summary> /// Initializes the modules. May be overwritten in a derived class to use a custom Modules Catalog. /// </summary> protected override void InitializeModules() { var moduleManager = Container.ResolveType <IModuleManager>(); var defaultModuleManager = moduleManager as ModuleManager; if (defaultModuleManager != null) { var typeLoaders = new List <IModuleTypeLoader>(); var existingTypeLoaders = defaultModuleManager.ModuleTypeLoaders; if (existingTypeLoaders != null) { typeLoaders.AddRange(existingTypeLoaders); } #if !SL5 // CTL-646 if (ModuleCatalog.IsCatalogType <INuGetBasedModuleCatalog>()) { if (!typeLoaders.Any(x => x is NuGetModuleTypeLoader)) { typeLoaders.Add(new NuGetModuleTypeLoader(ModuleCatalog)); } } #endif defaultModuleManager.ModuleTypeLoaders = typeLoaders; } var registeredModulesCount = 0; Logger.Log("Registering currently available modules automatically", Category.Debug, Priority.Low); foreach (var module in ModuleCatalog.Modules) { if (RegisterModule(module)) { registeredModulesCount++; } } Logger.Log(string.Format("Registered '{0}' available modules automatically", registeredModulesCount), Category.Debug, Priority.Low); moduleManager.ModuleDownloadProgressChanged += OnModuleDownloadProgressChanged; moduleManager.Run(); }