private void Start(string[] args) { string[] filteredArgs = new string[0]; if (ConfigurationProperties.Length > 0) { var switchMaps = ConfigurationProperties.GetSwitchMaps(_namespace); var implicitSwitchMaps = _implicitBoolProperties.GetSwitchMaps(_namespace); filteredArgs = args.Except(implicitSwitchMaps.Keys, StringComparer.OrdinalIgnoreCase).ToArray(); var configBuilder = new ConfigurationBuilder(); AppSettings.UserConfiguration?.Invoke(configBuilder); var configWithoutCli = configBuilder.Build(); configBuilder.AddCommandLine(filteredArgs, switchMaps); var config = configBuilder.Build(); var commandName = _optionsAttribute?.Namespace ?? Type.Name; IConfiguration configSection; if (_isAppRoot) { configSection = config; } else { configSection = config.GetSection(commandName); } IConfiguration configSectionWithoutCli; if (_isAppRoot) { configSectionWithoutCli = config; } else { configSectionWithoutCli = config.GetSection(commandName); } InjectConfigProperties(args, switchMaps, configSection, configSectionWithoutCli); for (var i = 0; i < filteredArgs.Length; i++) { if (filteredArgs[i] != null && switchMaps.Keys.ContainsOrStartsWith(filteredArgs[i])) { if (!filteredArgs[i].Contains("=") && i + 1 < filteredArgs.Length) { filteredArgs[i + 1] = null; } filteredArgs[i] = null; } } } OnExecute(filteredArgs.Where(s => !string.IsNullOrEmpty(s)).ToArray()); }