/// <summary>
        /// Creates core service instances and registers them in <see cref="ServiceRegistration"/>.
        /// </summary>
        public static void RegisterCoreServices()
        {
            ILogger logger = ServiceRegistration.Get <ILogger>();

            logger.Debug("ApplicationCore: Registering IImpersonationService");
            ServiceRegistration.Set <IImpersonationService>(new ImpersonationService());

            logger.Debug("ApplicationCore: Registering IRegistry service");
            ServiceRegistration.Set <IRegistry>(new Services.Registry.Registry());

            logger.Debug("ApplicationCore: Registering IThreadPool service");
            ServiceRegistration.Set <IThreadPool>(new ThreadPool());

            logger.Debug("ApplicationCore: Registering IMessageBroker service");
            ServiceRegistration.Set <IMessageBroker>(new MessageBroker());

            logger.Debug("ApplicationCore: Registering ILoggerConfig service");
            ServiceRegistration.Set <ILoggerConfig>(new LoggerConfig());

            logger.Debug("ApplicationCore: Registering IPluginManager service");
            ServiceRegistration.Set <IPluginManager>(new Services.PluginManager.PluginManager());

            logger.Debug("ApplicationCore: Registering ILocalization service");
            ServiceRegistration.Set <ILocalization>(new StringManager());

            logger.Debug("ApplicationCore: Registering ITaskScheduler service");
            ServiceRegistration.Set <ITaskScheduler>(new Services.TaskScheduler.TaskScheduler());

            logger.Debug("ApplicationCore: Registering IMediaAccessor service");
            ServiceRegistration.Set <IMediaAccessor>(new MediaAccessor());

            logger.Debug("ApplicationCore: Registering IFileEventNotifier service");
            ServiceRegistration.Set <IFileEventNotifier>(new FileEventNotifier());

            // ToDo: Remove the old ImporterWorker and this setting once the NewGen ImporterWorker actually works
            var importerWorkerSettings = ServiceRegistration.Get <ISettingsManager>().Load <ImporterWorkerSettings>();

            if (importerWorkerSettings.UseNewImporterWorker)
            {
                logger.Debug("ApplicationCore: Registering IImporterWorker NewGen service");
                ServiceRegistration.Set <IImporterWorker>(new ImporterWorkerNewGen());
            }
            else
            {
                logger.Debug("ApplicationCore: Registering IImporterWorker service");
                ServiceRegistration.Set <IImporterWorker>(new ImporterWorker());
            }

            logger.Debug("ApplicationCore: Registering IResourceServer service");
            ServiceRegistration.Set <IResourceServer>(new ResourceServer());

            logger.Debug("ApplicationCore: Registering IResourceMountingService");
            ServiceRegistration.Set <IResourceMountingService>(new ResourceMountingService());

            logger.Debug("ApplicationCore: Registering IRemoteResourceInformationService");
            ServiceRegistration.Set <IRemoteResourceInformationService>(new RemoteResourceInformationService());

            logger.Debug("ApplicationCore: Registering IThumbnailGenerator service");
            ServiceRegistration.Set <IThumbnailGenerator>(new ThumbnailGenerator());

            AdditionalPluginItemBuilders.Register();
        }