2012-12-18 38 views
11

कहें कि मेरे पास संस्करण संख्या 1.5 है। * जिसे 1.5.4735.28467 के रूप में संकलित किया गया है।"*" (वाइल्डकार्ड) संस्करण संख्याओं के लिए .NET में सूत्र क्या है?

4735 और 28467 प्राप्त करने के लिए सूत्र क्या है?

+1

प्रमुख, मामूली, निर्माण, संशोधन:


यहाँ सूत्र (डैनियल की टिप्पणी से निकाले के रूप में) में से एक कार्यान्वयन है। बिल्ड और संशोधन आपके ऊपर हैं .... –

+0

http://blogs.msdn.com/b/jensenh/archive/2005/11/11/491779.aspx। लेकिन यह माइक्रोसॉफ्ट ऑफिस के लिए है; मुझे नहीं पता कि यह .NET Framework के लिए एक ही तरीके से काम करता है या नहीं। –

+7

बिल्ड = डेटटाइम। आज। सबट्रैक्ट (नया डेटटाइम (2000, 1, 1))। दिन; संशोधन = (int) DateTime.Now.Subtract (DateTime.Today) .TotalSeconds/2; बहुत बुरा यह बंद हो गया; कथित डुप्लिकेट एक अलग सवाल है ... – Daniel

उत्तर

18

कृपया ध्यान दें:वैकल्पिक उपकरण/नियमों/योजनाओं/मैक्रो/ऐड-इन्स आदि एक अलग ढंग से संस्करण नियंत्रित करने के लिए देखते हैं /; यदि इस्तेमाल किया जाता है तो वे स्पष्ट रूप से निम्नलिखित को खत्म कर देते हैं।

बहरहाल, यह एक "*" संस्करण एक वेनिला दृश्य स्टूडियो/नेट निर्माण प्रक्रिया में .build.revision को गणना कैसे की जाती है:

जब एक संस्करण का उल्लेख करते समय आपको कम से कम प्रमुख निर्दिष्ट करना होगा। यदि आप प्रमुख और नाबालिग निर्दिष्ट करते हैं, तो आप बनाने के लिए तारांकन (*) निर्दिष्ट कर सकते हैं। यह निर्माण 1 जनवरी, 2000 के बाद से स्थानीय समय दिनों की संख्या के बराबर होने का कारण बन जाएगा, और संशोधन के लिए आधी रात स्थानीय समय के बाद से सेकंड की संख्या, 2.

से विभाजित के बराबर होना चाहिए

Coding Horror: Determining Build Date the hard way और MSDN: AssemblyVersionAttribute देखें। यह डिफ़ॉल्ट विस्तार व्यवहार असेंबली वर्जन एट्रिब्यूट क्लास (बीसीएल!) में दस्तावेज किया गया है और विशेष वीएस कंपाइलर व्यवहार (डैनियल की टिप्पणी देखें) और विशेष रूप से संकलक व्यवहार नहीं है।

int Build = DateTime.Today.Subtract(new DateTime(2000, 1, 1)).Days; 
int Revision = (int)DateTime.Now.Subtract(DateTime.Today).TotalSeconds/2; 
+3

यह सबसे निश्चित रूप से संकलक व्यवहार है। कंपाइलर किसी भी विशेषता को तत्काल नहीं करता है; यह मेटाडेटा में तर्क मानों को एन्कोड करता है। लेकिन संकलन समय पर संख्या प्रतिस्थापित हो जाती है; यह कंपाइलर में एक विशेष मामला होना चाहिए। ऐसा कुछ करने के लिए अपनी कस्टम विशेषता लिखने का कोई तरीका नहीं है। – Daniel

+0

@Daniel यह एक अच्छा तर्क है। काश मैं वर्जन संख्याओं के काम पर कैसे एक वीएस (.NET नहीं) संदर्भ पा सकता हूं। –

+2

आप रोज़लिन में कार्यान्वयन भी देख सकते हैं: http://source.roslyn.codeplex.com/#Microsoft.CodeAnalysis/VersionHelper.cs,95 – eug