无法从我的Silverlight应用程序调用Assembly.GetName()
本文关键字:Assembly GetName 调用 应用程序 我的 Silverlight | 更新日期: 2023-09-27 18:12:50
我想在我的应用程序中显示我的应用程序版本号,最简单的方法是使用程序集的版本号。
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.. tor()'试图访问安全关键方法'System.Reflection.Assembly.GetName()'失败。
为什么会发生这种情况,我能做些什么吗?如果不能,是否有其他方法检索程序集版本?
我从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;
}
大会。GetName被标记为SecurityCriticalAttribute属性,请尝试使用GetCallingAssembly().FullName
清除其中的版本信息。
不要在应用程序中使用该成员。如果你这样做了,你的代码就会抛出一个MethodAccessException。这个成员是安全关键的限制它只能在。net框架中用于Silverlight类库。(安全关键)
从http://msdn.microsoft.com/en-us/library/9w2wdeze (VS.95) . aspx