c# - visual - विजुअल बेसिक क्या है




क्या विजुअल स्टूडियो का उपयोग करते समय मैं स्वचालित रूप से फ़ाइल निर्माण संस्करण में वृद्धि कर सकता हूं? (16)

मैं बस सोच रहा था कि विजुअल स्टूडियो (2005) का उपयोग करके मैं अपनी फ़ाइलों के निर्माण (और संस्करण?) को स्वचालित रूप से कैसे बढ़ा सकता हूं।

यदि मैं C:\Windows\notepad.exe कहने के गुणों को देखता हूं, तो संस्करण टैब "फ़ाइल संस्करण: 5.1.2600.2180" देता है। मैं इन शांत संख्याओं को अपने डीएल के संस्करण में भी प्राप्त करना चाहता हूं, संस्करण 1.0.0.0 नहीं, जो इसका सामना करते हैं, यह थोड़ा सा सुस्त है।

मैंने कुछ चीजों की कोशिश की, लेकिन यह बॉक्स ऑफ कार्यक्षमता प्रतीत नहीं होता है, या शायद मैं गलत जगह (सामान्य रूप में) देख रहा हूं।

मैं मुख्य रूप से वेब परियोजनाओं के साथ काम करता हूं ....

मैंने दोनों को देखा:

  1. http://www.codeproject.com/KB/dotnet/Auto_Increment_Version.aspx
  2. http://www.codeproject.com/KB/dotnet/build_versioning.aspx

और मैं विश्वास नहीं कर सका कि कुछ ऐसा करने का प्रयास मानक अभ्यास है।

