.NET असेंबली w/बाहर CC.NET में एसवीएन संशोधन संस्करण

क्या .NET असेंबली की संस्करण स्ट्रिंग में एसवीएन रिपोजिटरी संशोधन संख्या शामिल करने का कोई तरीका है? Major.Minor.SVNRev की तरह कुछ

मैंने CC.NET (हालांकि वास्तव में एएसपी.नेट पर) के साथ ऐसा करने का उल्लेख देखा है, लेकिन क्या कोई अतिरिक्त सॉफ्टवेयर के बिना ऐसा करने का कोई तरीका है? मैंने बैच स्क्रिप्ट का उपयोग करने से पहले सी/सी ++ में समान चीजें की हैं, लेकिन संस्करण संख्या को पढ़कर पूरा किया गया था, फिर स्क्रिप्ट को हर बार "ver.h" नामक फ़ाइल लिखने के प्रभाव के साथ कुछ लिखा गया था:

#define MAJORVER 4
#define MINORVER 23
#define SOURCEVER 965

फिर हम संस्करण स्ट्रिंग उत्पन्न करने के लिए इन परिभाषाओं का उपयोग करेंगे।

क्या ऐसा कुछ .NET के लिए संभव है?

0
ro fr bn
स्टैक ओवरफ्लो फुटेज में संशोधन संख्या दिखाता है, शायद जेफ हमें बता सकता है कि वह ऐसा कैसे करता है।
जोड़ा लेखक Jedi Master Spooky, स्रोत
मेरा जवाब देखें - एक जिथब प्रोजेक्ट है जो वही करता है
जोड़ा लेखक Tim, स्रोत
यह एक उत्कृष्ट है - दोनों दिनांक और svn संस्करण संख्या fatlemon.co.uk/2011/11/…
जोड़ा लेखक Tim, स्रोत
उपरोक्त लिंक सही लोड नहीं हो सकता है। github url नीचे मेरे जवाब में है। - एक समाधान के लिए जो दिनांक और svn rev संख्या का उपयोग करता है।
जोड़ा लेखक Tim, स्रोत

7 उत्तर

svn जानकारी, आपको उस संस्करण को बताती है, जिस पर आप हैं, आप अपने प्रोजेक्ट पर वीएस में "प्री-बिल्ड" ईवेंट बना सकते हैं ताकि svn जानकारी चलाकर assemblyinfo.cs उत्पन्न हो सकें और घर के बढ़ते कमांड लाइन ऐप के साथ अपने परिणामों को पार्स कर सकें।

मैंने पहले यह किया है, लेकिन जल्दी से सीसीनेट को एक चर के रूप में इसे निष्क्रिय करने के लिए स्विच किया गया है।

0
जोड़ा

यदि आप ProjectInfo.cs प्रोजेक्ट में संस्करण संख्या को अद्यतन करना चाहते हैं तो आपको इस आलेख में रुचि हो सकती है:

कोडप्रोजेक्ट: अपने विजुअल स्टूडियो प्रोजेक्ट्स में सबवर्जन संशोधन संख्या का उपयोग करें

यदि आप एसवीएन कीवर्ड सक्षम करते हैं तो हर बार जब आप प्रोजेक्ट सबवर्सन में चेक करते हैं तो कुछ "कीवर्ड" के लिए आपकी फाइल स्कैन करते हैं और कुछ जानकारी वाले कीवर्ड बदलते हैं।

     

उदाहरण के लिए, मेरी स्रोत फ़ाइलों के शीर्ष पर मैं एक शीर्षलेख बनाने वाले निम्नलिखित कीवर्ड रखता हूं:

     

'$ लेखक: $
  '$ क्रमांक: $
  '$ रेव: $

     

जब मैं इस फ़ाइल को सबवर्जन में चेक करता हूं तो इन कीवर्ड को निम्न के साथ प्रतिस्थापित किया जाता है:

     

'$ लेखक: पॉल्बेटरिज $
  '$ आईडी: myfile.vb 145 2008-07-16 15: 24: 2 9 जेड पॉल्बेटरिज $
  '$ रेव: 145 $

0
जोड़ा
उस आलेख से: "$ रेव $ कीवर्ड का उपयोग करने की सीमा यह है कि यह आपको केवल फ़ाइल का संशोधन देता है, न कि पूरे प्रोजेक्ट में, इसलिए $ rev $ कीवर्ड का उपयोग करके मेरे सॉफ़्टवेयर संस्करण के हिस्से के रूप में काम नहीं किया जा सकता है।" तो आपको इसे अद्यतन रखने के लिए प्रत्येक संशोधन पर assembly.cs को संपादित/प्रतिबद्ध करना होगा?
जोड़ा लेखक Lucas, स्रोत

