获取Silverlight程序集的运行时版本

Dov*_*Dov 26 .net versioning silverlight assemblies version

我想在about框中显示我的Silverlight 3应用程序的版本号,但是当我使用传统的.Net调用时:

Assembly.GetExecutingAssembly().GetName().Version;
Run Code Online (Sandbox Code Playgroud)

我在GetName()调用上得到一个MethodAccessException.我怎么能得到我的装配版本号?

Jam*_*ell 48

private static Version ParseVersionNumber(Assembly assembly)
{
    AssemblyName assemblyName = new AssemblyName(assembly.FullName);
    return assemblyName.Version;
}
Run Code Online (Sandbox Code Playgroud)

或这个:

Assembly assembly = Assembly.GetExecutingAssembly(); 
String version = assembly.FullName.Split(',')[1];
String fullversion = version.Split('=')[1]; 
Run Code Online (Sandbox Code Playgroud)

来自:http://betaforums.silverlight.net/forums/p/128861/288595.aspx

关于它的帖子:

http://forums.silverlight.net/forums/p/93400/214554.aspx

您可以查看我在此处发布的js文件:检测程序集所需的Silverlight版本

你的错误是预期的.因为它是安全的,所以上面是一些解决方法.

  • GetExecutingAssembly也返回一个Assembly类型,其调用GetName失败. (2认同)

Ant*_*nes 6

GetName 被标记为安全严重,因此当您尝试调用它时会出现异常.

您将需要使用该FullName属性并解析出Version=x.x.x.x字符串的一部分.

  • @herzmeister der welten:在Silverlight沙箱中只需要一次轻微的打嗝就会对其声誉造成严重损害.在Silverlight生命的这个阶段,微软无法承受任何此类打嗝.我怀疑有很多东西实际上并不代表威胁,但是因为它们并不重要,并且没有彻底的安全分析和测试,所以它们具有安全关键属性只是为了安全. (2认同)