संपादित करें: यह वीएस2005 में काम नहीं करता है, जहां तक ​​मैं कह सकता हूं ( http://www.codeproject.com/KB/dotnet/AutoIncrementVersion.aspx )


संस्करण {major}.{year}.1{date}.1{time} कैसे प्राप्त करें {major}.{year}.1{date}.1{time}

यह एक तरह का प्रयोगात्मक है, लेकिन मुझे यह पसंद है। जेफ एटवुड @ कोडिंग हॉरर ( link ) से प्रेरित।

परिणामस्वरूप संस्करण संख्या 1.2016.10709.11641 9 1.2016.10709.11641 (जिसका अर्थ 2016-07-09 16:41) बन जाता है, जो इसके लिए अनुमति देता है

  • गरीब मनुष्य शून्य पैडिंग (बेवकूफ अग्रणी 1 एस के साथ)
  • संस्करण संख्या में एम्बेडेड लगभग मानव पठनीय स्थानीय डेटटाइम
  • वास्तव में प्रमुख तोड़ने के बदलाव के लिए अकेले प्रमुख संस्करण छोड़ना।

अपनी प्रोजेक्ट में एक नया आइटम जोड़ें, सामान्य -> ​​टेक्स्ट टेम्पलेट का चयन करें, इसे CustomVersionNumber और (जहां लागू हो) नाम दें, Properties/AssemblyInfo.cs में AssemblyFileVersion CustomVersionNumber और CustomVersionNumber टिप्पणी करें।

फिर, जब इस फ़ाइल को सहेजते हैं, या प्रोजेक्ट का निर्माण करते हैं, तो यह बनाई गई .tt फ़ाइल के तहत उप-आइटम के रूप में स्थित एक .cs फ़ाइल को पुन: उत्पन्न करेगा।

<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>

//
// This code was generated by a tool. Any changes made manually will be lost
// the next time this code is regenerated.
//

using System.Reflection;

<#
    var date = DateTime.Now;
    int major = 1;
    int minor = date.Year;
    int build = 10000 + int.Parse(date.ToString("MMdd"));
    int revision = 10000 + int.Parse(date.ToString("HHmm"));
#>

[assembly: AssemblyVersion("<#= $"{major}.{minor}.{build}.{revision}" #>")]
[assembly: AssemblyFileVersion("<#= $"{major}.{minor}.{build}.{revision}" #>")]

AssemblyInfo.cs फ़ाइल खोलें और बदलें

// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

सेवा मेरे

[assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyFileVersion("1.0.0.0")]

आप इसे प्रोजेक्ट -> गुण -> असेंबली जानकारी पर जाकर आईडीई में कर सकते हैं

हालांकि यह आपको असेंबली संस्करण को स्वचालित रूप से बढ़ाने की अनुमति देगा और आपको देगा

असेंबली फ़ाइल संस्करण: इस क्षेत्र में एक वाइल्डकार्ड ("*") की अनुमति नहीं है

संदेश बॉक्स यदि आप फ़ाइल संस्करण फ़ील्ड में * को रखने का प्रयास करते हैं।

तो बस assemblyinfo.cs खोलें और इसे मैन्युअल रूप से करें।


VS2012 में AssemblyInfo काम बदलना। यह अजीब लगता है कि विजुअल स्टूडियो में इसके लिए और अधिक समर्थन नहीं है, आपको लगता है कि यह बिल्ड / रिलीज प्रक्रिया का मूल हिस्सा था।


अभी के रूप में, मेरे आवेदन के लिए,

string ver = Application.ProductVersion;

ver = 1.0.3251.27860

मूल्य 3251 1/1/2000 के बाद से दिनों की संख्या है। मैं इसे अपने आवेदन की स्प्लैश स्क्रीन पर संस्करण निर्माण दिनांक लगाने के लिए उपयोग करता हूं। किसी उपयोगकर्ता से निपटने पर, मैं निर्माण की तारीख से पूछ सकता हूं जो कि कुछ लंबी संख्या से संवाद करना आसान है।

(मैं एक छोटी सी कंपनी का समर्थन करने वाला एक व्यक्ति हूं। यह दृष्टिकोण आपके लिए काम नहीं कर सकता है।)


दृश्य स्टूडियो 2008 में, निम्नलिखित कार्य करता है।

AssemblyInfo.cs फ़ाइल ढूंढें और इन 2 पंक्तियों को ढूंढें:

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

आप इसे बदलने की कोशिश कर सकते हैं:

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

लेकिन यह आपको वांछित परिणाम नहीं देगा, आप 1.0 के उत्पाद संस्करण के साथ समाप्त हो जाएंगे । * और 1.0.0.0 का एक फ़ाइल संस्करण। आप क्या चाहते हैं नहीं!

हालांकि, अगर आप इन पंक्तियों में से दूसरे को हटा देते हैं और बस:

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

फिर संकलक फ़ाइल संस्करण को उत्पाद संस्करण के बराबर सेट करेगा और आपको स्वचालित रूप से वृद्धि उत्पाद और फ़ाइल संस्करण जो आपके सिंक में हैं, का वांछित परिणाम प्राप्त होगा। जैसे 1.0.3266.92689


प्रत्येक बार जब मैं बिल्ड करता हूं तो यह कम-से-कम महत्वपूर्ण अंकों को स्वतः बढ़ाता है।

मुझे कोई जानकारी नहीं है कि दूसरों को कैसे अपडेट किया जाए, लेकिन आपको कम से कम पहले से ही देखना चाहिए ...


प्रोजेक्ट पर जाएं | गुण और फिर असेंबली सूचना और फिर असेंबली संस्करण और अंतिम * या दूसरे से अंतिम बॉक्स में एक * डाल दिया (आप मेजर या माइनर घटकों को स्वतः बढ़ा नहीं सकते हैं)।


मैं इस दृष्टिकोण का उपयोग कर रहा हूं https://.com/a/827209/3975786 टी 4 टेम्पलेट को "समाधान आइटम" में रखकर और प्रत्येक प्रोजेक्ट के भीतर "लिंक के रूप में जोड़ें" के साथ इसका उपयोग कर रहा हूं।


मैंने फ़ाइल संस्करण को स्वचालित रूप से बढ़ाने के लिए एक एप्लिकेशन बनाया है।

  1. Application डाउनलोड करें
  2. प्री-बिल्ड इवेंट कमांड लाइन में निम्न पंक्ति जोड़ें

    सी: \ temp \ वृद्धि FileVersion.exe $ (SolutionDir) \ Properties \ AssemblyInfo.cs

  3. परियोजना का निर्माण करें

इसे आसान रखने के लिए ऐप केवल एक त्रुटि होने पर संदेशों को फेंक देता है, यह पुष्टि करने के लिए कि यह ठीक काम करता है, आपको 'असेंबली सूचना' में फ़ाइल संस्करण की जांच करने की आवश्यकता होगी।

नोट: फ़ील्ड को पॉप्युलेट करने के लिए आपको 'असेंबली सूचना' बटन के लिए विजुअल स्टूडियो में समाधान को फिर से लोड करना होगा, हालांकि आपकी आउटपुट फ़ाइल में अद्यतन संस्करण होगा।

सुझावों और अनुरोधों के लिए कृपया मुझे [email protected] पर ईमेल करें



विधानसभा FileVersion संपत्ति में वृद्धि (डेटटाइम) जानकारी प्राप्त करने के लिए जिसका कोई निर्भरता तोड़ने का लाभ नहीं है।

बूग के समाधान पर बिल्डिंग (शायद मेरे लिए काम नहीं किया, शायद वीएस -2008 की वजह से?), आप फ़ाइल बनाने वाले प्री-बिल्ड इवेंट के संयोजन का उपयोग कर सकते हैं, उस फ़ाइल को जोड़कर (इसके संस्करण गुणों सहित) और फिर पढ़ने के लिए एक तरीका का उपयोग कर सकते हैं उन मूल्यों को फिर से। अर्थात्..

पूर्व बिल्ड-घटना:

echo [assembly:System.Reflection.AssemblyFileVersion("%date:~-4,4%.%date:~-7,2%%date:~-10,2%.%time:~0,2%%time:~3,2%.%time:~-5,2%")] > $(ProjectDir)Properties\VersionInfo.cs

अपनी परियोजना में परिणामी VersionInfo.cs फ़ाइल (गुण उपफोल्डर) शामिल करें

कोड वापस पाने के लिए कोड (सेकंड से सेकंड तक):

var version = assembly.GetName().Version;
var fileVersionString = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location).FileVersion;
Version fileVersion = new Version(fileVersionString);
var buildDateTime = new DateTime(fileVersion.Major, fileVersion.Minor/100, fileVersion.Minor%100, fileVersion.Build/100, fileVersion.Build%100, fileVersion.Revision);

