रनटाइम पर असेंबली के AssemblyInformationalVersion
विशेषता मान प्राप्त करने के लिए सी # वाक्यविन्यास क्या है? उदाहरण:.NET असेंबली के असेंबली इन्फॉर्मेशन वर्जन मान प्राप्त करें?
[assembly: AssemblyInformationalVersion("1.2.3.4")]
रनटाइम पर असेंबली के AssemblyInformationalVersion
विशेषता मान प्राप्त करने के लिए सी # वाक्यविन्यास क्या है? उदाहरण:.NET असेंबली के असेंबली इन्फॉर्मेशन वर्जन मान प्राप्त करें?
[assembly: AssemblyInformationalVersion("1.2.3.4")]
using System.Reflection.Assembly
using System.Diagnostics.FileVersionInfo
// ...
public string GetInformationalVersion(Assembly assembly) {
return FileVersionInfo.GetVersionInfo(assembly.Location).ProductVersion;
}
http://msdn.microsoft.com/en-us/library/system.reflection.assemblyinformationalversionattribute.aspx
InformationalVersion संपत्ति
var attr = Assembly
.GetEntryAssembly()
.GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false)
as AssemblyInformationalVersionAttribute[];
यह AssemblyInformationalVersionAttribute
की एक सरणी है पर एक नजर डालें। खोजे गए प्रकार की कोई विशेषता नहीं है, भले ही यह कभी भी शून्य न हो।
var attr2 = Attribute
.GetCustomAttribute(
Assembly.GetEntryAssembly(),
typeof(AssemblyInformationalVersionAttribute))
as AssemblyInformationalVersionAttribute;
विशेषता मौजूद नहीं है तो यह शून्य हो सकता है।
var attr3 = Attribute
.GetCustomAttributes(
Assembly.GetEntryAssembly(),
typeof(AssemblyInformationalVersionAttribute))
as AssemblyInformationalVersionAttribute[];
पहले जैसा ही है।
+1; लेकिन आप 'GetCustomAttributes' के बजाय' GetCustomAttribute' का उपयोग कर सकते हैं यदि आप जानते हैं कि केवल एक विशेषता होगी। – vcsjones
केवल 'Attribute' के स्थिर पद्धति का उपयोग करके,' Assembly' – xanatos
के कहने विधि नहीं का उपयोग कर कुछ स्थितियों में से @vcsjones, 'Assembly.GetEntryAssembly()' 'Assembly.GetExecutingAssembly()' या 'विधानसभा द्वारा प्रतिस्थापित किया जाना चाहिए। GetCallingAssembly() '। आम तौर पर यह आवश्यक है यदि असेंबली एक प्लगइन है - इस मामले में 'GetEntryAssembly()' होस्ट एप्लिकेशन असेंबली वापस कर देगा। – larsmoa
AssemblyInformationalVersionAttribute attribute =
(AssemblyInformationalVersionAttribute)Assembly.GetExecutingAssembly()
.GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false).FirstOrDefault();
if (attribute != null)
Console.WriteLine(attribute.InformationalVersion);
+1 क्योंकि यह सिल्वरलाइट या एक्सबॉक्स लेकव्यू के साथ भी काम करता है! – ahilsend
यहां तक कि अगर सवाल थोड़ा पुराना है:
Application.ProductVersion
के लिए आपका आवेदन डीपीएफ में मुझे मुश्किल समय मिला, यह विनफॉर्म एप्लिकेशन क्लास है। :-) – Wouter
लांस के जवाब की मदद के लिए:
मैं एक अलग समाधान है कि मेरे लिए काम करता प्रस्ताव आप को Application.ResourceAssembly.Location
उपयोग कर सकते हैं अपनी असेंबली के फ़ाइल पथ का पता लगाएं। इसके साथ ही यह सिर्फ एक पंक्ति
System.Diagnostics.FileVersionInfo.GetVersionInfo(Application.ResourceAssembly.Location).ProductVersion
में AssemblyInformationalVersion स्ट्रिंग प्राप्त करने के लिए अपने आवेदन में एक ज्ञात प्रकार का उपयोग करते हुए आप बस यह कर सकते हैं संभव है:
using System.Reflection;
public static readonly string ProductVersion = typeof(MyKnownType).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
बेशक किसी भी प्रक्रिया आप को पाने के लिए उपयोग करें असेंबली आपकी विशेषता लागू है अच्छा है। ध्यान दें कि यह System.Diagnostics
या WinForm की Application
ऑब्जेक्ट पर भरोसा नहीं करता है।
की @ Aerthal के जवाब बंद बिल्डिंग, आप एक एक लाइनर एक MVC उस्तरा दृश्य से AssemblyInformationalVersionAttribute प्राप्त करना चाहते हैं:
@System.Diagnostics.FileVersionInfo.GetVersionInfo(typeof(Zeroarc.Candid.Web.MvcApplication).Assembly.Location).ProductVersion
देखें http://stackoverflow.com/a/19008850/116895 – lance
ध्यान दें कि यह कोड काम नहीं करता है अगर असेंबली फ़ाइल या यूएनसी से लोड नहीं किया गया है। यह मामला हो सकता है यदि असेंबली किसी अन्य असेंबली में एम्बेड की जाती है (आमतौर पर जब असेंबली को रोकती है) या किसी अन्य कारण के लिए 'असेंबली.लोड (बाइट [])' – larsmoa
का उपयोग करके लोड किया गया है, तो अगर आप 'mkbundle' मोनो – Cocowalla