मैं .NET में एक तुच्छ सांत्वना अनुप्रयोग है। यह एक बड़े आवेदन का सिर्फ एक परीक्षण हिस्सा है। मैं अपने कंसोल एप्लिकेशन के "निकास कोड" को निर्दिष्ट करना चाहूंगा। मैं यह कैसे करु?
मैं .NET में एक तुच्छ सांत्वना अनुप्रयोग है। यह एक बड़े आवेदन का सिर्फ एक परीक्षण हिस्सा है। मैं अपने कंसोल एप्लिकेशन के "निकास कोड" को निर्दिष्ट करना चाहूंगा। मैं यह कैसे करु?
जवाबों:
3 विकल्प:
Mainयदि आप अपनी Mainविधि को वापस करने की घोषणा करते हैं तो आप इसे वापस कर सकते हैं int।Environment.Exit(code)।Environment.ExitCode = -1;:। इसका उपयोग तब किया जाएगा जब कोई और रिटर्न कोड सेट नहीं करता है या ऊपर दिए गए अन्य विकल्पों में से एक का उपयोग करता है)।आपके एप्लिकेशन (कंसोल, सर्विस, वेब ऐप आदि) के आधार पर विभिन्न तरीकों का इस्तेमाल किया जा सकता है।
0सफलता का एक निकास कोड और गैर-शून्य का मतलब विफलता है। return;एक्जिट कोड के माध्यम से सफलता का संकेत देता है 0, और return -1;विफलता का संकेत देता है।
जवाब के अलावा रिटर्न इंट कवर ... पवित्रता के लिए एक दलील। कृपया, यदि उचित हो तो फ्लैग के साथ, कृपया अपने एग्जिट कोड को एनम में परिभाषित करें। यह डिबगिंग और रखरखाव को इतना आसान बना देता है (और, एक बोनस के रूप में, आप अपनी सहायता स्क्रीन पर आसानी से बाहर निकलने वाले कोड को प्रिंट कर सकते हैं - आपके पास उनमें से एक है, ठीक है?)।
enum ExitCode : int {
Success = 0,
InvalidLogin = 1,
InvalidFilename = 2,
UnknownError = 10
}
int Main(string[] args) {
return (int)ExitCode.Success;
}
0 = Successहै कि इस तथ्य से आता है कि केवल एक ही सफलता कोड की आवश्यकता है, लेकिन कई त्रुटि कोड, जैसे कि 0, कंप्यूटर पूर्णांकों में कोई + या - के रूप में, विशिष्ट रूप से सफलता की पहचान करने के लिए इस्तेमाल किया जा सकता है
तीन तरीके हैं जो आप कंसोल एप्लिकेशन से निकास कोड वापस करने के लिए उपयोग कर सकते हैं।
Mainअपने आवेदन में विधि इतना है कि यह एक रिटर्न intके बजाय void(एक समारोह है कि रिटर्न एक Integerके बजाय SubVB.Net में) और फिर उस विधि से बाहर निकलने के कोड लौटाते हैं।Mainविधि इसके अलावा void( SubVB.Net में एक ) है तो इस संपत्ति के मूल्य को नजरअंदाज कर दिया जाएगा।एक महत्वपूर्ण मानक जो देखा जाना चाहिए वह है 0'सफलता'।
संबंधित विषय पर, निकास कोड को परिभाषित करने के लिए गणना का उपयोग करने पर विचार करें कि आपका आवेदन वापस आने वाला है। FlagsAttribute आप कोड का एक संयोजन वापस जाने के लिए अनुमति देगा।
इसके अलावा, सुनिश्चित करें कि आपका आवेदन एक 'कंसोल एप्लीकेशन' के रूप में संकलित है।
Environment.ExitCodeप्रोग्राम को तुरंत बंद नहीं करता है, लेकिन Environment.Exitविधि प्रोग्राम को तुरंत बंद कर देती है
Processऑब्जेक्ट के माध्यम से c # से प्रारंभ किया जाएगा , तो आप ऑब्जेक्ट से पूछ सकते हैं WaitForExit(), और फिर उससे बाहर निकलने का कोड अनुरोध कर सकते हैं ।
यदि आप डेविड द्वारा सुझाई गई विधि का उपयोग करने जा रहे हैं, तो आपको [झंडे] विशेषता को भी देखना चाहिए।
यह आपको एनमों पर बिट वार ऑपरेशन करने की अनुमति देता है।
[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 );
System.Environment.ExitCode
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
बस मुख्य से appropiate कोड वापस।
int main(string[] args)
{
return 0; //or exit code of your choice
}
static void Main(string[] args);
यदि आपके मुख्य में शून्य रिटर्न हस्ताक्षर हैं, तो एक्ज़िटकोड का उपयोग करें, अन्यथा आपको उस मूल्य को "सेट" करना होगा जो आप वापस करते हैं।
यदि मुख्य विधि शून्य हो जाती है, तो आप इस संपत्ति का उपयोग बाहर निकलने वाले कोड को सेट करने के लिए कर सकते हैं जो कॉलिंग वातावरण में वापस आ जाएगी। यदि मेन शून्य नहीं लौटता है, तो इस संपत्ति को अनदेखा कर दिया जाता है। इस संपत्ति का प्रारंभिक मूल्य शून्य है।
स्कॉट मुनरो के जवाब के अपडेट के रूप में :
Mainकोई प्रभाव नहीं पड़ता है।mainप्रवेश बिंदु का रिटर्न मान सम्मान है।Main()वापस नहीं किया Process.ExitCode।
int Mainअभी भी पर्यावरण के लिए एक विकल्प के रूप में इस्तेमाल किया जा सकता है। ExitCode। लिंक
गणना विकल्प उत्कृष्ट है लेकिन संख्याओं को गुणा करके इसमें सुधार किया जा सकता है:
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
कई त्रुटियों के मामले में, विशिष्ट त्रुटि संख्याओं को एक साथ जोड़ने से आपको एक अनूठी संख्या मिलेगी जो पता की गई त्रुटियों के संयोजन का प्रतिनिधित्व करेगी।
उदाहरण के लिए, 6 का एक त्रुटिवृत्त केवल 4 और 2 से मिलकर बना हो सकता है, 12 में केवल 4 और 8 शामिल हो सकते हैं, 14 में केवल 2, 4 और 8 आदि शामिल हो सकते हैं।
मेरे 2 सेंट:
आप सिस्टम त्रुटि कोड यहां पा सकते हैं: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
आपको "फ़ाइल नहीं मिली" के लिए 2 या "एक्सेस अस्वीकृत" के लिए 5 जैसे विशिष्ट कोड मिलेंगे।
और जब आप किसी अज्ञात कोड पर ठोकर खाते हैं, तो आप इस कमांड का उपयोग यह पता लगाने के लिए कर सकते हैं कि इसका क्या मतलब है:
net helpmsg decimal_code
जैसे
शुद्ध helpmsg १
रिटर्न
गलत समारोह
इस कोड का उपयोग करें
Environment.Exit(0);
यदि आप कुछ भी वापस नहीं करना चाहते हैं तो 0 का उपयोग करें।