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

我想在我的应用程序中显示我的应用程序版本号,最简单的方法是使用程序集的版本号.
var assembly = System.Reflection.Assembly.GetExecutingAssembly();
var name = assembly.GetName();
return String.Format("Version {0}.{1}",name.Version.Major,name.Version.Minor);

我可以毫无问题地获得正在执行的汇编,但是对GetName()的调用会返回带有此消息的MethodAccessException

Attempt by security transparent method ‘MainPage..ctor()’ to access security critical method ‘System.Reflection.Assembly.GetName()’ Failed.

为什么会发生这种情况,有什么我可以做的,如果没有,还有其他方法来检索汇编版本吗?

解决方法

Assembly.GetName用SecurityCriticalAttribute属性标记,尝试使用GetCallingAssembly().FullName并从中删除版本信息.

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]

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

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...