Saat membuat aplikasi konsol yang mengambil parameter, Anda dapat menggunakan argumen yang diteruskan ke Main(string[] args)
.
Di masa lalu saya hanya mengindeks / mengulang array itu dan melakukan beberapa ekspresi reguler untuk mengekstraksi nilai-nilai. Namun, ketika perintah menjadi lebih rumit, parsing bisa menjadi sangat jelek.
Jadi saya tertarik pada:
- Perpustakaan yang Anda gunakan
- Pola yang Anda gunakan
Asumsikan perintah selalu mematuhi standar umum seperti dijawab di sini .
c#
.net
command-line-arguments
Paul Stovell
sumber
sumber
Jawaban:
Saya akan sangat menyarankan menggunakan NDesk.Options ( Dokumentasi ) dan / atau Mono.Options (API yang sama, namespace yang berbeda). Sebuah contoh dari dokumentasi :
sumber
git checkout master
), atau argumen mereka tidak fleksibel (yaitu, tidak mendukung--foo 123
=--foo=123
=-f 123
=-f=123
dan juga-v -h
=-vh
).Saya sangat suka Perpustakaan Parser Command Line ( http://commandline.codeplex.com/ ). Ini memiliki cara yang sangat sederhana dan elegan untuk mengatur parameter melalui atribut:
sumber
--recursive
juga.The WPF TestApi perpustakaan dilengkapi dengan salah satu parser baris perintah paling baik untuk C # pembangunan. Saya sangat merekomendasikan untuk melihatnya, dari blog Ivo Manolov di API :
sumber
Lihatlah http://github.com/mono/mono/tree/master/mcs/class/Mono.Options/
sumber
Sepertinya semua orang memiliki parser baris perintah hewan peliharaan mereka sendiri, angka saya lebih baik menambahkan milik saya juga :).
http://bizark.codeplex.com/
Pustaka ini berisi parser baris perintah yang akan menginisialisasi kelas dengan nilai-nilai dari baris perintah. Ini memiliki banyak fitur (saya telah membangunnya selama bertahun-tahun).
Dari dokumentasi ...
Penguraian baris perintah dalam kerangka kerja BizArk memiliki fitur-fitur utama berikut:
sumber
Saya menulis argumen baris perintah C # parser beberapa waktu lalu. Ini di: http://www.codeplex.com/CommandLineArguments
sumber
CLAP (parser argumen baris perintah) memiliki API yang dapat digunakan dan didokumentasikan dengan sangat baik. Anda membuat metode, menjelaskan parameter. https://github.com/adrianaisemberg/CLAP
sumber
myapp myverb -argname argvalue
(harus dimiliki-argname
) ataumyapp -help
(biasanya--help
).Ada banyak solusi untuk masalah ini. Untuk kelengkapan dan untuk memberikan alternatif jika seseorang menginginkan saya menambahkan jawaban ini untuk dua kelas yang berguna di perpustakaan kode google saya .
Yang pertama adalah ArgumentList yang hanya bertanggung jawab untuk parsing parameter baris perintah. Ia mengumpulkan pasangan nama-nilai yang ditentukan oleh sakelar '/ x: y' atau '-x = y' dan juga mengumpulkan daftar entri 'tak bernama'. Penggunaan dasarnya dibahas di sini , lihat kelasnya di sini .
Bagian kedua dari ini adalah CommandInterpreter yang membuat aplikasi baris perintah yang berfungsi penuh dari kelas .Net Anda. Sebagai contoh:
Dengan kode contoh di atas Anda dapat menjalankan yang berikut:
-- atau --
Sesederhana itu atau serumit yang Anda inginkan. Anda dapat meninjau kode sumber , melihat bantuan , atau mengunduh biner .
sumber
Saya suka yang itu , karena Anda dapat "mendefinisikan aturan" untuk argumen, diperlukan atau tidak, ...
atau jika Anda seorang pria Unix, daripada Anda mungkin menyukai port .NET GNU Getopt .
sumber
Anda mungkin menyukai Rug saya
Pengurai argumen baris perintah yang mudah digunakan dan diperluas. Menangani: Bool, Plus / Minus, String, Daftar String, CSV, Enumeration.
Dibangun pada '/?' mode bantuan.
Dibangun pada '/ ??' dan mode generator dokumen '/? D'.
Sunting: Ini adalah proyek saya dan karenanya jawaban ini tidak boleh dilihat sebagai dukungan dari pihak ketiga. Yang mengatakan saya menggunakannya untuk setiap program berbasis baris perintah yang saya tulis, ini adalah open source dan itu adalah harapan saya bahwa orang lain dapat memperoleh manfaat dari itu.
sumber
Ada parser argumen baris perintah di http://www.codeplex.com/commonlibrarynet
Ini dapat mengurai argumen menggunakan
1. atribut
2. panggilan eksplisit
3. baris tunggal beberapa argumen ATAU array string
Ini dapat menangani hal-hal seperti berikut:
- config : Qa - startdate : $ { hari ini } - wilayah : 'New York' Settings01
Ini sangat mudah digunakan.
sumber
Ini adalah seorang pawang yang saya tulis berdasarkan
Options
kelas Novell .Yang ini ditujukan untuk aplikasi konsol yang menjalankan
while (input !="exit")
loop gaya, konsol interaktif seperti konsol FTP misalnya.Contoh penggunaan:
Dan sumbernya:
sumber
Favorit pribadi saya adalah http://www.codeproject.com/KB/recipes/plossum_commandline.aspx oleh Peter Palotas:
sumber
Saya baru-baru ini menemukan implementasi parsing baris perintah FubuCore saya sangat menyukainya, alasannya adalah:
Di bawah ini adalah contoh sederhana tentang cara menggunakan ini. Untuk menggambarkan penggunaannya, saya telah menulis sebuah utilitas sederhana yang memiliki dua perintah: - tambah (tambahkan objek ke daftar - objek terdiri dari nama (string), nilai (int) dan bendera boolean) - daftar (daftar semua objek yang saat ini ditambahkan)
Pertama-tama, saya menulis kelas Command untuk perintah 'add':
Perintah ini menggunakan instance CommandInput sebagai parameter, jadi saya mendefinisikannya selanjutnya:
Perintah selanjutnya adalah 'daftar', yang diimplementasikan sebagai berikut:
Perintah 'list' tidak mengambil parameter, jadi saya mendefinisikan kelas NullInput untuk ini:
Yang tersisa sekarang adalah memasang ini di metode Main (), seperti ini:
Program ini berfungsi seperti yang diharapkan, petunjuk pencetakan tentang penggunaan yang benar jika ada perintah yang tidak valid:
Dan contoh penggunaan untuk perintah 'add':
sumber
Commandlets Powershell.
Parsing dilakukan oleh PowerShell berdasarkan atribut yang ditentukan pada commandlets, dukungan untuk validasi, set parameter, pipelining, pelaporan kesalahan, bantuan, dan yang terbaik dari semua mengembalikan .NET objek untuk digunakan dalam commandlets lain.
Beberapa tautan yang saya temukan membantu memulai:
sumber
C # CLI adalah parsing library argumen baris perintah yang sangat sederhana yang saya tulis. Ini didokumentasikan dengan baik dan open source.
sumber
Readme.mkd
file diDocumentation
folder).Parser Command Line Jenghis mungkin sedikit ketinggalan zaman, tetapi fitur ini sangat lengkap dan berfungsi dengan baik bagi saya.
sumber
Saya akan menyarankan perpustakaan open-source CSharpOptParse . Ini mem-parsing baris perintah dan menghidrasi objek .NET yang ditentukan pengguna dengan input baris perintah. Saya selalu beralih ke perpustakaan ini ketika menulis aplikasi konsol C #.
sumber
Silakan gunakan .net port API apache commons cli. Ini sangat bagus.
http://sourceforge.net/projects/dotnetcli/
dan API asli untuk konsep dan pengantar
http://commons.apache.org/cli/
sumber
Kelas ad hoc yang sangat sederhana dan mudah digunakan untuk penguraian baris perintah, yang mendukung argumen default.
sumber