예제 #1
0
        protected override ConfigLoadResult LoadConfigCore()
        {
            LogTraceMessage($"Loading config {this}");

            var projectLevelConfigProvider = new XmlFileConfigProvider(GetConfigFilePath(ProjectFolder), TraceMessageHandler);

            _fileConfigProviders = CreateFileConfigProviderList(projectLevelConfigProvider, ProjectFolder);

            return(CombineFileConfigProvidersAndSaveResult());
        }
예제 #2
0
        private List <XmlFileConfigProvider> CreateFileConfigProviderList(XmlFileConfigProvider firstConfigProvider, string startFolderPath)
        {
            var fileConfigProviders = new List <XmlFileConfigProvider> {
                firstConfigProvider
            };

            LogTraceMessage(IndentHelper.Indent($"InheritanceDepth={firstConfigProvider.InheritanceDepth}", 1));

            var currentFolder = startFolderPath;

            for (var i = 0; i < firstConfigProvider.InheritanceDepth; i++)
            {
                currentFolder = Directory.GetParent(currentFolder)?.FullName;
                if (string.IsNullOrWhiteSpace(currentFolder))
                {
                    break;
                }

                var higherLevelConfigProvider = new XmlFileConfigProvider(GetConfigFilePath(currentFolder), TraceMessageHandler);
                fileConfigProviders.Add(higherLevelConfigProvider);
            }

            return(fileConfigProviders);
        }