2010-01-25 15 views
10

मैं एक सी # समाधान, एक dll मैं एक अलग सी # समाधान से बनाए गए संदर्भ देता है जो की है।निर्धारित सी # में संदर्भित dll फ़ाइल संस्करण

यह बहुत आसान Application.ProductVersion के साथ अपने समाधान के उत्पाद संस्करण का निर्धारण करने के लिए है। हालांकि, मुझे वास्तव में जो चाहिए वह मेरे कार्यक्रम के भीतर exe और dll के फ़ाइल संस्करण को निर्धारित करने का एक तरीका है। मैं अपने संवाद में डीएलएल और एक्सई के फाइल संस्करणों को प्रदर्शित करना चाहता हूं। कोड ऐसा करने जैसा कैसा दिखता है?

AssemblyName name = typeof(MyCompany.MyLibrary.SomeType).Assembly.GetName(); 

Assembly.GetName रिटर्न एक AssemblyName जो एक Version संपत्ति विधानसभा के संस्करण का संकेत है:

उत्तर

18

सबसे आसान तरीका है अगर आप संदर्भित विधानसभा में एक प्रकार पता है।

वैकल्पिक रूप से, आप को क्रियान्वित विधानसभा (यानी, .exe) द्वारा संदर्भित सभी विधानसभाओं के विधानसभा नाम प्राप्त कर सकते हैं:

var version = Assembly.GetAssembly(typeof(SomeType)).GetName().Version; 

जहां:

AssemblyName[] names = Assembly.GetExecutingAssembly().GetReferencedAssemblies(); 
+0

धन्यवाद; मुझे लगा कि .NET में ऐसा करने का एक आसान तरीका होना था लेकिन मैं इसे खोजने में सक्षम नहीं था। जब मैं एक समाधान की तलाश में था, मुझे लगता है कि मुझे क्या मिलेगा GetName() ... मैंने इसे भी नहीं देखा, क्योंकि मुझे लगता है कि यह सिर्फ एक स्ट्रिंग या कुछ वापस करेगा। –

3

शायद सबसे आसान समाधान यह है कुछ टाइप एक ऐसा प्रकार है जिसे आप निश्चित रूप से जानते हैं जिसे उस विशेष असेंबली में परिभाषित किया गया है। इसके बाद आप इस version object पर .ToString() को कॉल कर सकते हैं या इसकी प्रॉपर्टी देख सकते हैं।

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

2

AssemblyInfo वर्ग यह सब जानकारी है, तो आप बस अपने कोड में विधानसभा के लिए एक संदर्भ पाने के लिए की जरूरत है। उदाहरण के लिए:

Assembly.GetExecutingAssembly.GetName.Version.ToString() 

आप उदाहरण के लिए, विभिन्न तरीकों से परियोजना में अन्य विधानसभाओं प्राप्त कर सकते हैं

var assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();

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