Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }