2009-09-18 9 views
6

मुझे यह भी यकीन नहीं है कि संस्करणिंग इसके लिए सही शब्द है, लेकिन इसे करना होगा। मैं अपने उपयोगकर्ताओं के अनुरोध के द्वारा हमारे आंतरिक ऐप्स पर 'संस्करण x.x.xx' नोट डालना शुरू करना चाहता हूं, इसलिए जब उन्हें अपडेट किया जाता है तो उनके बारे में कोई अंदाजा नहीं है (और भविष्य में, यह एक लिंक जो परिवर्तन दिखाता है)। ऐसा लगता है कि AssemblyInfo.cs फ़ाइल का उपयोग करना एक अच्छा विचार है - यह आपको बिल्ड + संशोधन को स्वचालित रूप से अपडेट करने देता है जो कि अच्छा है (वेब ​​एप्लिकेशन के डीएलएल के लिए)।एएसपी.NET वेब ऐप का संस्करण

क्या यह एक सभ्य दृष्टिकोण है? फिर जब भी मैं अपने ऐप के लिए प्रमुख/मामूली संस्करण मील का पत्थर तक पहुंच जाता हूं। मैं बस उनको मैन्युअल रूप से अपडेट कर सकता हूं, सही? यह सब मानता है कि मैं वास्तव में अपने ऐप से संस्करण जानकारी प्राप्त कर सकता हूं। किसी भी तरह, जो मुझे कोई सुराग नहीं है कि कैसे करना है।

उत्तर

8

हम हमारे आवेदन में वही काम करें। हालांकि आप कर सकते हैं मैन्युअल रूप से संस्करण संख्या जोड़ें, हमारी स्वचालित जानकारी प्रक्रिया के हिस्से के रूप में हमारी संस्करण जानकारी असेंबली में जोड़ दी गई है (हम एक अनुकूलित टीएफएस 2008 सेवा का उपयोग करते हैं), जिसे मैं अत्यधिक अनुशंसा करता हूं। यहां हम जिस नियंत्रण का उपयोग करते हैं (हम इसे मास्टर पेज के नीचे डाल देते हैं):

public class BuildVersion : WebControl 
{ 
    /// <summary> 
    /// Render override 
    /// </summary> 
    /// <param name="writer"></param> 
    protected override void Render(HtmlTextWriter writer) 
    { 
     writer.Write("<!--"); 
     writer.Write("Version: "); 
     writer.Write(GetAssemblyVersion()); 
     writer.Write("-->"); 
    } 

    private string GetAssemblyVersion() 
    { 
     try 
     { 
      Object[] atts = Assembly.GetAssembly(this.GetType()).GetCustomAttributes(true); 
      foreach (Object o in atts) 
      { 
       if (o.GetType() == typeof(AssemblyVersionAttribute)) 
       { 
        return ((AssemblyVersionAttribute)o).Version; 
       } 
      } 
      return String.Empty; 
     } 
     catch 
     { 
      return "Failed to load assembly"; 
     } 
    } 
} 
+0

+1 –

+0

मैं इसे एक दूंगा। बहुत धन्यवाद। –

1

हम सबवर्सन, सीसीनेट और नेंट के साथ संस्करण को स्वचालित करते हैं।

हमारी स्क्रिप्ट फ़ोल्डर पथ (/Branches/1.4.5/Source ...) को पार करती है और संस्करण संख्या (1.4.5) निकालती है। उसके बाद हम उपवर्तन से वर्तमान संशोधन संख्या पुनर्प्राप्त करते हैं और हम इसे संस्करण की अंतिम स्थिति (यानी 1.4.5.346) में रखते हैं। एक बार हमारे पास पूर्ण संस्करण संख्या हो जाने के बाद हम सभी असेंबली में इंजेक्ट करते हैं और इसे एक संस्करण.txt फ़ाइलों में लिखते हैं, इसलिए यह निर्धारित करना आसान है कि वर्तमान में वेब सर्वर पर कौन सा संस्करण तैनात किया गया है।

+0

मुझे कोड दिखाएं – Zote

0

Assembly ए को देखते हुए, कोड में संस्करण प्राप्त करने के लिए .GetName()। Version.ToString() का उपयोग करें।

GetName AssemblyName देता है।

संस्करण आपके असेंबलीइन्फो फ़ाइल में निर्दिष्ट संस्करण को वापस देता है।

2

आप जिस तरह से वर्णन करते हैं, वैसे ही संस्करण संख्याओं का उपयोग कर सकते हैं, जब आप नई रिलीज बनाते हैं तो असेंबलीइन्फो फ़ाइल में संख्याओं को बदलना, लेकिन स्रोत नियंत्रण प्रणाली से लिंक होने पर यह बेहतर होता है। हम संस्करण संख्या सेट करने के लिए CrusieControl.NET और वेब परिनियोजन परियोजनाओं का उपयोग करते हैं, लेकिन मुझे यकीन है कि दूसरों के पास अन्य सुझाव होंगे। डीबग मोड में अपनी चल रहा है इससे पहले कि आप संकलन तो 0.0.0.0 दिखाएगा

System.Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString 

लेकिन आप इस और प्रदर्शन के लिए जाँच कर सकते हैं:

इसके अलावा आप इस कोड का उपयोग करके एक संकलित वेबसाइट से संस्करण संख्या प्राप्त कर सकते हैं "विकास" या कुछ इस तरह अपने आप को दिखाने के लिए स्थानीय स्तर पर यह चल रहा है (नहीं है कि आपको पता नहीं होगा, लेकिन उसके बाद क्या तुमने कभी 0.0.0.0 देख पा रहे हैं यदि आप जानते हैं कि कुछ गलत है।

आशा है कि मदद करता है

+0

कुछ कोष्ठक त्रुटियां ... GetExecutingAssembly()। GetName()। संस्करण.ToString(); – Mayo

+0

मैंने क्रूज़ कंट्रोल (या चार्ल्स mentioend के रूप में nAnt) का कभी भी उपयोग नहीं किया है, इसलिए मुझे इन्हें भी देखना होगा। मेरे बेल्ट के लिए और अधिक उपकरण। धन्यवाद! "मुझे कोड दिखाएं" के लिए –

1

यह एक बुरा विचार नहीं है। समाधान अपने ASP.NET वेब पाने के लिए अनुप्रयोग DLL संस्करण सरल है:

VB.NET

My.Application.Info.Version (वीबी।नेट)

सी #

लाभ मेरे नाम स्थान के लिए उपयोग के रूप में यहाँ http://www.codeproject.com/KB/cs/MyNamespace.aspx

दिखाए गए कोड की टन का उपयोग कर की तुलना में बहुत आसान।

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