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

时间:2010-02-19 15:09:32

标签: .net silverlight assemblies versioning version

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

Assembly.GetExecutingAssembly().GetName().Version;

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

3 个答案:

答案 0 :(得分:48)

private static Version ParseVersionNumber(Assembly assembly)
{
    AssemblyName assemblyName = new AssemblyName(assembly.FullName);
    return assemblyName.Version;
}

或者这个:

Assembly assembly = Assembly.GetExecutingAssembly(); 
String version = assembly.FullName.Split(',')[1];
String fullversion = version.Split('=')[1]; 

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

关于它的帖子:

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

您可以查看我在此处发布的js文件:Detect Silverlight version required by an assembly

你的错误是预期的。因为这是一个安全的关键,以上是一些解决方法。

答案 1 :(得分:6)

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

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

答案 2 :(得分:1)

您可以使用

Assembly.GetExecutingAssembly()
 .GetCustomAttributes(false).OfType<AssemblyVersionAttribute>()
 .Single().Version;