Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
kullanan System.CommandLine uygulamalar, belirli kabuklarda sekme tamamlama için yerleşik desteğe sahiptir. Bunu etkinleştirmek için son kullanıcının her kabuk için birkaç adım atması gerekir. Bu işlem tamamlandıktan sonra, uygulamanızdaki sabit listesi değerleri veya AcceptOnlyFromAmong(String[]) çağrılarak tanımlanan değerler gibi statik değerler için sekme tamamlama otomatik olarak gerçekleştirilir. Çalışma zamanında dinamik olarak değerler sağlayarak sekme tamamlamayı da özelleştirebilirsiniz.
Sekme tamamlamayı etkinleştir
Sekme tamamlama özelliğini etkinleştirmek istediğiniz makinede şu adımları izleyin.
.NET CLI için:
üzerinde System.CommandLineoluşturulan diğer komut satırı uygulamaları için:
dotnet-suggestGenel aracı yükleyin:dotnet tool install -g dotnet-suggestKabuk profilinize uygun dolgu betiğini ekleyin. Bir kabuk profili dosyası oluşturmanız gerekebilir. Köprü betiği, kabuğunuzdan tamamlama isteklerini
dotnet-suggestaracına iletir ve bunları uygunSystem.CommandLinetabanlı uygulamaya devreder.bashiçin dotnet-suggest-shim.bash dosyasının içeriğini ~/.bash_profile öğesine ekleyin.zshiçin dotnet-suggest-shim.zsh içeriğini ~/.zshrc'ye ekleyin.PowerShell için ,dotnet-suggest-shim.ps1 içeriğini PowerShell profilinize ekleyin ve PowerShell'i yeniden başlatın. Aşağıdaki komutla PowerShell profilinizin beklenen yolunu bulabilirsiniz:
echo $profile
çağırarak
dotnet-suggest register --command-path $executableFilePathuygulamayı kaydedin; burada$executableFilePathuygulamanın yürütülebilir dosyasının yoludur.
Kullanıcının kabuğu ayarlandıktan ve yürütülebilir dosya kaydettikten sonra, kullanılarak System.CommandLine oluşturulan tüm uygulamalar için tamamlamalar çalışır.
Windows'da (Windows Komut İstemi) cmd.exe için takılabilir sekme tamamlama mekanizması yoktur, bu nedenle ara betik kullanılamaz. Diğer kabuklar için, etiketli bir GitHub sorununu arayınArea-Completions. Bir sorun bulamazsanız yeni bir sorun açabilirsiniz.
Çalışma zamanında sekme tamamlama değerlerini alma
Aşağıdaki kod, çalışma zamanında sekme tamamlama değerlerini dinamik olarak alan bir uygulamayı gösterir. Kod, bugünkü tarihten sonra gelen bir haftalık tarih listesini alır. Liste, --date çağrısı yapılarak CompletionSources.Add seçeneğine sağlanır.
using System.CommandLine;
using System.CommandLine.Completions;
using System.CommandLine.Parsing;
new DateCommand().Parse(args).Invoke();
class DateCommand : Command
{
private Argument<string> subjectArgument = new("subject")
{
Description = "The subject of the appointment."
};
private Option<DateTime> dateOption = new("--date")
{
Description = "The day of week to schedule. Should be within one week."
};
public DateCommand() : base("schedule", "Makes an appointment for sometime in the next week.")
{
this.Arguments.Add(subjectArgument);
this.Options.Add(dateOption);
dateOption.CompletionSources.Add(ctx => {
var today = System.DateTime.Today;
List<CompletionItem> dates = new();
foreach (var i in Enumerable.Range(1, 7))
{
var date = today.AddDays(i);
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
}
return dates;
});
this.SetAction(parseResult =>
{
Console.WriteLine($"Scheduled \"{parseResult.GetValue(subjectArgument)}\" for {parseResult.GetValue(dateOption)}");
});
}
}
Sekme tuşuna basıldığında gösterilen değerler CompletionItem örnekler olarak sağlanır:
dates.Add(new CompletionItem(
label: date.ToShortDateString(),
sortText: $"{i:2}"));
Aşağıdaki CompletionItem özellikler ayarlanır:
- Label gösterilecek tamamlanma değeridir.
-
SortText listedeki değerlerin doğru sırada sunulmasını sağlar. İki basamaklı bir dizeye dönüştürülerek
iayarlanır, böylece sıralama 01, 02, 03 vb. ile 14 arasında olur. Bu parametreyi ayarlamazsanız, sıralama, bu örnekte kısa tarih biçiminde olanLabelöğesine göre yapılır ve bu da doğru sıralanmaz.
Başka CompletionItem, Documentation, ve Detail gibi özellikler de vardır, ancak henüz System.CommandLine içinde kullanılmazlar.
Bu kod tarafından oluşturulan dinamik sekme tamamlama listesi, yardım çıkışında da görünür:
Description:
Makes an appointment for sometime in the next week.
Usage:
schedule <subject> [options]
Arguments:
<subject> The subject of the appointment.
Options:
--date The day of week to schedule. Should be within one week.
<12/4/2025|12/5/2025|12/6/2025|12/7/2025|12/8/2025|12/9/2025|12/10/2025>
--version Show version information
-?, -h, --help