重要
System.CommandLine 目前为预览版。 本文档适用于版本 2.0 beta 7。
某些信息与预发布产品有关,该产品可能在发布前进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。
分析和调用是两个单独的步骤,因此每个步骤都有自己的配置:
-
ParserConfiguration 是一个类,提供用于配置分析的属性。 它是每个
Parse方法的可选参数,例如 Command.Parse 和 CommandLineParser.Parse。 - InvocationConfiguration 是一个类,提供用于配置调用的属性。 它是和ParseResult.Invoke方法的ParseResult.InvokeAsync可选参数。
它们由 ParseResult.Configuration 属性公开 ParseResult.InvocationConfiguration 。 如果未提供这些配置,将使用默认配置。
ParserConfiguration
EnablePosixBundling
默认情况下单字符选项的捆绑是启用的,但可以通过将ParserConfiguration.EnablePosixBundling属性设置为false来禁用它。
ResponseFileTokenReplacer
默认情况下启用响应文件 ,但可以通过将 ResponseFileTokenReplacer 属性设置为 来 null禁用它们。 还可以提供自定义实现来定制响应文件的处理方式。
响应文件可以包含其他响应文件名,因此分析可能包括打开其他文件。 该库要求所有响应文件都由可信代理生成和存储。
InvocationConfiguration
标准输出和错误
InvocationConfiguration 使测试以及许多扩展性方案比使用 System.Console更容易。 它公开两个 TextWriter 属性: Output 和 Error。 可以将这些属性设置为任何 TextWriter 实例,例如 StringWriter可用于捕获用于测试的输出。
定义写入标准输出的简单命令:
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.InvocationConfiguration.Output.WriteLine(
$"File option value: {fileOptionValue?.FullName}"
);
});
现在,使用InvocationConfiguration来捕获输出。
StringWriter output = new();
rootCommand.Parse("-h").Invoke(new() { Output = output });
Debug.Assert(output.ToString().Contains("Configuration sample"));
ProcessTerminationTimeout
可以通过属性配置ProcessTerminationTimeout。 默认值为 2 秒。
启用默认异常处理程序
默认情况下,在调用命令期间引发的所有未经处理的异常都会被捕获并报告给用户。 可以通过将 EnableDefaultExceptionHandler 属性设置为 false. 来禁用此行为。 如果要以自定义方式处理异常,例如记录异常或提供不同的用户体验,这非常有用。
派生类
InvocationConfiguration 未密封,因此可以派生自它以添加自定义属性或方法。 如果要提供特定于应用程序的其他配置选项,这非常有用。