dotnet / dotnet/command-line-api
Usage section shows Argument.Name rather than Argument.HelpName
- Vorherrschende Sprache
- C#
- Sterne
- 3.7k
- Forks
- 428
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
In the help output, the Usage section shows Argument.Name, but the Arguments section shows Argument.HelpName. I think this is inconsistent and they should both use Argument.HelpName if set, so that Argument.Name would be culture-invariant and usable for System.CommandLine.NamingConventionBinder.
## Demo
```XML
Exe
net7.0
enable
enable
```
```
using System.CommandLine;
using System.IO;
var command = new RootCommand()
{
new Argument(name: "inputfile")
{
HelpName = "inputfile.log",
},
};
return await command.InvokeAsync(args);
```
```
$ dotnet run
Required argument missing for command: 'ArgumentHelpDemo'.
Description:
Usage:
ArgumentHelpDemo [options]
Arguments:
Options:
--version Show version information
-?, -h, --help Show help and usage information
```
## Current implementation
Usage section:
Arguments section:
Beitragsleitfaden
Rechercherichtung
Beginnen Sie in src/System.CommandLine/Help/HelpBuilder.cs bei den Zeilen 296-304 und vergleichen Sie die Usage-Implementierung mit src/System.CommandLine/Help/HelpBuilder.Default.cs bei den Zeilen 73-87, wo der Abschnitt Arguments gerendert wird. Verwenden Sie die bereitgestellte Demo, um die inkonsistente Hilfeausgabe zu reproduzieren. Als erledigt gilt die Aufgabe, wenn der Abschnitt Usage Argument.HelpName anzeigt, sofern es gesetzt ist, und damit dem Abschnitt Arguments entspricht, während Argument.Name für das Binding beibehalten wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- csharp
- Bereich
- cli
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 45/100