public Startup WithExtensionsDirectory([NotNull] string directory) { var assemblyFileNames = Directory.Exists(directory) ? Directory.GetFiles(directory, "Sitecore.Pathfinder.*.dll") : Enumerable.Empty <string>(); if (AssemblyFileNames == null) { AssemblyFileNames = assemblyFileNames; } else { AssemblyFileNames = AssemblyFileNames.Concat(assemblyFileNames).Distinct().ToList(); } return(this); }
public IHostService Start() { if (string.IsNullOrEmpty(ProjectDirectory)) { ProjectDirectory = GetProjectDirectory(); } var assembly = Assembly.GetEntryAssembly() ?? Assembly.GetEntryAssembly(); var assemblyFileNames = new List <string> { assembly.Location }; if (AssemblyFileNames != null) { assemblyFileNames.AddRange(AssemblyFileNames.Distinct().OrderBy(a => a)); } var configuration = this.RegisterConfiguration(ConfigurationOptions, ToolsDirectory, ProjectDirectory, SystemConfigurationFileName, CommandLine); if (configuration == null) { return(null); } if (!string.IsNullOrEmpty(WebsiteDirectory)) { configuration.Set(Constants.Configuration.WebsiteDirectory, WebsiteDirectory); } if (!string.IsNullOrEmpty(DataFolderDirectory)) { configuration.Set(Constants.Configuration.DataFolderDirectory, DataFolderDirectory); } if (!string.IsNullOrEmpty(BinDirectory)) { configuration.Set(Constants.Configuration.BinDirectory, BinDirectory); } if (!string.IsNullOrEmpty(PackageRootDirectory)) { configuration.Set(Constants.Configuration.NugetPackageRootDirectory, PackageRootDirectory); } else { configuration.Set(Constants.Configuration.NugetPackageRootDirectory, Path.Combine(ProjectDirectory, configuration.GetString(Constants.Configuration.Packages.NugetDirectory))); } var compositionService = this.RegisterCompositionService(configuration, ProjectDirectory, assemblyFileNames, CompositionOptions); if (compositionService == null) { return(null); } // create the host var host = compositionService.Resolve <IHostService>().With(Stopwatch); // initialize extension - only called at start up foreach (var extension in compositionService.ResolveMany <IExtension>()) { extension.Start(); } return(host); }