बहुत आरामदायक नहीं .. भी, मुझे नहीं पता कि यह बहुत बल-पुनर्निर्माण करता है (क्योंकि फ़ाइल हमेशा बदलती है)।

उदाहरण के लिए आप इसे बेहतर बना सकते हैं उदाहरण के लिए यदि आप केवल कुछ ही मिनट / घंटे (एक अस्थायी फ़ाइल का उपयोग करके और वास्तविक संस्करणInfo.cs को प्रतिलिपि / ओवरराइट करते हुए केवल WindowsInfo.cs फ़ाइल को अद्यतन करते हैं, तो पर्याप्त परिवर्तन पता चला है)। मैंने इसे एक बार सफलतापूर्वक किया।


शायद यहां जवाब देने में बहुत देर हो चुकी है लेकिन उम्मीद है कि किसी की व्यस्त समस्या को हल करेगा।

PowerShell स्क्रिप्ट का उपयोग कर अपनी सभी परियोजनाओं के असेंबली संस्करण को बदलने का एक स्वचालित तरीका। यह लेख आपकी कई समस्याओं का समाधान करेगा।


संस्करण संख्या को "1.0। *" पर सेट करें और यह स्वचालित रूप से तिथि के साथ अंतिम दो नंबर (कुछ बिंदुओं के दिनों में) और समय (आधी रात से आधा सेकंड) भर जाएगा


संस्करण संख्या प्राप्त करने के लिए प्रयास करें

 System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
 System.Reflection.AssemblyName assemblyName = assembly.GetName();
 Version version = assemblyName.Version;

संस्करण संख्या सेट करने के लिए, AssemblyInfo.cs बनाएं / संपादित करें

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

एक साइड नोट के रूप में, तीसरा नंबर 2/1/2000 से दिनों की संख्या है और चौथा नंबर दिन में कुल सेकंड की मात्रा का आधा है। तो यदि आप मध्यरात्रि में संकलित करते हैं तो यह शून्य होना चाहिए।


Cake विधानसभा इन्फ फाइलों को पैचिंग का समर्थन करता है। हाथों में केक के साथ आपके पास स्वचालित संस्करण वृद्धि को लागू करने के अनंत तरीके हैं।

सी # कंपाइलर जैसे वर्जनिंग संस्करण का सरल उदाहरण करता है:

Setup(() =>
{
    // Executed BEFORE the first task.
    var datetimeNow = DateTime.Now;
    var daysPart = (datetimeNow - new DateTime(2000, 1, 1)).Days;
    var secondsPart = (long)datetimeNow.TimeOfDay.TotalSeconds/2;
    var assemblyInfo = new AssemblyInfoSettings
    {
        Version = "3.0.0.0",
        FileVersion = string.Format("3.0.{0}.{1}", daysPart, secondsPart)
    };
    CreateAssemblyInfo("MyProject/Properties/AssemblyInfo.cs", assemblyInfo);
});

यहाँ:

  • संस्करण - असेंबली संस्करण है। सबसे अच्छा अभ्यास प्रमुख संस्करण संख्या को लॉक करना और शून्य के साथ शेष छोड़ना है (जैसे "1.0.0.0")।
  • FileVersion - असेंबली फ़ाइल संस्करण है।

ध्यान दें कि आप न केवल संस्करणों को पैच कर सकते हैं बल्कि अन्य सभी आवश्यक जानकारी भी पा सकते हैं







assemblyinfo