{"record":{"id":"512a6c75f23b8683","repo":"chocolatey/choco","slug":"error-found-0-option-values-when-expecting-1","errorCode":null,"errorMessage":"Error: Found {0} option values when expecting {1}.","messagePattern":"Error: Found (.+?) option values when expecting (.+?)\\.","errorType":"validation","errorClass":"OptionException","httpStatus":null,"severity":"error","filePath":"src/chocolatey/infrastructure/commandline/Options.cs","lineNumber":858,"sourceCode":"\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n        private void ParseValue(string option, OptionContext c)\r\n        {\r\n            if (option != null)\r\n                foreach (string o in c.Option.ValueSeparators != null\r\n                        ? option.Split(c.Option.ValueSeparators, StringSplitOptions.None)\r\n                        : new string[] { option })\r\n                {\r\n                    c.OptionValues.Add(o);\r\n                }\r\n            if (c.OptionValues.Count == c.Option.MaxValueCount ||\r\n                    c.Option.OptionValueType == OptionValueType.Optional)\r\n                c.Option.Invoke(c);\r\n            else if (c.OptionValues.Count > c.Option.MaxValueCount)\r\n            {\r\n                throw new OptionException(_localizer(string.Format(\r\n                                \"Error: Found {0} option values when expecting {1}.\",\r\n                                c.OptionValues.Count, c.Option.MaxValueCount)),\r\n                        c.OptionName);\r\n            }\r\n        }\r\n\r\n\t\tprivate bool ParseBool (string option, string n, OptionContext c)\r\n\t\t{\r\n\t\t\tOption p;\r\n\t\t\tstring rn;\r\n\t\t\tif (n.Length >= 1 && (n [n.Length-1] == '+' || n [n.Length-1] == '-') &&\r\n\t\t\t\t\tContains ((rn = n.Substring (0, n.Length-1)))) {\r\n\t\t\t\tp = this [rn];\r\n\t\t\t\tstring v = n [n.Length-1] == '+' ? option : null;\r\n\t\t\t\tc.OptionName  = option;\r\n\t\t\t\tc.Option      = p;\r\n\t\t\t\tc.OptionValues.Add (v);\r\n\t\t\t\tp.Invoke (c);\r","sourceCodeStart":840,"sourceCodeEnd":876,"githubUrl":"https://github.com/chocolatey/choco/blob/0d5abdd10cc177a141e69547cad6935b419b6c17/src/chocolatey/infrastructure/commandline/Options.cs#L840-L876","documentation":"Thrown by Mono.Options during value splitting when more option values are collected than the option's MaxValueCount allows. After splitting on ValueSeparators, if c.OptionValues.Count exceeds MaxValueCount (and the option is not Optional), the parser rejects the surplus as malformed input.","triggerScenarios":"An option that expects a fixed count of values receives extra separators, e.g. an option with MaxValueCount=1 given --flag=a,b where a comma is a value separator, producing two values for a single-value option. Also triggered by repeating a value after = repeatedly.","commonSituations":"Defining an option with a separator list and then passing more separated tokens than expected, or a Chocolatey flag whose arity changed between versions now rejecting formerly-accepted multi-value input.","solutions":["Pass only as many values as the option accepts; check the option's MaxValueCount/separator definition in Chocolatey docs.","Remove extra separators or wrap multi-token values so they are a single argument (quote them, or remove the separator character).","If you need multiple values, use the option the framework intends (e.g. repeat the flag) rather than comma-packing."],"exampleFix":"// before (option expects single value, comma is a separator)\nchoco install pkg --some-opt=a,b\n\n// after\nchoco install pkg --some-opt=a","handlingStrategy":"try-catch","validationCode":"// If an option has MaxValueCount N, ensure you pass at most N separated values.\nint max = option.MaxValueCount;\nint provided = value.Split(option.ValueSeparators ?? Array.Empty<string>(), StringSplitOptions.None).Length;\nif (provided > max)\n    throw new ArgumentException(\"Option expects at most \" + max + \" values, got \" + provided + \".\");","typeGuard":null,"tryCatchPattern":"try\n{\n    optionSet.Parse(args);\n}\ncatch (OptionException ex) when (ex.Message.Contains(\"option values when expecting\"))\n{\n    Console.Error.WriteLine(ex.Message);\n    Console.Error.WriteLine(\"Reduce the number of values/separator-packed tokens for that option.\");\n    Environment.Exit(1);\n}","preventionTips":["Confirm an option's MaxValueCount and separator list before packing multiple values into one argument.","Prefer repeating a flag over comma-packing when multiple values are needed."],"tags":["commandline","mono-options","argument-parsing","value-count"],"backgroundTag":null,"analyzedSha":"0d5abdd10cc177a141e69547cad6935b419b6c17","analyzedAt":"2026-08-13T18:33:03.301Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}