无法从我的Silverlight应用程序调用Assembly.GetName()
我想在我的应用程序中显示我的应用程序版本号,最简单的方法是使用程序集的版本号。
var assembly = System.Reflection.Assembly.GetExecutingAssembly(); var name = assembly.GetName(); return String.Format("Version {0}.{1}", name.Version.Major, name.Version.Minor);
我可以毫无问题地获得正在执行的汇编,但是对GetName()
的调用会返回带有此消息的MethodAccessException
尝试使用安全透明方法’MainPage..ctor()’来访问安全关键方法’System.Reflection.Assembly.GetName()’失败。
为什么会发生这种情况,有什么我可以做的,如果没有,还有其他方法来检索汇编版本吗?
Assembly.GetName标有SecurityCriticalAttribute属性,尝试使用GetCallingAssembly().FullName
并GetCallingAssembly().FullName
版本信息。
不要在您的应用程序中使用此成员。 如果这样做,您的代码将抛出MethodAccessException。 该成员是安全关键的,它限制它由.NET Framework for Silverlight类库内部使用。 [安全关键]
来自: http : //msdn.microsoft.com/en-us/library/9w2wdeze(VS.95).aspx
我从Stackoverflow得到这个( 获取Silverlight程序集的运行时版本 )…适合我:
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; }