Compartir a través de


Cómo configurar el analizador en System.CommandLine

Importante

System.CommandLine actualmente está en versión preliminar y esta documentación es para la versión 2.0 beta 5. Cierta información se relaciona con el producto de versión preliminar que puede modificarse sustancialmente antes de su lanzamiento. Microsoft no ofrece ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.

System.CommandLine.CommandLineConfiguration es una clase que proporciona propiedades para configurar el analizador. Es un argumento opcional para cada Parse método, como System.CommandLine.Command.Parse o System.CommandLine.Parsing.CommandLineParser.Parse. Cuando no se proporciona, se usa la configuración predeterminada.

Cada System.CommandLine.ParseResult instancia tiene una System.CommandLine.ParseResult.Configuration propiedad que devuelve la configuración utilizada para el análisis.

Salida y error estándar

System.CommandLine.CommandLineConfiguration hace que las pruebas, así como muchos escenarios de extensibilidad, sean más fáciles de usar System.Console. Expone dos TextWriter propiedades: Output y Error. Se pueden establecer en cualquier TextWriter instancia, como , StringWriterque se puede usar para capturar la salida de las pruebas.

Vamos a definir un comando sencillo que escribe en la salida estándar:

Option<FileInfo?> fileOption = new("--file")
{
    Description = "An option whose argument is parsed as a FileInfo"
};

RootCommand rootCommand = new("Configuration sample")
{
    fileOption
};

rootCommand.SetAction((parseResult) =>
{
    FileInfo? fileOptionValue = parseResult.GetValue(fileOption);
    parseResult.Configuration.Output.WriteLine($"File option value: {fileOptionValue?.FullName}");
});

Ahora, vamos a usar CommandLineConfiguration para capturar la salida:

StringWriter output = new();
CommandLineConfiguration configuration = new(rootCommand)
{
    Output = output,
    Error = TextWriter.Null
};

configuration.Parse("-h").Invoke();
Debug.Assert(output.ToString().Contains("Configuration sample"));

EnablePosixBundling

La agrupación de opciones de un solo carácter está habilitada de forma predeterminada, pero puede deshabilitarla estableciendo la System.CommandLine.CommandLineConfiguration.EnablePosixBundling propiedad falseen .

ProcessTerminationTimeout

El tiempo de espera de finalización del proceso se puede configurar a través de la System.CommandLine.CommandLineConfiguration.ProcessTerminationTimeout propiedad . El valor predeterminado es de 2 segundos.

ResponseFileTokenReplacer

Los archivos de respuesta están habilitados de forma predeterminada, pero puede deshabilitarlos estableciendo la System.CommandLine.CommandLineConfiguration.ResponseFileTokenReplacer propiedad nullen . También puede proporcionar una implementación personalizada para personalizar cómo se procesan los archivos de respuesta.

EnableDefaultExceptionHandler

De forma predeterminada, se detectan y notifican al usuario todas las excepciones no controladas durante la invocación de un comando. Este comportamiento se puede deshabilitar estableciendo la System.CommandLine.CommandLineConfiguration.EnableDefaultExceptionHandler propiedad falseen . Esto resulta útil cuando desea controlar excepciones de forma personalizada, como registrarlas o proporcionar una experiencia de usuario diferente.

Clases derivadas

System.CommandLine.CommandLineConfiguration no está sellado, por lo que puede derivar de él para agregar propiedades o métodos personalizados. Esto resulta útil cuando desea proporcionar opciones de configuración adicionales específicas de la aplicación.

Consulte también