¡Mi aplicación System.CommandLine no se compila! No puede encontrar un CommandHandler. ¿Necesito escribirlo?
Estoy utilizando VS 2022, .Net 6.0, y tratando de construir mi primera aplicación usando System.CommandLine
.
Problema: cuando lo construyo, obtengo un error
El nombre ‘CommandHandler’ no existe en el contexto actual
El código que estoy tratando de construir es la aplicación de ejemplo del sitio GitHub: https://github.com/dotnet/command-line-api/blob/main/docs/Your-first-app-with-System-CommandLine.md , sin alteraciones (creo).
Se ve así:
using System;
using System.CommandLine;
using System.IO;
static int Main(string[] args)
{
// Crear un comando raíz con algunas opciones
var rootCommand = new RootCommand
{
new Option<int>(
"--int-option",
getDefaultValue: () => 42,
description: "Una opción cuyo argumento se analiza como un int"),
new Option<bool>(
"--bool-option",
"Una opción cuyo argumento se analiza como un bool"),
new Option<fileinfo>(
"--file-option",
"Una opción cuyo argumento se analiza como un FileInfo")
};
rootCommand.Description = "Mi aplicación de ejemplo";
// Tenga en cuenta que los parámetros del método de controlador se combinan según los nombres de las opciones
rootCommand.Handler = CommandHandler.Create<int, bool,="" fileinfo="">((intOption, boolOption, fileOption) =>
{
Console.WriteLine($"El valor de --int-option es: {intOption}");
Console.WriteLine($"El valor de --bool-option es: {boolOption}");
Console.WriteLine($"El valor de --file-option es: {fileOption?.FullName ?? "nulo"}");
});
// Analizar los argumentos entrantes e invocar el controlador
return rootCommand.InvokeAsync(args).Result;
}
He instalado la última versión de System.Commandline
: 2.0.0-beta2.21617.1
SEGURAMENTE solo estoy siendo un gran tonto en algún aspecto. Pero no lo veo.
Cualquier idea sería bienvenida.</int,>
davy.ai
Parece que el problema está en el espacio de nombres. Como la clase
CommandHandler
está definida en el espacio de nombresSystem.CommandLine.Invocation
, necesitas agregarlo como una directiva de uso en tu código.Agrega lo siguiente al inicio de tu archivo:
Esto debería resolver el error que estás viendo.