2010-06-23 16 views
59

सिस्टम क्यों है। .NET में वर्जन को Major.Minor.Build.Revision के रूप में परिभाषित किया गया है? लगभग हर कोई (मेरे साथ) इस बात से सहमत है कि संशोधन तीसरे स्थान पर है, और "निर्माण" या जिसे आप कॉल करना चाहते हैं, वह आखिरी है।सिस्टम क्यों है। .NET में वर्जन को Major.Minor.Build.Revision के रूप में परिभाषित किया गया है?

क्या माइक्रोसॉफ्ट भी इस खतरनाक तरीके से संख्याओं का उपयोग करता है, उदाहरण के लिए 3.5.3858.2, या नाम खुद पीछे हैं? उदाहरण के लिए यदि आप मेजर.इनर.बिल्ड.विविजन ऑर्डर के साथ अपना खुद का वर्जन क्लास लिखना चाहते हैं, तो सिस्टम में कनवर्ट करते समय पिछले दो घटकों को स्वैप करना उचित होगा। संस्करण, या आप इसे अनदेखा करते हैं और सिर्फ नामों का नाटक करते हैं पीछे की तरफ हैं?

+4

यह सबसे प्रेरित सवाल मैं आज देखा है है ... मैंने हमेशा यह जानना चाहता था और कभी नहीं पूछना सोचा! – codekaizen

उत्तर

30

मुझे लगता है कि भ्रम की स्थिति क्या सबसे एक "संशोधन" और what Microsoft does पर विचार आता है:

  • बिल्ड: बिल्ड नंबर में एक अंतर एक ही स्रोत एक रखता प्रतिनिधित्व करता है। यह प्रोसेसर, प्लेटफार्म, या कंपाइलर परिवर्तनों के कारण उपयुक्त होगा।

  • संशोधन: एक ही नाम, प्रमुख, और छोटे संस्करण संख्याओं लेकिन विभिन्न बदलावों के साथ, सभाओं पूरी तरह से परस्पर विनिमय करने का इरादा कर रहे हैं। पहले जारी असेंबली में सुरक्षा छेद को ठीक करना उचित होगा।

सुरक्षा ठीक कोण, शायद अधिक आम उनके लिए,, अंतिम स्थान पर यह करने के लिए एक सभ्य कारण हो रहा है "सबसे-नाबालिग" परिवर्तन के रूप में।

+0

यह समझ में आता है। लेकिन key.minor.revision.build आदेश का उपयोग कर अपने स्वयं के संस्करण वर्ग के साथ, क्या .NET 'System.Version' में कनवर्ट करते समय पिछले दो घटकों को स्वैप करना उचित होगा? या उन्हें अकेला छोड़ दें और उन्हें प्रत्येक संरचना में विपरीत नामों से बुलाया जाए? –

+0

@ जेक - निर्माण करने वाले प्रत्येक व्यक्ति के लिए मुझे लगता है ... व्यक्तिगत रूप से मैं * उन्हें * स्वैप करता हूं, मेरा सम्मेलन वास्तव में 'Major.Minor.Revision.ChangeSet' है, इसलिए मैं हमारे स्रोत नियंत्रण को चलाने वाला सटीक कोड प्राप्त कर सकता हूं बस संख्या पर glancing द्वारा। चूंकि हम निरंतर एकीकरण करते हैं, परिवर्तन और निर्माण संख्या हमारे लिए समानार्थी बनती है ... सुनिश्चित नहीं है कि हर जगह काम करता है। –

13

क्या माइक्रोसॉफ्ट भी इस खतरनाक तरीके से संख्याओं का उपयोग करता है, उदाहरण के लिए 3.5.3858.2

यदि आप इसे डिफ़ॉल्ट देते हैं, उदा। [assembly: AssemblyVersion("1.1.*")], निर्दिष्ट करके, प्रत्येक दिन तीसरी संख्या में वृद्धि होती है, और चौथी संख्या मध्यरात्रि से सेकंड की संख्या होती है, जो दो से विभाजित होती है (यदि एक दिन में एक से अधिक बिल्ड होते हैं तो असंबद्ध होना)।

लगभग हर कोई (मेरे साथ) इस बात से सहमत है कि संशोधन तीसरे स्थान पर है, और "निर्माण" या जो भी आप इसे कॉल करना चाहते हैं वह अंतिम है।

माइक्रोसॉफ्ट "निर्माण" का पर्याय "दिन" के पर्याय के रूप में उपयोग कर रहा है: शायद यह "दैनिक निर्माण" के विचार से संबंधित है; और इसलिए "संशोधन" इसलिए (दैनिक) निर्माण का एक और संस्करण है।

+0

वास्तव में सवाल क्या नहीं पूछ रहा है। वह नहीं पूछ रहा कि वे क्या हैं, लेकिन वे इस विशेष क्रम में क्यों हैं। –

+0

@Alastair पिट्स - मैंने इसे संबोधित करने के लिए अपने उत्तर में जोड़ा है। – ChrisW

+0

मैंने अपना डाउनवोट संशोधित किया है। :) –

22

मुझे एहसास है कि मैं थोड़ा देर से पार्टी में आ रहा हूं, लेकिन मैं अपनी उछाल साझा करना चाहता था कि निर्माण और संशोधन का आदेश "गलत" क्यों है। यह इतना नहीं है कि वे गलत क्रम में हैं, लेकिन वे क्रम में नहीं हैं।

असेंबली का संस्करण, जब यह नीचे आता है, तो मेजर। मिनोर होता है। उपरोक्त link से, माइक्रोसॉफ्ट का कहना है, "निर्माण या संशोधन संख्याओं से अलग होने वाली असेंबली के बाद के संस्करणों को पूर्व संस्करण के हॉटफिक्स अपडेट माना जाता है।" [मेरा जोर]

एक ही स्रोत के पुनर्मूल्यांकन का प्रतिनिधित्व करता है।संशोधन एक कोड परिवर्तन का प्रतिनिधित्व करता है, लेकिन एक जो एक ही [Major.Minor] संस्करण के अन्य संशोधनों के साथ पूरी तरह से परिवर्तनीय है। लेकिन न तो दूसरे पर प्राथमिकता लेती है।

+ Major 
| 
+-+ Minor 
    | 
    +-+ Build 
    | 
    +-+ Revision 

लेकिन बजाय:

तो, सारांश में, नहीं इसके बारे में के रूप में लगता है

+ Major 
| 
+-+ Minor 
    | 
    +-+ Build 
    | 
    +-+ Revision 
+0

यह स्पष्टीकरण चीजों को कम भ्रमित करता है। यह सत्यापित करना वाकई मुश्किल था कि मेरे पास समान मशीनों पर समान नेट नेट संशोधन हैं। विशेष रूप से, "संशोधन" संख्या ओएस संस्करणों के बीच हमेशा भिन्न होती है, जबकि मेजर, माइनर और बिल्ड नंबर समान होते हैं। जैसे विंडोज 8.1 पर, मेरा "... \ Framework64 \ v4.0.30319 \ clr.dll" 4.0.30319.34014 पर है, लेकिन Win2k8 r1 सर्वर पर, फ़ाइल 4.0.30319.18444 पर है। – Granger

संबंधित मुद्दे

 संबंधित मुद्दे