स्वचालित रूप से संस्करण संख्या अद्यतन करें

मैं अपने निर्माण की संस्करण प्रॉपर्टी को प्रत्येक बिल्ड के लिए बढ़ाया जाना चाहता हूं लेकिन मुझे यकीन नहीं है कि विजुअल स्टूडियो (2005/2008) में इस कार्यक्षमता को कैसे सक्षम किया जाए। मैंने असेंबली वर्जन को 1.0 के रूप में निर्दिष्ट करने का प्रयास किया है। * लेकिन यह मुझे बिल्कुल वही नहीं मिला जो मैं चाहता हूं।

मैं एक सेटिंग फ़ाइल का उपयोग कर रहा हूं और पहले के प्रयासों में जब असेंबली संस्करण बदल गया था तो मेरी सेटिंग्स डिफ़ॉल्ट पर रीसेट हो गई क्योंकि एप्लिकेशन ने दूसरी निर्देशिका में सेटिंग्स फ़ाइल की तलाश की थी।

मैं 1.1.38 के रूप में एक संस्करण संख्या प्रदर्शित करने में सक्षम होना चाहता हूं, इसलिए जब कोई उपयोगकर्ता कोई समस्या पाता है तो मैं उस संस्करण को लॉग कर सकता हूं जिसका उपयोग वे कर रहे हैं और साथ ही उन्हें पुरानी रिलीज होने पर अपग्रेड करने के लिए बताएं।

वर्जनिंग कार्यों की सराहना करने के बारे में एक संक्षिप्त स्पष्टीकरण भी सराहना की जाएगी। निर्माण और संशोधन संख्या कब बढ़ती है?

0
जोड़ा संपादित
विचारों: 3
निम्नलिखित प्रश्न में एक आसान सुविधाजनक समाधान है कि निर्माण कार्यक्रम में स्रोत फ़ाइल उत्पन्न करके अपने एप्लिकेशन में बिल्ड नंबर को इंजेक्ट कैसे करें। stackoverflow.com/questions/4450231/…
जोड़ा लेखक Ashley Davis, स्रोत

11 उत्तर

According to Wikipedia: "[Game Boy's] monochrome screen, lack of a backlight, and less powerful hardware" is at the root of the problem.

9
जोड़ा
वाह, जब मैं लेख पढ़ रहा था, तो मैंने किसी भी तरह से पूरी तरह से स्किम करने में कामयाब रहे।
जोड़ा लेखक Joshua McKinnon, स्रोत
एक अतिरिक्त के रूप में, जबकि संकल्प एक जैसे थे, गियर की एक बड़ी स्क्रीन (3.2 "बनाम 2.6") थी, जो शायद भी योगदान देता था।
जोड़ा लेखक André Paramés, स्रोत

सेगा गेम गियर पर खराब बैटरी लाइफ स्क्रीन में बैकलाइट के कारण होता है। यह एक फ्लोरोसेंट ट्यूब है जो बैटरी को तेज दर से खाती है। हाल ही में कई लोगों ने फ्लोरोसेंट ट्यूब को एल ई डी के साथ बदलने के साथ प्रयोग किया है, यह नाटकीय रूप से बैटरी जीवन को बढ़ाता है, इस प्रकार यह साबित करता है कि मुख्य पावर नाली बैक लाइट से आती है।

5
जोड़ा

मेरी समझ यह है कि अनिवार्य रूप से समय के रंग एलसीडी बड़े ऊर्जा hogs थे। मूल गेम बॉय के साथ प्रतिस्पर्धा करने वाले सभी अन्य रंग हैंडहेल्ड एक ही मुद्दे से पीड़ित हैं। बैकलाइटिंग की पेशकश करने वाले लोगों को भी इसी तरह की पावर नाली से पीड़ित होना पड़ा।

मैं चिपसेट की बिजली खपत के मुद्दे पर टिप्पणी नहीं कर सकता, लेकिन यह भी एक मुद्दा था।

5
जोड़ा
बैकलाइट सबसे बड़ा अपराधी था, मुझे लगता है।
जोड़ा लेखक Shinrai, स्रोत

मुझे लगता है कि बैटरी जीवन गेम कारतूस स्मृति आवंटन के बारे में है: यह कभी-कभी बहुत बड़ा होता है, लेकिन खेलते समय बहुत ही कम होता है (उदाहरण के लिए, ध्वनि हेजहोग )।

इसके अलावा, 5 घंटे से अधिक समय तक चलने वाला रंग और बैटरी एक मजाक है।

संपादित करें

मेरा मतलब यह है कि, कुछ खेलों में, यह कारतूस से बहुत सारी मेमोरी का उपयोग करता है और यदि बहुत सारे रंग होते हैं, तो यह बैटरी को जल्दी से हटा देता है: यह सब कुछ है कि कितने पिक्सल, रंग और मेमोरी लोड हो जाती है। जब गेम धीमा हो जाता है तो यह आसानी से ध्यान देने योग्य होता है।

