我想在about框中显示我的Silverlight 3应用程序的版本号,但是当我使用传统的.Net调用时:
Assembly.GetExecutingAssembly().GetName().Version;
我在GetName()调用上得到一个MethodAccessException。我怎么能得到我的装配版本号?
答案 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;