无法在强签名silverlight代码中加载程序集

无法在强签名silverlight代码中加载程序集,silverlight,reflection,silverlight-4.0,Silverlight,Reflection,Silverlight 4.0,在Silverlight 4应用程序中,我尝试使用以下代码实例化一个直到运行时才知道其类型的对象: Assembly assembly = Assembly.LoadFrom("Name.Of.Some.dll"); Type type = assembly.GetType("Full.NameSpace.And.ClassName"); object o = Activator.CreateInstance(type); 但是,Assembly.LoadFrom()调用会导致异常: {Sys

在Silverlight 4应用程序中,我尝试使用以下代码实例化一个直到运行时才知道其类型的对象:

Assembly assembly = Assembly.LoadFrom("Name.Of.Some.dll");
Type type = assembly.GetType("Full.NameSpace.And.ClassName");
object o = Activator.CreateInstance(type);
但是,Assembly.LoadFrom()调用会导致异常:

{System.MethodAccessException: Attempt by security transparent method 'Mosaic.Layers.LayerParamChangeHandlerInfo.CreateParamHandler()' to access security critical method 'System.Reflection.Assembly.LoadFrom(System.String)' failed.

我已经在谷歌上搜索了一些错误,但我仍然不明白为什么会出现异常(我相信这与程序集被强签名有关),更重要的是,如何解决问题并创建我的对象。

不允许您从自己的代码中调用此方法,使其安全性至关重要,并且仅限于在.NET Framework内部使用

请勿在应用程序中使用此成员。如果这样做,代码将抛出MethodAccessException。此成员是安全关键成员,这将其限制为.NET Framework for Silverlight类库的内部使用


Silverlight中程序集的唯一可用加载方法是。如果要动态加载程序集,请查看方法。

查看Assembly.LoadString()的文档,所需参数是完整的程序集名称,但我的示例中不清楚具体是什么。我尝试了“Name.Of.Some.dll”和“Name.Of.Some”,这两种方法都会导致FileNotFoundException。而且,除非我读错了,否则您链接的文章正在使用一个要从中加载的流-我没有流-只是我需要实例化的程序集和类的名称。@Dave W:您试图加载的程序集位于哪里?您是否在浏览器外运行silverlight应用程序?@Dave W:我认为您需要指定完整的程序集名称,包括版本、区域性和公钥令牌。请看这个问题(如果我的回答有点模糊,请原谅我-我对Silverlight不太熟悉,但有人要求我向现有应用程序添加一个功能,因此我对Silverlight的所有特定内容都不太清楚)-该应用程序作为网页的一部分加载到浏览器中。那么我如何知道其全名,尤其是公开密钥部分?我有一个解决方案,其中包含许多项目-这些信息是否会出现在我试图加载的程序集的项目中?