Have a look at SubWCRev - http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html

असेंबली संस्करण संख्या आमतौर पर assemblyinfo.cs में होती है

0
जोड़ा
मैंने एक नया जवाब के रूप में एक कार्यान्वयन उदाहरण जोड़ा।
जोड़ा लेखक R. Schreurs, स्रोत

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

0
जोड़ा
@ सूपडॉग: एक संशोधन "अनचाहे" के लिए आपका सुझाव एक अच्छा है जिसे मैंने स्वयं माना है। हालांकि यह कुछ चीजों को जटिल बनाता है, क्योंकि आपको संशोधन से घटाए जाने के लिए ऑफसेट चुनना होगा और यह जांचना याद रखना होगा कि प्रत्येक बार major.minor परिवर्तनों को ऑफ़सेट करने की आवश्यकता है या नहीं। इसे बनाए रखने के लिए एक और बात है। जब आपके पास हमारे मामले में हजारों संशोधनों के साथ भंडार होते हैं, तो संज्ञानात्मक भार एक मुद्दा है।
जोड़ा लेखक Wim Coenen, स्रोत
अच्छी बात। प्रति दिन 20 कामों पर यह 8 साल तक टिकेगा। 100 काम 2 साल से कम समय तक चलेंगे। यह छोटी परियोजनाओं के लिए ठीक हो सकता है। निश्चित रूप से बड़े लोगों के लिए अच्छा नहीं है।
जोड़ा लेखक Tim, स्रोत
@ टिम, केवल अगर परियोजना सदस्य सप्ताह में 7 दिन पूर्णकालिक काम कर रहे हैं :-) 5 दिन के कार्य सप्ताह को मानते हुए, अनुमान क्रमश: 13 और 2,6 वर्ष हैं। पूर्व मामले के लिए, अंतर महत्वपूर्ण हो सकता है।
जोड़ा लेखक Péter Török, स्रोत
आप एक ऋणात्मक ऑफसेट भी निर्दिष्ट कर सकते हैं। SubWcRev मैन्युअल, अध्याय 6 : $ से WCREV- $, $ WCREV + $ + या - चार जोड़े या घटाए गए मान के बाद, कार्यशील प्रति में उच्चतम प्रतिबद्धता संशोधन के साथ प्रतिस्थापित किया गया। उदाहरण के लिए: $ WCREV-1000 $ । इसका उपयोग संशोधन संख्या को रीसेट/कम करने के लिए किया जा सकता है, उदाहरण के लिए, प्रमुख बढ़ गया है।
जोड़ा लेखक R. Schreurs, स्रोत
इसके अलावा आपको केवल पिछले संस्करण के साथ संगतता तोड़ने पर असेंबली संस्करण को बदलना चाहिए - आपको असेंबली संस्करण में संस्करण संस्करण जानकारी नहीं डालना चाहिए। संस्करण जानकारी बनाएं और असेंबलीफाइलवर्सन में डाला जाना चाहिए, जो 32-बिट संख्याओं का समर्थन करता है। stackoverflow.com/questions/64602 देखें।
जोड़ा लेखक Darryl, स्रोत
@WimCoenen: मुझे नहीं लगता कि यह उतना जटिल है जितना। प्रमुख-मामूली-संशोधन द्वारा आपको पर्याप्त संदर्भ देकर, मेरा मतलब यह है कि यह उन पहले तीन नंबरों को देखकर एसवीएन संशोधन के क्षेत्र की पहचान करने के लिए पर्याप्त रूप से आसान होना चाहिए (और फिर आप कितनी बार हल कर सकते हैं पूर्ण एसवीएन संशोधन प्राप्त करने के लिए बिल्ड नंबर पर 65536 जोड़ने के लिए। मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप जानकारी का उपयोग कैसे करना चाहते हैं और स्वचालन के किस स्तर की आवश्यकता है। किसी भी दर पर, मैं ज्यादातर कंबल कथन से असहमत था कि "आपको नहीं करना चाहिए", क्योंकि ज्यादातर लोगों के लिए यह एक पर्याप्त योजना
जोड़ा लेखक soupdog, स्रोत
-1, यह एक बहुत अच्छा कारण नहीं है। 65536 काम करता है ज्यादातर उत्पादों के लिए एक व्यावहारिक सीमा नहीं है। और यहां तक ​​कि उन संख्याओं के लिए जो उस संख्या से अधिक हैं, प्रमुख-नाबालिग-संशोधन को सही मूल्य के संशोधन को "अनचाहे" करने के लिए पर्याप्त संदर्भ देना चाहिए (यदि आपके पास निश्चित रूप से 64 एपी आपके ऐप के प्रत्येक संशोधन के लिए नहीं है, तो आप समझदारी से संस्करण कर रहे हैं)।
जोड़ा लेखक soupdog, स्रोत

एक और जवाब में उल्लेख किया गया है कि संख्या के आकार की सीमा के कारण एसवीएन संशोधन संख्या एक अच्छा विचार नहीं हो सकती है।

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

इसे .NET प्रोजेक्ट में जोड़ना सरल है - बहुत कम काम करने की आवश्यकता है।

Here is a github project that addresses this https://github.com/AndrewFreemantle/When-The-Version/downloads

निम्नलिखित यूआरएल धीरे-धीरे लोड हो सकता है लेकिन यह काम कैसे करें (आसान और छोटा 3 या 4 कदम) के चरण-दर-चरण स्पष्टीकरण है

http: //www.fatlemon.co.uk/2011/11/wtv-automatic-date-based-version-numbering-for-net-with-whentheversion/

0
जोड़ा
यह समाधान त्वरित और प्रभावी है
जोड़ा लेखक Simon F, स्रोत

असेंबली में संशोधन जानकारी को स्वचालित रूप से अपडेट करने के लिए यहां और सी # उदाहरण है। यह विल डीन के जवाब पर आधारित है, जो बहुत विस्तृत नहीं है।

उदाहरण :

  1. Copy AssemblyInfo.cs to AssemblyInfoTemplate.cs in the project's folder Properties.
  2. Change the Build Action to None for AssemblyInfoTemplate.cs.
  3. Modify the line with the AssemblyFileVersion to:

    [assembly: AssemblyFileVersion("1.0.0.$WCREV$")]

  4. Consider adding:

    [assembly: AssemblyInformationalVersion("Build date: $WCNOW=%Y-%m-%d %H:%M:%s$; Revision date: $WCDATE=%Y-%m-%d %H:%M:%s$; Revision(s) in working copy: $WCRANGE$$WCMODS?; WARNING working copy had uncommitted modifications:$.")],

    which will give details about the revision status of the source the assembly was build from.

  5. Add the following Pre-build event to the project file properties:

    subwcrev "$(SolutionDir)." "$(ProjectDir)Properties\AssemblyInfoTemplate.cs" "$(ProjectDir)Properties\AssemblyInfo.cs" -f

  6. Consider adding AssemblyInfo.cs to the svn ignore list. Substituted revision numbers and dates will modify the file, which results in insignificant changes and revisions and $WCMODS$ will evaluate to true. AssemblyInfo.cs must, of course, be included in the project.

विम कोएनेन द्वारा आपत्तियों के जवाब में, मैंने देखा कि, डेरिल द्वारा सुझाए गए सुझावों के विपरीत, असेंबलीफाइलवर्जन भी नहीं समर्थन संख्या 2 ^ 16 से ऊपर करता है। निर्माण पूरा हो जाएगा, लेकिन वास्तविक असेंबली में फ़ाइल संस्करण संपत्ति असेंबलीफाइलवर्सन मॉड्यूलो 65536 होगी। इस प्रकार, 1.0.0.65536 के साथ-साथ 1.0.0.131072 1.0.0.0, आदि उत्पन्न होगा। इस उदाहरण में, विधानसभा सूचनात्मक संपत्ति में हमेशा सही संशोधन संख्या होती है। यदि आप इसे एक महत्वपूर्ण मुद्दा मानते हैं तो आप चरण 3 छोड़ सकते हैं।

संपादित करें: थोड़ी देर के लिए इस समाधान का उपयोग करने के बाद कुछ अतिरिक्त जानकारी।

  1. It now use AssemblyInfo.cst rather than AssemblyInfoTemplate.cs, because it will automatically have Build Action option None, and it will not clutter you Error list, but you'll loose syntax highlighting.
  2. I've added two tests to my AssemblyInfo.cst files:

    #if(!DEBUG)    
        $WCMODS?#error Working copy has uncommitted modifications, please commit all modifications before creating a release build.:$ 
    #endif 
    #if(!DEBUG)       
        $WCMIXED?#error Working copy has multiple revisions, please update to the latest revision before creating a release build.:$ 
    #endif
    

    Using this, you will normally have to perform a complete SVN Update, after a commit and before you can do a successful release build. Otherwise, $WCMIXED will be true. This seems to be caused by the fact that the committed files re at head revision after the commit, but other files not.

  3. I have had some doubts whether the first parameter to subwcrev, "$(SolutionDir)", which sets the scope for checking svn version info, does always work as desired. Maybe, it should be $(ProjectDir), if you are content if each individual assembly is in a consistent revision.

Addition To answer the comment by @tommylux.

SubWcRev का उपयोग आपके प्रोजेक्ट में किसी भी फाइल के लिए किया जा सकता है। यदि आप किसी वेब पेज में संशोधन जानकारी प्रदर्शित करना चाहते हैं, तो आप इस VersionInfo टेम्पलेट का उपयोग कर सकते हैं:

public class VersionInfo
{       
    public const int RevisionNumber = $WCREV$;
    public const string BuildDate = "$WCNOW=%Y-%m-%d %H:%M:%s$";
    public const string RevisionDate = "$WCDATE=%Y-%m-%d %H:%M:%s$";
    public const string RevisionsInWorkingCopy = "$WCRANGE$";
    public const bool UncommitedModification = $WCMODS?true:false$;
}

AssemblyInfo.cst के लिए एक प्री-बिल्ड इवेंट जोड़ें और आपके पास सभी प्रासंगिक सबवर्सन जानकारी तक आसानी से पहुंच होगी।

0
जोड़ा
+1 मेरी राय में यह सबसे अच्छा जवाब है।
जोड़ा लेखक Jonathon Reinhart, स्रोत
@tommylux 2) उत्तर में मेरा जोड़ा देखें।
जोड़ा लेखक R. Schreurs, स्रोत
@ 100r, मैंने फ़ाइल नामों को सही तरीके से लिखा है जिन्हें मैंने गलत लिखा है। मुझे उम्मीद है कि यह आपके भ्रम को हल करेगा। यदि नहीं, तो कृपया मुझे बताएं।
जोड़ा लेखक R. Schreurs, स्रोत
क्या आप इस दूसरे भाग को विस्तारित कर सकते हैं। मैं इसे पूरी तरह से समझ नहीं पा रहा हूं। आपने AssemblyInfo.cs को AssemblyInfo.cst में बदल दिया है? या? टेम्पलेट में क्या हो रहा है? आपने इन नए परीक्षणों को कहां जोड़ा? फ़ाइल के किस हिस्से में? महान जवाब बीटीडब्ल्यू!
जोड़ा लेखक 100r, स्रोत
अब यह और स्पष्ट है। धन्यवाद :)
जोड़ा लेखक 100r, स्रोत
सहमत हैं, यह सही जवाब है, न केवल किसी उपकरण के बारे में जानकारी का एक लिंक जो उपयोग कर सकता है।
जोड़ा लेखक soupdog, स्रोत
यह वास्तव में अच्छा लगता है, लेकिन फिर आप एएसपी पेज में इसे कैसे प्रिंट करेंगे? यानी: <% $ गुण: असेंबली वर्जन%>
जोड़ा लेखक tommylux, स्रोत
वापस पाने के लिए धन्यवाद। मैं यह नहीं देख सका कि कक्षा में काम करने के लिए इसे कैसे प्राप्त किया जाए। मैं कक्षाओं से अत्यधिक परिचित नहीं हूं। त्रुटि ";" अपेक्षित होना। डब्ल्यूसीआरईवी वर्तमान संदर्भ में मौजूद नहीं है। मैंने अपने संदर्भों में प्रतिबिंब जोड़ा। हालांकि, मैंने इसे उपयोग करके आवश्यक प्रिंट प्रिंट करने का प्रबंधन किया: RevisionInfo.InnerText = System.Diagnostics.FileVersionInfo.GetVersionInfo (Assembly.जी और zwnj; etExecutingAssembly (& zwnj;)। स्थान) .FileVers और zwnj; आयन। टॉस्ट्रिंग (); ऐसा लगता है कि सबवर्सन से सही बिल्ड नंबर है। आपके उत्तर के लिए धन्यवाद, मेरे पास यह काम है हाला
जोड़ा लेखक tommylux, स्रोत

आप एक साझा असेंबली संस्करण फ़ाइल का उपयोग कर सकते हैं जिसे आप अपनी सभी परियोजनाओं में संदर्भित कर सकते हैं।

UppercuT does this - http://ferventcoder.com/archive/2009/05/21/uppercut---automated-builds---versionbuilder.aspx

यह आपको एक विचार देगा कि आप अपने असेंबली में संस्करण प्राप्त करने के लिए क्या कर सकते हैं।

0
जोड़ा