كيف يمكنني تحديد رمز الخروج لتطبيق وحدة التحكم في .NET؟
سؤال
لدي تطبيق وحدة تحكم تافه في .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;
}
هناك ثلاث طرق يمكنك استخدامها لإرجاع رمز الخروج من تطبيق وحدة التحكم.
- تعديل
Main
الطريقة في تطبيقك بحيث تقوم بإرجاع ملفint
بدلاً منvoid
(دالة تقوم بإرجاعInteger
بدلاً منSub
في VB.Net) ثم قم بإرجاع رمز الخروج من تلك الطريقة. - تعيين بيئة. رمز الخروج الخاصية إلى رمز الخروج.لاحظ أن الطريقة 1.الأسبقية - إذا كان
Main
الطريقة ترجع أي شيء آخر غيرvoid
(هوSub
في VB.Net) فسيتم تجاهل قيمة هذه الخاصية. - قم بتمرير رمز الخروج إلى بيئة.خروج طريقة.سيؤدي هذا إلى إنهاء العملية على الفور مقارنةً بالطريقتين الأخريين.
المعيار المهم الذي ينبغي مراعاته هو ذلك 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.:)
System.Environment.ExitCode
http://msdn.microsoft.com/en- لنا / مكتبة / system.environment.exitcode.aspx
int code = 2;
Environment.Exit( code );
ومجرد إعادة الرمز المناسب من الرئيسي.
int main(string[] args)
{
return 0; //or exit code of your choice
}
استخدم 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 كما كثافة العمليات إذا كنت لا ترغب في عودة أي شيء.