2011-01-04 17 views
13

पर क्लिकऑन परिनियोजन संस्करण दिखा रहा है अब मैं एक WPF C# प्रोजेक्ट तैनात कर रहा हूं और स्क्रीन शीर्षक पर क्लिकऑन संस्करण (assymbly या product version के बजाय) रखना चाहता हूं। मैं इसे विन फॉर्म एप्लिकेशन में निम्न तरीके से करता था। लेकिन ऐसा लगता है कि यह डब्ल्यूपीएफ अनुप्रयोगों में नहीं है। मैं Google bu पर खोज करता हूं कुछ भी नहीं मिला। कृपया मदद करे।WPF एप्लिकेशन

if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) 
    { 
     ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment; 
     lblVer.Text = "V" + ad.CurrentVersion.ToString(); 
    } 
    else 
     lblVer.Text = "V" + Application.ProductVersion.ToString(); 

उत्तर

3

ठीक है, मुझे समस्या मिली। मुझे System.Deployment का संदर्भ जोड़ना था इसलिए मैं इसका उपयोग नहीं कर सका। यह डीएल भी Winforms के लिए है।

6

आपको क्या त्रुटि मिलती है? विंडोज फॉर्म और डब्ल्यूपीएफ के बीच क्लिकऑन एपीआई में कोई अंतर नहीं है। यह किसी भी यूआई ढांचे पर निर्भर नहीं है।

क्या आपको System.Deployment.dll का संदर्भ जोड़ना याद आया?

+0

धन्यवाद, मेरा उत्तर देखें। – Igal

+0

इसे उत्तर के रूप में चिह्नित किया जाना चाहिए! – Muds

23

इस प्रयास करें:

public static Version GetPublishedVersion() 
{ 
    XmlDocument xmlDoc = new XmlDocument(); 
    Assembly asmCurrent = System.Reflection.Assembly.GetExecutingAssembly(); 
    string executePath = new Uri(asmCurrent.GetName().CodeBase).LocalPath; 

    xmlDoc.Load(executePath + ".manifest"); 
    string retval = string.Empty; 
    if (xmlDoc.HasChildNodes) 
    { 
     retval = xmlDoc.ChildNodes[1].ChildNodes[0].Attributes.GetNamedItem("version").Value.ToString(); 
    } 
    return new Version(retval); 
} 
+1

यह काम करता है, धन्यवाद – asktomsk

+0

मुझे लगता है कि विधानसभा.GetEntryAssembly() बेहतर काम करता है – itstata

0

यह समाधान @Engin के समान है, लेकिन XPath का उपयोग करता है।

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load("..."); 
XmlNamespaceManager ns = new XmlNamespaceManager(xmlDoc.NameTable); 
ns.AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1"); 
string xPath = "/asmv1:assembly/asmv1:assemblyIdentity/@version"; 
XmlNode node = xmlDoc.SelectSingleNode(xPath, ns); 
string version = node.Value; 
2
using System; 
using System.Deployment.Application; 

namespace Utils 
{ 
    public class ClickOnce 
    { 
     public static Version GetPublishedVersion() 
     { 
      return ApplicationDeployment.IsNetworkDeployed 
       ? ApplicationDeployment.CurrentDeployment.CurrentVersion 
       : System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; 
     } 
    } 
} 

आप System.Deployment.Application के बारे में त्रुटि है, तो समाधान> परियोजना> संदर्भ> जोड़ें संदर्भ> विधानसभाओं> फ्रेमवर्क> System.Deployment।

इस जानकारी के लिए असेंबली एक्सएमएल पार्स करें; आप अनियंत्रित व्यवहार पर भरोसा कर रहे हैं जो 'अभी के लिए' काम करने के लिए होता है।