protected override void Load(ContainerBuilder builder)
        {
            _configurationHolder = new ConfigurationHolder();

            builder
            .RegisterInstance(_configurationHolder)
            .AsSelf()
            .SingleInstance();

            builder
            .RegisterType <UserConfigUpdater>()
            .AsSelf()
            .SingleInstance();

            ImmutableArray <Type> urnMappedTypes = UrnTypes.GetUrnTypesInAssemblies(_assemblies);

            if (!bool.TryParse(_keyValueConfiguration[UrnConfigurationConstants.TreatWarningsAsErrors],
                               out bool treatWarningsAsErrors))
            {
                treatWarningsAsErrors = false;
            }

            var exceptions = new List <Exception>();

            foreach (Type urnMappedType in urnMappedTypes)
            {
                try
                {
                    Register(builder, urnMappedType, treatWarningsAsErrors);
                }
                catch (Exception ex) when(!ex.IsFatal())
                {
                    exceptions.Add(ex);
                    _logger.Error(ex, "Could not register URN-mapped type {Type}", urnMappedType);
                }
            }

            if (exceptions.Any())
            {
                if (treatWarningsAsErrors)
                {
                    throw new AggregateException(exceptions);
                }
            }
        }
        public UserConfigUpdater(
            ConfigurationHolder configurationHolder,
            EnvironmentConfiguration applicationEnvironment)
        {
            _configurationHolder = configurationHolder;

            _fileName = Path.Combine(applicationEnvironment.ContentBasePath ?? Directory.GetCurrentDirectory(), "config.user");

            if (File.Exists(_fileName))
            {
                var fileInfo = new FileInfo(_fileName);

                if (fileInfo.Directory != null)
                {
                    _fileSystemWatcher          = new FileSystemWatcher(fileInfo.Directory.FullName, fileInfo.Name);
                    _fileSystemWatcher.Changed += WatcherOnChanged;
                    _fileSystemWatcher.Created += WatcherOnChanged;
                    _fileSystemWatcher.Renamed += WatcherOnChanged;
                }
            }
        }