无法从我的 Silverlight 应用程序调用 Assembly.GetName()

发布于 2024-12-12 03:04:37 字数 508 浏览 0 评论 0原文

我想在我的应用程序中显示我的应用程序版本号,最简单的方法是使用程序集的版本号。

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()”失败。

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

I want to display my application version number within my application, and the simplest way to do this is to use the version number for the assembly.

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

I can get the executing assembling without problem, but the call to GetName() returns a MethodAccessException with this message

Attempt by security transparent method 'MainPage..ctor()' to access security critical method 'System.Reflection.Assembly.GetName()' failed.

Why is this happening, is there anything I can do about it, and if not is there another means of retrieving the assembly version?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

假装不在乎 2024-12-19 03:04:37

我从 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;
    }

I got this from Stackoverflow (Getting runtime version of a Silverlight assembly) ... works for me:

    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;
    }
秋心╮凉 2024-12-19 03:04:37

Assembly.GetName 标记有 SecurityCriticalAttribute 属性,请尝试使用 GetCallingAssembly().FullName 并从中获取版本信息。

请勿在您的应用程序中使用此成员。如果你这样做,你的代码将
抛出 MethodAccessException。该成员对安全至关重要,
将其限制为 .NET Framework for Silverlight 内部使用
类库。 [安全至关重要]

来自:http://msdn.microsoft。 com/en-us/library/9w2wdeze(VS.95).aspx

The Assembly.GetName is marked with SecurityCriticalAttribute attribute try using GetCallingAssembly().FullName and scrape the version info out of it.

Do not use this member in your application. If you do, your code will
throw a MethodAccessException. This member is security-critical, which
restricts it to internal use by the .NET Framework for Silverlight
class library. [SECURITY CRITICAL]

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文