كيف يمكنني تحديد رمز الخروج لتطبيق وحدة التحكم في .NET؟

StackOverflow https://stackoverflow.com/questions/155610

  •  03-07-2019
  •  | 
  •  

سؤال

لدي تطبيق وحدة تحكم تافه في .NET.إنه مجرد جزء اختباري من تطبيق أكبر.أرغب في تحديد "رمز الخروج" لتطبيق وحدة التحكم الخاصة بي.كيف أقوم بهذا العمل؟

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

المحلول

3 خيارات:

  • يمكنك إعادته من Main إذا أعلنت الخاص بك Main طريقة العودة int.
  • تستطيع الاتصال Environment.Exit(code).
  • يمكنك ضبط رمز الخروج باستخدام الخصائص: Environment.ExitCode = -1;.سيتم استخدام هذا إذا لم يتم تعيين رمز الإرجاع أو استخدام أحد الخيارات الأخرى أعلاه).

اعتمادًا على التطبيق الخاص بك (وحدة التحكم، الخدمة، تطبيق الويب، إلخ) يمكن استخدام طرق مختلفة.

نصائح أخرى

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

enum ExitCode : int {
  Success = 0,
  InvalidLogin = 1,
  InvalidFilename = 2,
  UnknownError = 10
}

int Main(string[] args) {
   return (int)ExitCode.Success;
}

هناك ثلاث طرق يمكنك استخدامها لإرجاع رمز الخروج من تطبيق وحدة التحكم.

  1. تعديل Main الطريقة في تطبيقك بحيث تقوم بإرجاع ملف int بدلاً من void (دالة تقوم بإرجاع Integer بدلاً من Sub في VB.Net) ثم قم بإرجاع رمز الخروج من تلك الطريقة.
  2. تعيين بيئة. رمز الخروج الخاصية إلى رمز الخروج.لاحظ أن الطريقة 1.الأسبقية - إذا كان Main الطريقة ترجع أي شيء آخر غير void (هو Sub في VB.Net) فسيتم تجاهل قيمة هذه الخاصية.
  3. قم بتمرير رمز الخروج إلى بيئة.خروج طريقة.سيؤدي هذا إلى إنهاء العملية على الفور مقارنةً بالطريقتين الأخريين.

المعيار المهم الذي ينبغي مراعاته هو ذلك 0 يمثل "النجاح".

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

تأكد أيضًا من تجميع التطبيق الخاص بك باعتباره "تطبيق وحدة التحكم".

إذا كنت تسير على استخدام الأسلوب الذي اقترحه ديفيد، يجب عليك أيضا أن تأخذ نظرة على [أعلام] السمة.

وهذا يسمح لك أن تفعل عمليات الحكيمة قليلا على تتضمن التعدادات.

[Flags]
enum ExitCodes : int
{
  Success = 0,
  SignToolNotInPath = 1,
  AssemblyDirectoryBad = 2,
  PFXFilePathBad = 4,
  PasswordMissing = 8,
  SignFailed = 16,
  UnknownError = 32
}

ثم

(ExitCodes.SignFailed | ExitCodes.UnknownError)

وسيكون 16 + 32.:)

int code = 2;
Environment.Exit( code );

ومجرد إعادة الرمز المناسب من الرئيسي.

int main(string[] args)
{
      return 0; //or exit code of your choice
}

استخدم ExitCode إذا كان لديك الرئيسي لديه توقيع الفراغ عودة، وإلا فإنك بحاجة إلى "مجموعة" من قبل قيمة عودتك.

Environment.ExitCode الملكية

<اقتباس فقرة>   

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

كتحديث لسكوت مونرو إجابة:

  • في C# 6.0 وVB.NET 14.0 (VS 2015)، أيضًا بيئة. رمز الخروج أو البيئة. الخروج (رمز الخروج) مطلوب لإرجاع رمز غير صفري من تطبيق وحدة التحكم.تغيير نوع الإرجاع Main ليس له أي تأثير.
  • في F# 4.0 (VS 2015)، القيمة المرجعة لـ main يتم احترام نقطة الدخول.

والخيار تعداد ممتاز ولكن يمكن تحسينها عن طريق ضرب الأرقام كما في:

enum ExitCodes : int
{
  Success = 0,
  SignToolNotInPath = 1,
  AssemblyDirectoryBad = 2,
  PFXFilePathBad = 4,
  PasswordMissing = 8,
  SignFailed = 16,
  UnknownError = 32
}

في حالة أخطاء متعددة، مضيفا أرقام الخطأ المحددة معا أعطيك رقم فريد من شأنها أن تمثل مجموعة من الأخطاء التي تم اكتشافها.

وعلى سبيل المثال، ERRORLEVEL من 6 يمكن أن تتكون إلا من الأخطاء 4 و 2 و 12 يمكن أن تتكون إلا من الأخطاء 4 و 8 و 14 يمكن أن تتكون فقط من 2 و 4 و 8 الخ.

وبلدي 2 سنت:

ويمكنك العثور على رموز خطأ في النظام هنا: https://msdn.microsoft. كوم / EN-US / مكتبة / ويندوز / المكتبي / ms681382 (ت = vs.85) .aspx اتصال

وستجد رموز نموذجية مثل 2 ل "الملف غير موجود" أو 5 ل"تم رفض الوصول".

وعندما تتعثر على رمز غير معروف، يمكنك استخدام هذا الأمر لمعرفة ما يعنيه:

net helpmsg decimal_code

ومنها مثلا.

<اقتباس فقرة>   

وشبكة HELPMSG 1

وعوائد

<اقتباس فقرة>   

وظيفة غير صحيحة

استخدم هذا الرمز

Environment.Exit(0);

واستخدام 0 كما كثافة العمليات إذا كنت لا ترغب في عودة أي شيء.

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