2009-10-26 16 views
17

से असेंबली कॉम्पैनी नाम पुनर्प्राप्त करें मैं अपने सी # कक्षा पुस्तकालय के अंदर WinForm प्रोजेक्ट से असेंबली कॉम्प्नी विशेषता प्राप्त करना चाहता हूं। WinForms में, मैं का उपयोग करके यह जानकारी प्राप्त कर सकते हैं:क्लास लाइब्रेरी

Application.CompanyName; 

हालांकि, मैं एक वर्ग पुस्तकालय का उपयोग कर कि एक ही जानकारी पर पाने के लिए एक रास्ता खोज नहीं कर पा रहे। कोई भी मदद जो आप प्रदान कर सकते हैं वह बहुत अच्छा होगा!

+0

लगभग बॉक्स असेंबली सूचना (हालांकि बिल्ड तिथि नहीं) तक पहुंचता है और प्रदर्शित करता है। मैंने बस के बारे में थॉर्क्स फॉर्म लॉन्च किया, कम से कम, जिसमें मैंने आवश्यक फ़ील्ड को सामान्य कक्षा में पॉप करने के लिए कुछ कोड जोड़ा, और फॉर्म बंद करें। – italfingers

उत्तर

23

विधानसभा जिसमें अपने वर्तमान कोड (वर्ग पुस्तकालय कोड) वास्तव में रहता हो, और उसके कंपनी विशेषता पढ़ने के लिए:

Assembly currentAssem = typeof(CurrentClass).Assembly; 
object[] attribs = currentAssem.GetCustomAttributes(typeof(AssemblyCompanyAttribute), true); 
if(attribs.Length > 0) 
{ 
    string company = ((AssemblyCompanyAttribute)attribs[0]).Company 
} 
+0

मुझे नहीं पता कि यह इसलिए है क्योंकि मैं .NET 2.0 में हूं, लेकिन मुझे GetCustomAttributes के लिए कॉल के अंत में "सत्य" जोड़ना पड़ा। इसके अलावा, एक चैंप की तरह काम किया! आपकी सहायताके लिए धन्यवाद! –

+2

मुझे यह बहुत उपयोगी पाया! यदि आप एक नए .NET संस्करण का उपयोग कर रहे हैं तो आप टाइपऑफ (करंट क्लास) का उपयोग कर सकते हैं। एस्प्लोर्स। गेट कस्टमस्टेट <असेंबली कॉम्पैनीएट्रिब्यूट>()। कंपनी – DarioDF

4
Assembly assembly = typeof(CurrentClass).GetAssembly(); 
    AssemblyCompanyAttribute companyAttribute = AssemblyCompanyAttribute.GetCustomAttribute(assembly, typeof(AssemblyCompanyAttribute)) as AssemblyCompanyAttribute; 
    if (companyAttribute != null) 
    { 
     string companyName = companyAttribute.Company; 
     // Do something 
    } 
+0

आप कंपनी एट्रिब्यूट == नल –

+0

फिक्स्ड को भूलना भूल गए हैं। जिस कोड से मैंने इसे लिया है वह शून्य की जांच नहीं करता है क्योंकि यह हमारे लॉगिंग घटक में है (जहां कंपनी का नाम विशेषता आईएस सेट है)। कंपनी का नाम जरूरी है, इसलिए यदि यह नहीं है तो पहली बार अपमानजनक डेवलपर कोड चलाता है तो अपवाद फेंक दिया जाएगा! –

4

आप CompanyName एक और अधिक प्राप्त करने के लिए FileVersionInfo वर्ग इस्तेमाल कर सकते हैं ।

Dim info = FileVersionInfo.GetVersionInfo(GetType(AboutPage).Assembly.Location) 
    Dim companyName = info.CompanyName 
    Dim copyright = info.LegalCopyright 
    Dim fileVersion = info.FileVersion 
+0

आप पहले से ही दायरे में मौजूद असेंबली के बारे में जानकारी प्राप्त करने के लिए fileinfo का उपयोग क्यों करेंगे? – devlord

+0

@lorddev फ़ाइलवर्सनइन्फो ऑब्जेक्ट प्राप्त करने का एकमात्र तरीका स्थिर/साझा GetVersionInfo फ़ंक्शन को कॉल करके एक स्ट्रिंग पथ लेता है। अन्य विकल्प? –

संबंधित मुद्दे