3
जोड़ा
मैंने इस जवाब को कई बार पढ़ने की कोशिश की है, लेकिन मैं अभी भी समझ नहीं पा रहा हूं कि "बैटरी जीवन का मतलब गेम कार्ट मेमोरी आवंटन के बारे में है, कभी-कभी बड़ा होता है, लेकिन बहुत ही कम समय में"
जोड़ा लेखक Denilson Sá Maia, स्रोत
मेरा मतलब यह है कि कुछ खेलों में कभी-कभी यह कारतूस से स्मृति की आवंटन लोड करता है और यदि रंगों के आवंटित होते हैं तो यह बैटरी को जल्दी से ड्रैंक करता है! वास्तव में यह कितना पिक्सेल, रंग और मेमोरी लोड हो जाती है। सबसे आसान ध्यान देने वाला उदाहरण तब होता है जब सबसे आसान ध्यान देने वाला उदाहरण होता है खेल धीमा हो गया है और बहुत धीमा है! पीएम मुझे अब अगर आप समझ में नहीं आते हैं! संपादित करें: धीमा हो जाता है आप उन्हें गेम गियर के लिए सोनिक 1 में अक्सर देख सकते हैं! AllieRX87 के अनुसार इसे टकराव का पता लगाने के लिए कहा जाता है!
जोड़ा लेखक TheAnimeMurder, स्रोत
हैलो जुपपोटर आपको शो में अच्छा लगा! क्या आप सुपर मारियो 64 हैकर फ्राउबर को जानते हैं! अगर आप करते हैं! उसे कुछ हैक्स के बारे में बात करने के लिए इस मंच पर जाने के लिए कहें!
जोड़ा लेखक TheAnimeMurder, स्रोत
मैंने जवाब दिया जवाब पढ़ें!
जोड़ा लेखक TheAnimeMurder, स्रोत
हाय TheAnimeMurder, गेमिंग में आपका स्वागत है! मैं आगे बढ़ गया और अपना दूसरा उत्तर यहां शामिल किया: यदि आप अपना उत्तर विस्तारित करना चाहते हैं, तो बस नीचे दिए गए "संपादन" लिंक पर क्लिक करें।
जोड़ा लेखक user3389, स्रोत
मुझे पूरा यकीन है कि यह जवाब गलत है। रॉम मेमोरी की मात्रा बिजली नाली के लिए कोई फर्क नहीं पड़ता। अगर अस्थिर स्मृति डीआरएएम थी, तो फिर बिजली की खपत खेल के इस्तेमाल की स्मृति की मात्रा से असंबंधित है। यदि यह एसआरएएम था, तो उपभोग एक समारोह होगा कि प्रत्येक बिट कितनी बार बदलता है। लेकिन, फिर भी, यह बड़ी ऊर्जा नाली के लिए मुख्य कारण नहीं है। मेरा मानना ​​है कि डिजिटल सर्किट अपेक्षाकृत कम वर्तमान में सूखा, जबकि एलसीडी और बैकलाइट बहुत अधिक (प्रतिरोधी भार) सूखा।
जोड़ा लेखक Denilson Sá Maia, स्रोत

"बिल्ट इन" सामग्री के साथ, आप 1.0। * या 1.0.0 का उपयोग करने के रूप में नहीं कर सकते हैं। * संशोधन और प्रतिस्थापन संख्या को कोडित दिनांक / टाइमस्टैम्प के साथ बदल देगा, जो आमतौर पर एक अच्छा तरीका भी है।

अधिक जानकारी के लिए, असेंबली लिंकर दस्तावेज़ देखें / वी टैग।

स्वचालित रूप से संख्याओं को बढ़ाने के लिए, Assembly इन्फ्लो कार्य का उपयोग करें:

AssemblyInfo कार्य

इसे बिल्ड नंबर को स्वचालित रूप से बढ़ाने के लिए कॉन्फ़िगर किया जा सकता है।

2 गॉटचास हैं:

  1. Each of the 4 numbers in the Version string is limited to 65535. This is a Windows Limitation and unlikely to get fixed.
  2. Using with with Subversion requires a small change:

संस्करण संख्या को पुनर्प्राप्त करना काफी आसान है:

Version v = Assembly.GetExecutingAssembly().GetName().Version;
string About = string.Format(CultureInfo.InvariantCulture, @"YourApp Version {0}.{1}.{2} (r{3})", v.Major, v.Minor, v.Build, v.Revision);

