खोज…


टिप्पणियों

फ़ाइल नाम AssemblyInfo.cs Info.cs को स्रोत फ़ाइल के रूप में कन्वेंशन द्वारा उपयोग किया जाता है, जहां डेवलपर्स मेटाडेटा विशेषताओं को रखते हैं जो संपूर्ण विधानसभा का निर्माण करते हैं।

[AssemblyTitle]

इस विशेषता का उपयोग इस विशेष असेंबली को एक नाम देने के लिए किया जाता है।

[assembly: AssemblyTitle("MyProduct")]

[AssemblyProduct]

इस विशेषता का उपयोग उस उत्पाद का वर्णन करने के लिए किया जाता है जो इस विशेष विधानसभा के लिए है। एकाधिक असेंबली एक ही उत्पाद के घटक हो सकते हैं, जिस स्थिति में वे सभी इस विशेषता के लिए समान मूल्य साझा कर सकते हैं।

[assembly: AssemblyProduct("MyProduct")]

ग्लोबल और स्थानीय असेंबलीइन्फो

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

GlobalAssemblyInfo.cs

using System.Reflection;
using System.Runtime.InteropServices;
//using Stackoverflow domain as a made up example    

// It is common, and mostly good, to use one GlobalAssemblyInfo.cs that is added 
// as a link to many projects of the same product, details below
// Change these attribute values in local assembly info to modify the information.
[assembly: AssemblyProduct("Stackoverflow Q&A")]
[assembly: AssemblyCompany("Stackoverflow")]
[assembly: AssemblyCopyright("Copyright © Stackoverflow 2016")]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("4e4f2d33-aaab-48ea-a63d-1f0a8e3c935f")]
[assembly: ComVisible(false)] //not going to expose ;)

// Version information for an assembly consists of the following four values:
// roughly translated from I reckon it is for SO, note that they most likely 
// dynamically generate this file
//      Major Version  - Year 6 being 2016
//      Minor Version  - The month
//      Day Number     - Day of month
//      Revision       - Build number
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below: [assembly: AssemblyVersion("year.month.day.*")]
[assembly: AssemblyVersion("2016.7.00.00")] 
[assembly: AssemblyFileVersion("2016.7.27.3839")]

असेंबलीइन्फो

//then the following might be put into a separate Assembly file per project, e.g.
[assembly: AssemblyTitle("Stackoveflow.Redis")]

आप निम्नलिखित प्रक्रिया का उपयोग करके GlobalAssemblyInfo.cs को स्थानीय प्रोजेक्ट में जोड़ सकते हैं:

  1. प्रोजेक्ट के संदर्भ मेनू में Add / Existing Item ... का चयन करें
  2. GlobalAssemblyInfo.cs का चयन करें
  3. दायें हाथ पर उस छोटे डाउन-एरो पर क्लिक करके ऐड-बटन का विस्तार करें
  4. बटन ड्रॉप डाउन सूची में "Add As Link" चुनें

[AssemblyVersion]

यह विशेषता असेंबली के लिए एक संस्करण लागू करती है।

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

* चरित्र का उपयोग आपके द्वारा संकलित किए जाने वाले संस्करण के एक हिस्से को स्वतः-संचय करने के लिए किया जाता है (जब आप "बिल्ड" संख्या संख्या के लिए अक्सर उपयोग किए जाते हैं)

पढ़ना विधानसभा गुण

.NET के समृद्ध प्रतिबिंब API का उपयोग करके, आप किसी असेंबली के मेटाडेटा तक पहुँच प्राप्त कर सकते हैं। उदाहरण के लिए, आप निम्न कोड के साथ this असेंबली का शीर्षक विशेषता प्राप्त कर सकते हैं

using System.Linq;
using System.Reflection;

...

Assembly assembly = typeof(this).Assembly;
var titleAttribute = assembly.GetCustomAttributes<AssemblyTitleAttribute>().FirstOrDefault();

Console.WriteLine($"This assembly title is {titleAttribute?.Title}");

स्वचालित संस्करण

स्रोत नियंत्रण में आपके कोड में डिफ़ॉल्ट रूप से (एसवीएन आईडी या जीआईटी एसएच 1 हैश) या स्पष्ट रूप से (जीआईजी टैग) द्वारा संस्करण संख्याएं हैं। असेंबलीInfo.cs में मैन्युअल रूप से अपडेट किए गए संस्करणों के बजाय आप अपने असेंबली कंट्रोल सिस्टम से संस्करण लिखने के लिए बिल्ड टाइम प्रोसेस का उपयोग करके अपनी असेंबलीइन्फो.एक्स फाइलों में और इस तरह अपनी असेंबली पर इस्तेमाल कर सकते हैं।

