2016-09-27 11 views
5

मैं अपने डेस्कटॉप एप्लिकेशन का प्रकाशित संस्करण दिखाना चाहता हूं। मैं इस कोड के साथ यह करने के लिए कोशिश कर रहा हूँ:प्रकाशित संस्करण कैसे प्राप्त करें?

_appVersion.Content = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; 

समस्या यह है कि मैं नहीं मिल रहा है वास्तव में अपने प्रोजेक्ट गुण में संस्करण मैं प्रकाशित है। इसके नीचे का एक स्क्रीनशॉट है:

enter image description here

लेकिन मैं 3.0.0.12546 हो रही है। क्या कोई जानता है कि समस्या कहां है?

+0

क्या आप डीबग मोड में जांच रहे हैं? – Sajeetharan

+0

एनओपी, रिलीज मोड में – IrApp

उत्तर

5

मैं भी इस मुद्दे को हो रही थी और पाया कि संस्करण संख्या AssemblyInfo.cs में सेट Properties में एक सेट के साथ हस्तक्षेप किया गया था:

[assembly: AssemblyVersion("1.0.0.0")] 
[assembly: AssemblyFileVersion("1.0.0.0")] 

मैं आमतौर पर AssemblyInfo से बाहर उन पंक्तियों टिप्पणी और की जगह उन्हें

[assembly: AssemblyVersion("1.0.*")] 

जांचें कि ये मान हार्ड-सह हैं या नहीं अपनी AssemblyInfo फ़ाइल में समर्पित करें।

स्वचालित संस्करण पर एक दिलचस्प चर्चा के लिए this SO question देखें। AssemblyInfo.cs की जांच करते समय, सुनिश्चित करें कि आपका ऑटो-वृद्धि (* - यदि आप इसका उपयोग कर रहे हैं) केवल AssemblyVersion को लक्षित करता है और AssemblyFileVersion नहीं है।


जब कार्यक्रम डिबगिंग, आप विधानसभा के गुणों

\bin\Release\app.publish 

में Details टैब के अंतर्गत जाँच, जाँच संस्करण संख्या सकता है। क्या यह वीएस में निर्दिष्ट सेटिंग्स में से किसी एक के साथ मेल खाता है?

+1

बिल्कुल सही, आपका समाधान एक आकर्षण की तरह काम करता है, बहुत बहुत धन्यवाद! – IrApp

+0

@IrApp कोई समस्या नहीं, खुश मैं मदद कर सकता था! – Bassie

2

हम एक संपत्ति बना सकते हैं जो संस्करण जानकारी नीचे उल्लिखित के रूप में वापस कर देगी और हम उस संपत्ति का उपयोग कर सकते हैं।

public string VersionLabel 
{ 
    get 
    { 
     if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) 
     { 
      Version ver = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion; 
      return string.Format("Product Name: {4}, Version: {0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision, Assembly.GetEntryAssembly().GetName().Name); 
     } 
     else 
     { 
      var ver = Assembly.GetExecutingAssembly().GetName().Version; 
      return string.Format("Product Name: {4}, Version: {0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision, Assembly.GetEntryAssembly().GetName().Name); 
     } 
    } 
} 
0
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; 

आप विधानसभा संस्करण AssemblyInfo.cs फ़ाइल में मौजूद हैं, संस्करण है कि आप प्रकाशित करें संवाद में सेट प्रकाशित पाने के लिए मिल जाएगा, तो आप

System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion 

का उपयोग करना चाहिए लेकिन नोटिस है कि आप सिस्टम। डिप्लॉयमेंट के संदर्भ में जोड़ने के लिए, और यह प्रोजेक्ट फ़ाइल पर राइट क्लिक करके अपने एप्लिकेशन को प्रकाशित करने के बाद ही काम करेगा और जब भी आप प्रकाशित करेंगे, प्रकाशित करें पर क्लिक करें, यह संशोधन में वृद्धि करेगा।

आप डिबग मोड में उपरोक्त पंक्ति यह काम नहीं करेगा और एक अपवाद फेंक होगा कॉल करने की कोशिश है, तो आप निम्नलिखित कोड का उपयोग कर सकते हैं: लैम्ब्डा अभिव्यक्ति के साथ सी # 6.0 का उपयोग करना

try 
{ 
    return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion; 
} 
catch(Exception ex) 
{ 
    return Assembly.GetExecutingAssembly().GetName().Version; 
} 
0

private string GetVersion => ApplicationDeployment.IsNetworkDeployed ? $"Version: {ApplicationDeployment.CurrentDeployment.CurrentVersion}" : $"Version: {Application.ProductVersion}"; 
संबंधित मुद्दे

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