हर बार जब मैं ClickOnce में एप्लिकेशन प्रकाशित करता हूं तो मुझे इसे एक संशोधन संख्या को अपडेट करने के लिए मिलता है। क्या असेंबलीInfo.cs फ़ाइल में संस्करण संख्या को बदलने के लिए स्वचालित रूप से यह परिवर्तन प्राप्त करने का कोई तरीका है (हमारी सभी त्रुटि रिपोर्टिंग असेंबली संस्करण को देखती है)?विधानसभाInfo.cs फ़ाइल संस्करण से मेल खाने के लिए मैं ClickOnce प्रकाशित संस्करण कैसे प्राप्त करूं?
विधानसभाInfo.cs फ़ाइल संस्करण से मेल खाने के लिए मैं ClickOnce प्रकाशित संस्करण कैसे प्राप्त करूं?
उत्तर
हम का उपयोग टीम फाउंडेशन सर्वर टीम निर्माण और TFSBuild.proj के AfterCompile
लक्षित करने के लिए एक ब्लॉक को शामिल किया है ClickOnce हमारे पसंदीदा संस्करण संख्या के साथ प्रकाशित गति प्रदान करने के:
<MSBuild Projects="$(SolutionRoot)\MyProject\Myproject.csproj"
Properties="PublishDir=$(OutDir)\myProjectPublish\;
ApplicationVersion=$(PublishApplicationVersion);
Configuration=$(Configuration);Platform=$(Platform)"
Targets="Publish" />
PublishApplicationVersion
चर एक कस्टम MSBuild द्वारा उत्पन्न होता है TFS Changeset संख्या का उपयोग करने का कार्य, लेकिन आप Assembly जानकारी फ़ाइल से संस्करण संख्या प्राप्त करने के लिए your own custom task या existing solution का उपयोग कर सकते हैं।
यह सैद्धांतिक रूप से आपकी प्रोजेक्ट फ़ाइल (जो कि सिर्फ एक एमएसबिल्ड स्क्रिप्ट है) में किया जा सकता है, लेकिन मैं डेवलपर मशीन से तैनाती के खिलाफ अनुशंसा करता हूं।
मुझे यकीन है कि अन्य continuous integration (सीआई) समाधान इसी तरह से संभाल सकते हैं।
संपादित करें: क्षमा करें, पीछे की ओर अपने प्रश्न मिला है। ClickOnce संस्करण संख्या से AssemblyInfo फ़ाइल में जाकर काम करने योग्य होना चाहिए। मुझे यकीन है कि एमएसबिल्ड कम्युनिटी टास्क (उपरोक्त लिंक) में असेंबलीइन्फो फ़ाइल को अपडेट करने का एक कार्य है, इसलिए आपको क्लिकऑन कॉन्फ़िगरेशन एक्सएमएल से संस्करण संख्या खींचने के लिए केवल एक कस्टम कार्य की आवश्यकता होगी।
हालांकि, अगर आप भी अपने त्रुटि रिपोर्टिंग को बदलने शामिल करने के लिए ClickOnce भी संस्करण प्रकाशित विचार कर सकते हैं:
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
Debug.WriteLine(System.Deployment.Application.ApplicationDeployment.
CurrentDeployment.CurrentVersion);
}
आपको शायद कोड का एक टुकड़ा बनाने की आवश्यकता होगी जो .csproj फ़ाइल में संग्रहीत संस्करण संख्या के अनुसार AssemblyInfo.cs अद्यतन करता है। (क्लिकऑन परिनियोजन संस्करण एक एक्सएमएल टैग के अंदर संग्रहीत किया जाता है।)
प्रकाशित करने के बाद आप इस कोड के कोड को चलाने के लिए अपनी .csproj फ़ाइल बदल देंगे। रिलीज बिल्ड किया जाता है। एमएसबिल्ड लोगों ने ब्लॉग निर्माण के बारे में ब्लॉग किया है कि कुछ निर्माण प्रकारों के दौरान कस्टम क्रियाएं कैसे करें; MSBuild team blog देखें।
कदम:
- बाहरी incrementing संस्करण संख्या उपयोग करें (आप CruiseControl.NET की तरह एक सतत एकीकरण सर्वर का लाभ उठाने अगर है, तो यह निर्माण लेबल से आता है)।
- वर्तमान संस्करण को पकड़ने के लिए GlobalVersionInfo.cs (फ़ाइल समाधान-संदर्भ में सभी परियोजनाओं द्वारा संदर्भित) का उपयोग करें और इसे MSBuild Community कार्यों से AssemblyInfo कार्य के साथ निर्माण पर अपडेट करें।
- स्क्रिप्ट Mage उसी संस्करण का उपयोग करके क्लिकऑन मैनिफेस्ट को अपडेट करने के लिए .NET SDK से कमांड लाइन उपकरण (
-v
और-mv
स्विच देखें)।
Btw, एक अच्छी सुविधा है कि, जब भी आप स्वचालित रूप से एक नए ClickOnce तैनाती संस्करण एकीकरण स्क्रिप्ट के माध्यम से, अगर आप भी mage.exe को (संस्करण के रूप में ही) कम से कम संस्करण निर्दिष्ट प्रकाशित करते हैं, तो प्रत्येक उपयोगकर्ता हो जाएगा अगले एप्लिकेशन लॉन्च पर स्वचालित रूप से अपडेट किया गया।
मैं इस कार्यान्वित हाल ही में कुछ कस्टम कार्यों का उपयोग कर।क्लिकऑन के साथ इसे लागू करने के साथ मुझे मिली एक समस्या यह है कि आपकी सभी डीएलएल फाइलें अपडेट की गई हैं। यह क्लिकऑन अपडेट को हर अपडेट की सभी एप्लिकेशन फ़ाइलों को डाउनलोड करने का कारण बनता है। यह ClickOnce परिनियोजन की अच्छी विशेषताओं को छोड़ देता है जहां केवल संशोधित फ़ाइलों को अद्यतन में पुनः डाउनलोड किया जाता है।
क्लिकऑन के साथ ऐसा कुछ लागू करने के बारे में सोचने के लिए बस कुछ।
- 1. प्रकाशित संस्करण को .NET ClickOnce एप्लिकेशन में असेंबली संस्करण में सिंक्रनाइज़ कैसे करें?
- 2. संस्करण बनाम असेंबली (आदि) संस्करण प्रकाशित करें
- 3. मैं स्कैला के भीतर से स्कैला संस्करण कैसे प्राप्त करूं?
- 4. मैं सी # में असेंबली के संस्करण को कैसे प्राप्त करूं?
- 5. मैं वर्तमान प्रकाशित संस्करण को .NET एप्लिकेशन में कैसे प्राप्त करूं?
- 6. क्या विधानसभाInfo.cs को संस्करण नियंत्रण में रखा जाना चाहिए?
- 7. मैं मोनोचouch में आईओएस डिवाइस और संस्करण कैसे प्राप्त करूं
- 8. .NET ClickOnce परिनियोजन और गलत असेंबली अद्यतन संस्करण
- 9. मैं सात अंकों वाली संख्या से शुरू नहीं होने वाली रेखा से मेल खाने के लिए विम कैसे प्राप्त करूं?
- 10. फ़ाइल संस्करण बनाम। उत्पाद संस्करण
- 11. किसी अन्य EXE के लिए असेंबली संस्करण (फ़ाइल संस्करण नहीं) कैसे प्राप्त करें?
- 12. नाम से मेल खाने के लिए मैं नियमित अभिव्यक्ति का उपयोग कैसे करूं?
- 13. PHP: एंड्रॉइड .apk फ़ाइल से संस्करण कैसे प्राप्त करें?
- 14. आईआरसी उपनाम से मेल खाने के लिए नियमित अभिव्यक्ति
- 15. एसबीटी प्रकाशित कलाकृतियों में scala-library.jar संस्करण
- 16. मैं एक एसवीएन फ़ाइल के पुराने संस्करण को कैसे देखूं?
- 17. शैल आदेश कुंजी मान जोड़े से मेल खाने के लिए
- 18. मेक जावास्क्रिप्ट फ़ाइल संस्करण के लिए न्यूनतम
- 19. SQL सर्वर सॉर्टिंग से मेल खाने के लिए जावास्क्रिप्ट सॉर्टिंग
- 20. (grep) Regex गैर-ASCII वर्णों से मेल खाने के लिए?
- 21. ऑटो वृद्धि फ़ाइल संस्करण के साथ फिक्स्ड असेंबली संस्करण?
- 22. विशिष्ट लंबाई के अंकों से मेल खाने के लिए Regex
- 23. संस्करण फ़ाइल से संस्करण संख्या को पढ़ने और अपडेट करने के लिए टीमसिटी
- 24. VS2010 वेब फाइल सिस्टम के प्रकाशित कमांड लाइन संस्करण
- 25. मैं डेल्फी संस्करण को कैसे निर्धारित करूं जिसने डेल्फी प्रोजेक्ट
- 26. संस्करण
- 27. LINQ क्वेरी एकाधिक शब्दों से मेल खाने के लिए
- 28. मैं एंटरप्राइज़ लाइब्रेरी को नवीनतम संस्करण में कैसे अपग्रेड करूं?
- 29. मैं साइटकोर आइटम को प्रकाशित दिनांक कैसे प्राप्त करूं?
- 30. फ़ायरफ़ॉक्स एक्सटेंशन से ब्राउज़र संस्करण प्राप्त करें