2011-10-28 24 views
6

मैं अपने एप्लिकेशन के भीतर अपना एप्लिकेशन संस्करण संख्या प्रदर्शित करना चाहता हूं, और ऐसा करने का सबसे आसान तरीका असेंबली के लिए संस्करण संख्या का उपयोग करना है।मेरे सिल्वरलाइट एप्लिकेशन से असेंबली.गेटनाम() को कॉल करने में असमर्थ

var assembly = System.Reflection.Assembly.GetExecutingAssembly(); 
var name = assembly.GetName(); 
return String.Format("Version {0}.{1}", name.Version.Major, name.Version.Minor); 

मैं प्राप्त कर सकते हैं समस्या के बिना संयोजन को क्रियान्वित करने के लिए, लेकिन GetName() करने के लिए कॉल सुरक्षा पारदर्शी विधि 'MainPage..ctor()' सुरक्षा बहुत ज़रूरी तक पहुंचने के लिए

प्रयास इस संदेश के साथ एक MethodAccessException रिटर्न विधि 'System.Reflection.Assembly.GetName()' विफल।

ऐसा क्यों हो रहा है, क्या मैं इसके बारे में कुछ भी कर सकता हूं, और यदि असेंबली संस्करण को पुनर्प्राप्त करने का कोई दूसरा माध्यम नहीं है?

उत्तर

6

असेंबली। गेटनाम को सुरक्षा क्रिटिकल एट्रिब्यूट विशेषता के साथ चिह्नित किया गया है GetCallingAssembly().FullName का उपयोग करने का प्रयास करें और इसके बारे में संस्करण जानकारी को स्क्रैप करें।

इस सदस्य का उपयोग अपने आवेदन में न करें। यदि आप करते हैं, तो आपका कोड एक MethodAccessException फेंक देगा। यह सदस्य सुरक्षा-महत्वपूर्ण है, जो सिल्वरलाइट क्लास लाइब्रेरी के लिए .NET Framework द्वारा आंतरिक उपयोग को प्रतिबंधित करता है। [सुरक्षा बहुत ज़रूरी]

से: http://msdn.microsoft.com/en-us/library/9w2wdeze(VS.95).aspx

8

मैं Stackoverflow से यह मिल गया (Getting runtime version of a Silverlight assembly) ... मेरे लिए काम करता है:

public static string GetVersion() 
    { 
     string versionNumber = ParseVersionNumber(Assembly.GetExecutingAssembly()).ToString(); 
     return versionNumber; 
    } 

    private static Version ParseVersionNumber(Assembly assembly) 
    { 
     AssemblyName assemblyName = new AssemblyName(assembly.FullName); 
     return assemblyName.Version; 
    } 
संबंधित मुद्दे