我想在关于框中显示我的Silverlight 3应用程序的版本号,但是当我使用传统的 .Net 调用时:
Assembly.GetExecutingAssembly().GetName().Version;
我在调用GetName()时遇到了MethodAccessException异常。请问我该如何获取程序集的版本号?
我想在关于框中显示我的Silverlight 3应用程序的版本号,但是当我使用传统的 .Net 调用时:
Assembly.GetExecutingAssembly().GetName().Version;
我在调用GetName()时遇到了MethodAccessException异常。请问我该如何获取程序集的版本号?
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
您的错误是预期的,因为它很重要,上面有一些解决方法。
GetName
被标记为安全关键,因此当您尝试调用它时会出现异常。
您需要使用FullName
属性并解析字符串中的Version=x.x.x.x
部分。
您可以使用
Assembly.GetExecutingAssembly()
.GetCustomAttributes(false).OfType<AssemblyVersionAttribute>()
.Single().Version;