无法从我的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()'失败。

为什么会发生这种情况,我能做些什么吗?如果不能,是否有其他方法检索程序集版本?

无法从我的Silverlight应用程序调用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