Aracılığıyla paylaş


Nasıl ayrıştırıcıyı System.CommandLine içinde yapılandırabilirsiniz

Ayrıştırma ve çağırma iki ayrı adımdır, bu nedenle her birinin kendi yapılandırması vardır:

ve özellikleri tarafından ParseResult.ConfigurationParseResult.InvocationConfiguration kullanıma sunulur. Bunlar sağlanmamışsa, varsayılan yapılandırmalar kullanılır.

ParserConfiguration

EnablePosixBundling

Tek karakterli seçeneklerin paketlemesi varsayılan olarak etkindir, ancak özelliğini ParserConfiguration.EnablePosixBundlingolarak ayarlayarak false devre dışı bırakabilirsiniz.

ResponseFileTokenReplacer

Yanıt dosyaları varsayılan olarak etkindir, ancak özelliğini ResponseFileTokenReplacerolarak ayarlayarak null bunları devre dışı bırakabilirsiniz. Yanıt dosyalarının nasıl işlendiğini özelleştirmek için özel bir uygulama da sağlayabilirsiniz.

Yanıt dosyası başka yanıt dosyası adları içerebilir, bu nedenle ayrıştırma diğer dosyaları açmayı içerebilir. Kitaplık, tüm yanıt dosyalarının güvenilir aracılar tarafından oluşturulmasını ve depolanmasını bekler.

InvocationConfiguration

Standart çıkış ve hata

InvocationConfiguration, test yapmayı ve birçok genişletilebilirlik senaryolarının kullanımını, System.Console kullanmaktan daha kolay hale getirir. İki TextWriter özelliği kullanıma sunar: Output ve Error. Bu özellikleri, test için çıktı yakalamak amacıyla kullanabileceğiniz TextWriter gibi herhangi bir StringWriter örneğe ayarlayabilirsiniz.

Standart çıkışa yazan basit bir komut tanımlayın:

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}"
        );
});

Şimdi çıkışı yakalamak için kullanın InvocationConfiguration :

StringWriter output = new();
rootCommand.Parse("-h").Invoke(new() { Output = output });
Debug.Assert(output.ToString().Contains("Configuration sample"));

İşlem Sonlandırma Zaman Aşımı

İşlem sonlandırma zaman aşımı, ProcessTerminationTimeout özelliği ile yapılandırılabilir. Varsayılan değer 2 saniyedir.

Varsayılan Hata Ayıklayıcıyı Etkinleştir

Varsayılan olarak, bir komutun çağrılması sırasında oluşturulan tüm işlenmeyen özel durumlar yakalanıp kullanıcıya bildirilir. özelliğini EnableDefaultExceptionHandlerolarak ayarlayarak false bu davranışı devre dışı bırakabilirsiniz. Bu, özel durumları günlüğe kaydetme veya farklı bir kullanıcı deneyimi sağlama gibi özel bir şekilde işlemek istediğinizde kullanışlıdır.

Türetilmiş sınıflar

InvocationConfiguration korumalı olmadığından, özel özellikler veya yöntemler eklemek için ondan türetebilirsiniz. Bu, uygulamanıza özgü ek yapılandırma seçenekleri sağlamak istediğinizde kullanışlıdır.

Ayrıca bakınız