سؤال

وأنا أبحث عن مكتبة getopt لج #. وحتى الآن لم أجد سوى القليل ( phpguru و <لأ href = "HTTP: //69.10 .233.10 / KB / CS / XGetoptCS.aspx "يختلط =" noreferrer "> XGetOptCS ، <وأ href =" http://www.codeproject.com/KB/cs/geoptfordotnet.aspx "يختلط =" noreferrer "> getoptfordotnet ) ولكن هذه تبدو أكثر مثل محاولات لم تكتمل التي تدعم سوى جزء من getopt C ل. هناك getopt ج # التنفيذ الكامل؟

هل كانت مفيدة؟

المحلول

وهنا هو التنفيذ. NET من getopt: http://www.codeplex.com/getopt

نصائح أخرى

وميغيل دي إيكازا يهتاج حول Mono.Options . يمكنك استخدام nuget حزمة أو مجرد نسخ في واحد C # مصدر ملف في المشروع.

لأجيال:

CommandParser هي واحدة آخر مع رخصة BSD

هنا شيء كتبته ، وأنها تعمل لطيفة إلى حد ما، ولديه الكثير من الميزات لكمية صغيرة من التعليمات البرمجية. انها ليست getopts ومع ذلك، لكنها قد تناسب احتياجاتك.

لا تتردد في طرح بعض الأسئلة.

وانها ليست getopt، ولكنك قد تحاول NConsoler . ويستخدم لتحديد سمات الحجج والإجراءات.

ومشروع مونو ديه (أو بالأحرى كان) واحدة على أساس الصفات، ولكن الأخير راجعت تم وضع علامة عفا عليها الزمن كما. ولكن منذ انها مفتوحة المصدر، قد تكون قادرة على سحب رمز الخروج واستخدام ذلك بنفسك.

لسجل، يتضمن NUnit في ملف واحد بسيط محلل سطر الأوامر في src\ClientUtilities\util\CommandLineOptions.cs (انظر استخدام المثال في ConsoleRunner.cs و Runner.cs تقع تحت src\ConsoleRunner\nunit-console). الملف نفسه لا يتضمن أي معلومات الترخيص، و لفي "المنبع" ويبدو أن القتلى، لذلك وضعها القانوني غير مؤكد.

ومحلل يدعم المعلمات المسماة العلم (مثل /verbose)، المعلمات اسمه مع القيم (مثل /filename:bar.txt) والمعلمات لم يكشف عن اسمه، وهذا هو، من ذلك بكثير في نمط كيف <لأ href = "http://msdn.microsoft.com/en -US / مكتبة / أي / ss1ysb2a.aspx "يختلط =" نوفولو "> برمجة ويندوز المضيف يفسر لهم . قد تكون مسبوقة الخيارات مع /، - و--.

وهناك صديق لي اقترح docopt.net ، مكتبة حجة تحليل سطر الأوامر على أساس docopt مكتبة للNode.JS. وهو بسيط جدا للاستخدام، ولكن متقدمة ويوزع الحجج القائمة على سلسلة تساعدك على الكتابة.

إليك بعض التعليمات البرمجية:

using System;
using DocoptNet;

namespace MyProgram
{
    static class Program
    {
        static void Main(string[] args)
        {
            // Usage string
            string usage = @"This program does this thing.

Usage:
  program set <something>
  program do <something> [-o <optionalthing>]
  program do <something> [somethingelse]";

            try
            {
                var arguments = new Docopt().Apply(usage, args, version: "My program v0.1.0", exit: false);
                foreach(var argument in arguments)
                    Console.WriteLine("{0} = {1}", argument.Key, argument.Value);
            }
            catch(Exception ex)
            {
                //Parser errors are thrown as exceptions.
                Console.WriteLine(ex.Message);
            }
        }
    }
}

ويمكنك العثور على وثائق لذلك (بما في ذلك شكله رسالة مساعدة) في كل من الحلقة الأولى و هنا .

ونأمل أن يساعد شخص ما!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top