और, स्पष्टीकरण के लिए: .NET में या कम से कम सी # में, निर्माण वास्तव में THIRD संख्या है, चौथा नहीं कुछ लोगों के रूप में (उदाहरण के लिए डेल्फी डेवलपर्स जो मेजर.इनर.रिलिज.बिल्ड के लिए उपयोग किए जाते हैं) उम्मीद कर सकते हैं।

.NET में, यह Major.Minor.Build.Revision है।

0
जोड़ा
@ जुगलिंगनटकेस - यह लिंक दृश्य स्टूडियो के वर्तमान संस्करणों के लिए काम करता है, तो यह लिंक सही होगा
जोड़ा लेखक Kraang Prime, स्रोत
@ माइकल स्टम: क्या आप AssemblyInfo कार्य के लिए लिंक अपडेट कर सकते हैं आपका जवाब कृपया? मेरे लिए, यह सही ढंग से लोड नहीं हो रहा है।
जोड़ा लेखक Matt, स्रोत
मुझे बस यह दृश्य स्टूडियो ऐड-इन मिला जो कुछ ऐसा करता है: autobuildversion.codeplex.com
जोड़ा लेखक jrsconfitto, स्रोत
@ सॅनुएल जैक्सन हाहा! हाँ यह होगा। बहुत बुरा मैं 2010 से मेरी टिप्पणियों के साथ नहीं रहना, क्षमा करें! : पी समय और संस्करणों का मार्च हम सभी को परेशान करता है।
जोड़ा लेखक jrsconfitto, स्रोत
क्या इसका मतलब है कि 4 जून 2179 को माइक्रोसॉफ्ट डिफ़ॉल्ट संस्करण संख्या तोड़ जाएगी? (2000 के बाद 65536 वें दिन)
जोड़ा लेखक ThePower, स्रोत
"असेंबलीइन्फो टास्क" लिंक काम नहीं कर रहा है
जोड़ा लेखक Alexandre Cavaloti, स्रोत

कुछ समय पहले मैंने एक त्वरित और गंदे exe लिखा था जो संस्करण # एस को असेंबलीइन्फो में अपडेट करेगा। {Cs / vb} - मैंने rxfind.exe (एक सरल और शक्तिशाली regex- आधारित खोज प्रतिस्थापन उपकरण) का उपयोग भी किया है निर्माण प्रक्रिया के हिस्से के रूप में एक कमांड लाइन से अद्यतन करें। कुछ अन्य हेल्पफूल संकेत:

  1. separate the assemblyinfo into product parts (company name, version, etc.) and assembly specific parts (assembly name etc.). See here
  2. Also - i use subversion, so I found it helpful to set the build number to subversion revision number thereby making it really easy to always get back to the codebase that generated the assembly (e.g. 1.4.100.1502 was built from revision 1502).
0
जोड़ा
यदि यह कोड फ़ाइल ( .cs / .vb) के लिए है, तो आपको इसके बजाय एक T4 टेम्पलेट का उपयोग करना चाहिए।
जोड़ा लेखक BrainSlugs83, स्रोत

मैंने पाया है कि जहां भी उत्पाद संस्करण की आवश्यकता है, निम्न का उपयोग करके अंतिम निर्माण की तारीख को प्रदर्शित करने के लिए यह अच्छी तरह से काम करता है:

System.IO.File.GetLastWriteTime(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString("yyyy.MM.dd.HH.mm.ss")

निम्न की तरह कुछ से संस्करण प्राप्त करने का प्रयास करने के बजाय:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
object[] attributes = assembly.GetCustomAttributes(typeof(System.Reflection.AssemblyFileVersionAttribute), false);
object attribute = null;

if (attributes.Length > 0)
{
    attribute = attributes[0] as System.Reflection.AssemblyFileVersionAttribute;
}
0
जोड़ा
मुझे लगता है कि आपका मतलब यह है: yyyy.MM.dd.HHmm yyyy.MM.dd.HHMM नहीं।
जोड़ा लेखक JHubbard80, स्रोत

आप किस स्रोत नियंत्रण प्रणाली का उपयोग कर रहे हैं?

उनमें से लगभग सभी के पास $ Id $ टैग का कुछ रूप है जो फ़ाइल की जांच होने पर विस्तारित हो जाता है।

मैं आमतौर पर इसे संस्करण संख्या के रूप में प्रदर्शित करने के लिए हैकर का कुछ रूप उपयोग करता हूं।

दूसरा विकल्प बिल्ड नंबर के रूप में दिनांक का उपयोग करने के लिए उपयोग किया जाता है: 080803-1448

0
जोड़ा
क्या आप विस्तार कर सकते हैं "उनमें से लगभग सभी में $ Id $ टैग का कुछ रूप है जो फ़ाइल में चेक इन होने पर विस्तारित हो जाता है"। विशेष रूप से, क्या आप subversiion के लिए जानते हैं?
जोड़ा लेखक Greg B, स्रोत

VS.NET विधानसभा संस्करण को 1.0 पर डिफ़ॉल्ट करता है। * और ऑटो-इंक्रिमेंटिंग के दौरान निम्न तर्क का उपयोग करता है: यह 1 जनवरी, 2000 से दिनों की संख्या में निर्माण भाग सेट करता है, और मध्यरात्रि से सेकंड की संख्या में संशोधन भाग सेट करता है, स्थानीय समय, दो से विभाजित। यह MSDN आलेख देखें।

असेंबली संस्करण एक assemblyinfo.vb या assemblyinfo.cs फ़ाइल में स्थित है। फ़ाइल से:

' Version information for an assembly consists of the following four values:
'
'      Major Version
'      Minor Version 
'      Build Number
'      Revision
'
' You can specify all the values or you can default the Build and Revision Numbers 
' by using the '*' as shown below:
'  

 
 
0
जोड़ा
आरंभिक तिथि सहित धन्यवाद: <�कोड> 1 जनवरी, 2000
जोड़ा लेखक kiewic, स्रोत

यदि आप एक ऑटो incrementing संख्या चाहते हैं जो प्रत्येक बार संकलन किया जाता है, तो आप VersionUpdater का उपयोग कर सकते हैं एक पूर्व निर्माण घटना। यदि आप प्राथमिकता देते हैं तो आपका प्री-बिल्ड इवेंट बिल्ड कॉन्फ़िगरेशन की जांच कर सकता है ताकि संस्करण संख्या केवल रिलीज़ बिल्ड (उदाहरण के लिए) के लिए बढ़ेगी।

0
जोड़ा
दिलचस्प। मेरे पास एक ही नाम के साथ सालों से मेरा खुद का अधिकार है और मुझे नहीं पता था कि एक अस्तित्व में है (हालांकि मैंने इसे हाल ही में ऑनलाइन रखा है): github.com/rjamesnw/VersionUpdater
जोड़ा लेखक James Wilkins, स्रोत

[विजुअल स्टूडियो 2017, .csproj गुण]

अपने पैकेजवर्सन / संस्करण / असेंबली वर्जन प्रॉपर्टी (या किसी अन्य प्रॉपर्टी) को स्वचालित रूप से अपडेट करने के लिए, पहले, एक नया Microsoft.build.Utilities.Task क्लास बनाएं जो आपके वर्तमान बिल्ड नंबर को प्राप्त करे और अपडेट की गई संख्या वापस भेज दे (मैं सिर्फ उस वर्ग के लिए एक अलग परियोजना बनाने की सलाह देते हैं)।

मैं मैन्युअल रूप से major.minor संख्याओं को अद्यतन करता हूं, लेकिन एमएसबिल्ड को बिल्ड नंबर (1.1। 1 , 1.1। 2 , 1.1। 3 , आदि :)

using Microsoft.Build.Framework;
using System;
using System.Collections.Generic;
using System.Text;

public class RefreshVersion : Microsoft.Build.Utilities.Task
{
    [Output]
    public string NewVersionString { get; set; }
    public string CurrentVersionString { get; set; } 

    public override bool Execute()
    {       
        Version currentVersion = new Version(CurrentVersionString ?? "1.0.0");

        DateTime d = DateTime.Now;
        NewVersionString = new Version(currentVersion.Major, 
            currentVersion.Minor, currentVersion.Build+1).ToString();
        return true;
    }

}

फिर अपने हाल ही में बनाए गए कार्य को MSBuild प्रक्रिया पर कॉल करें जो आपके .csproj फ़ाइल पर अगला कोड जोड़ रहा है:

    
...


   
                       
   
   
   

...

 ..
 1.1.4
 ..

विजुअल स्टूडियो पैक प्रोजेक्ट विकल्प चुनते समय (बिल्ड करने से पहले कार्य निष्पादित करने के लिए बस पहले लक्ष्य> = "बिल्ड करें" में बदलें) नया संस्करण संख्या, और XmlPoke </की गणना करने के लिए रीफ्रेशवर्सन कोड ट्रिगर किया जाएगा। कोड> कार्य तदनुसार आपके .csproj प्रॉपर्टी को अपडेट करेगा (हाँ, यह फ़ाइल को संशोधित करेगा)।

NuGet पुस्तकालयों के साथ काम करते समय, मैं पिछले उदाहरण को अगले निर्माण कार्य को जोड़कर पैकेज को NuGet रिपोजिटरी में भी भेजता हूं।



c:\nuget\nuget is where I have the NuGet client (remember to save your NuGet API key by calling nuget SetApiKey or to include the key on the NuGet push call).

बस अगर यह किसी की मदद करता है ^ _ ^।

0
जोड़ा