commandlineparser / commandlineparser/commandline
ParseArguments<T> with only a single TOptions doesnt respect Verb attribute
- Langage dominant
- C#
- Étoiles
- 4.8k
- Forks
- 478
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
When MapResults is presented with only a single Verb-style Options class, the verb is not properly popped off the args stack.
Following code doesnt parse commandline `"myprogram pack MyProjectfile.csproj"`. You end up with `PackOptions.ProjectFile == "pack"` Works fine if additional Options classes with `VerbAttribute` specified.
```c#
public static class Program
{
public static void Main(string[] args)
{
int exitcode = CommandLine.Parser.Default
.ParseArguments(args)
.MapResult(
(PackOptions opts) => 0, //basically do nothing for sample
(parserErrors) => 1
);
}
}
[Verb("pack")]
public class PackOptions
{
[Value(0)]
public string ProjectFile { get; set; }
[Option("outputPath")]
public string OutputPath { get; set; }
}
```
created a dotnetfiddle: https://dotnetfiddle.net/IbwLbX
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Start at Parser.ParseArguments(args) and its MapResult overload, then trace VerbAttribute handling for the single-options case. Reproduce the command from the issue or the linked .NET Fiddle; done means "pack" is consumed as the verb and ProjectFile receives "MyProjectfile.csproj", with existing multi-verb behavior preserved.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- csharp
- Domaine
- cli
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100