GitVersionTask या SemVer.Git.Fody NuGet पैकेज उपरोक्त उदाहरण हैं। उदाहरण के लिए, GitVersionTask का उपयोग करने के लिए, अपनी परियोजना में पैकेज स्थापित करने के बाद Assembly*Version हटाएं Assembly*Version विशेषताएँ आपकी असेंबलीइन्फो .cs फ़ाइलों से। यह GitVersionTask को आपकी असेंबलियों को संस्करणित करने के प्रभारी रखता है।

ध्यान दें कि सिमेंटिक वर्जनिंग वास्तव में डी मानक है, इसलिए इन विधियों से स्रोत नियंत्रण टैगों का उपयोग करने की सलाह दी जाती है जो सेम वीयर का अनुसरण करते हैं।

सामान्य क्षेत्र

अपने असेम्बलीइन्फो के डिफ़ॉल्ट फ़ील्ड्स को पूरा करना अच्छा है। जानकारी को इंस्टॉलर द्वारा उठाया जा सकता है और फिर प्रोग्राम को अनइंस्टॉल करने या बदलने के लिए प्रोग्राम्स और फीचर्स (विंडोज 10) का उपयोग करते समय दिखाई देगा।

न्यूनतम होना चाहिए:

  • असेंबलीटाइल - आमतौर पर नामस्थान, यानी MyCompany.MySolution.MyProject
  • असेंबली.कॉम - कानूनी संस्थाओं का पूरा नाम
  • असेंबलीप्रोडक्ट - मार्केटिंग का एक दृश्य यहाँ हो सकता है
  • असेंबली कॉपीराइट - इसे अद्यतित रखें क्योंकि यह अन्यथा मैला दिखता है

DLL के गुण विवरण टैब की जांच करने पर 'असेंबलीटाइल' 'फाइल विवरण' बन जाता है।

[AssemblyConfiguration]

असेम्बलीकॉन्फ़िगरेशन: असेम्बली का निर्माण करने के लिए उपयोग किया गया था। विभिन्न विधानसभा कॉन्फ़िगरेशन को ठीक से शामिल करने के लिए सशर्त संकलन का उपयोग करें। नीचे दिए गए उदाहरण के समान ब्लॉक का उपयोग करें। आप आमतौर पर उपयोग के रूप में कई अलग विन्यास जोड़ें।

#if (DEBUG)

[assembly: AssemblyConfiguration("Debug")]

#else

[assembly: AssemblyConfiguration("Release")]

#endif

[InternalsVisibleTo]

यदि आप किसी अन्य विधानसभा से किसी विधानसभा के internal वर्गों या कार्यों को सुलभ बनाना चाहते हैं, तो आप इसे InternalsVisibleTo और उस विधानसभा नाम से घोषित करते हैं, जिसे एक्सेस करने की अनुमति है।

विधानसभा में इस उदाहरण कोड में MyAssembly.UnitTests कॉल करने के लिए अनुमति दी है internal से तत्वों MyAssembly

[assembly: InternalsVisibleTo("MyAssembly.UnitTests")]

यह अनावश्यक public घोषणाओं को रोकने के लिए इकाई परीक्षण के लिए विशेष रूप से उपयोगी है।

[AssemblyKeyFile]

जब भी हम चाहते हैं कि हमारी विधानसभा जीएसी में स्थापित हो, तो इसके लिए एक मजबूत नाम होना चाहिए। मजबूत नामकरण विधानसभा के लिए हमें एक सार्वजनिक कुंजी बनानी होगी। .snk फ़ाइल जनरेट करने के लिए।

एक मजबूत नाम कुंजी फ़ाइल बनाने के लिए

  1. VS2015 के लिए डेवलपर्स कमांड प्रॉम्प्ट (व्यवस्थापक एक्सेस के साथ)
  2. कमांड प्रॉम्प्ट पर, cd C: \ Directory_Name टाइप करें और ENTER दबाएँ।
  3. कमांड प्रॉम्प्ट पर, टाइप करें sn -k KeyFileName.snk, और उसके बाद ENTER दबाएँ।

एक बार keyFileName.snk को निर्दिष्ट निर्देशिका में बनाया जाता है, फिर अपनी परियोजना में रेफ़रेंस दें। जब हम अपनी कक्षा की लाइब्रेरी बनाते हैं, तो कुंजी जनरेट करने के लिए snk फाइल को AssemblyKeyFileAttribute करने के लिए snk एट्रिब्यूट दें।

गुण -> असेंबलीइन्फो

[assembly: AssemblyKeyFile(@"c:\Directory_Name\KeyFileName.snk")]

थि बिल्ड के बाद एक मजबूत नाम असेंबली बनाएगा। अपनी मजबूत नाम विधानसभा बनाने के बाद आप इसे GAC में स्थापित कर सकते हैं

हैप्पी कोडिंग :)



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow