我可以将silverlight dll(仅反射)加载到.net应用程序中吗?

时间:2011-02-14 18:16:10

标签: .net silverlight reflection dll assemblies

我意识到SL和.net CLR和类库的区别,我不想执行任何代码(只查询一些属性并检查某些类型是否实现了在共享程序集中声明的接口)。

但我无法使用Assembly.LoadFrom加载SL dll,因为它没有找到依赖项(如System.Windows.dll等)。我已经尝试过Assembly.ReflectionOnlyLoadFrom,但是这给了我几乎相同的错误(无法加载依赖项)只是用不同的措辞......

是否有任何方法可以反映SL外部的SL装配?

2 个答案:

答案 0 :(得分:2)

尝试将依赖项(System.Windows.dll等)复制到与您尝试加载的Silverlight程序集相同的目录中。

loader / fusion必须能够定位和加载正确的依赖程序集(即使是“仅反射”),​​因为重要的元数据(例如从基类继承的方法签名)可能只存在于那些依赖项中。

答案 1 :(得分:1)

我已切换回LoadFrom而不是ReadOnlyLoadFrom。至少它现在发现了我自己的程序集,它只缺少System.Windows等 所以我订阅了AppDomain.Current.AssemblyResolve,并将我的SL安装文件夹作为参数传递给我的应用程序。现在,对于每个未解析的程序集,我从SL目录中查找名称(c:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ v4.0)