Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Синтаксический анализ и вызов являются двумя отдельными шагами, поэтому каждая из них имеет собственную конфигурацию:
-
ParserConfiguration — это класс, предоставляющий свойства для настройки синтаксического анализа. Это необязательный аргумент для каждого
Parseметода, например Command.Parse и CommandLineParser.Parse. - InvocationConfiguration — это класс, предоставляющий свойства для настройки вызова. Это необязательный аргумент ParseResult.Invoke методов и ParseResult.InvokeAsync методов.
Они предоставляются свойствами и ParseResult.Configuration свойствамиParseResult.InvocationConfiguration. Если они не указаны, используются конфигурации по умолчанию.
ParserConfiguration
Включить POSIX-пакетирование
Объединение односимвольных параметров включено по умолчанию, но его можно отключить, установив для свойства ParserConfiguration.EnablePosixBundling значение false.
Заменитель токенов в файле ответа
Файлы ответа включены по умолчанию, но их можно отключить, изменив значение свойства на ResponseFileTokenReplacernull. Вы также можете предоставить пользовательскую реализацию для настройки обработки файлов ответов.
Файл ответа может содержать другие имена файлов ответа, поэтому синтаксический анализ может включать открытие других файлов. Библиотека ожидает, что все файлы ответов были созданы и сохранены надежными агентами.
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 свойства. Значение по умолчанию — 2 секунды.
ВключитьОбработчикИсключенийПоУмолчанию
По умолчанию все необработанные исключения, создаваемые во время вызова команды, перехватываются и передаются пользователю. Можно отключить это поведение, установив свойство EnableDefaultExceptionHandler как false. Это полезно, если требуется обрабатывать исключения пользовательским способом, например ведение журнала или предоставление другого взаимодействия с пользователем.
Производные классы
InvocationConfiguration не запечатан, поэтому его можно наследовать, чтобы добавить пользовательские свойства или методы. Это полезно, если требуется предоставить дополнительные параметры конфигурации, относящиеся к приложению.