Windows phone 7 如何从WP7中的流或字节[]加载程序集?

Windows phone 7 如何从WP7中的流或字节[]加载程序集?,windows-phone-7,assemblies,.net-assembly,Windows Phone 7,Assemblies,.net Assembly,我想在运行时使用流或字节数组加载程序集 在.net中,您可以使用Assembly.Load(字节[],字节[]) 在标准Silverlight中,您可以使用AssemblyPart.Load() 但在WindowsPhone7中,这两种方法都不可用。好吧,正如你所发现的;你不能这么做。该设计不允许加载未在XAP中提供的程序集。这是一种安全设计,因为他们不希望您下载和运行未通过市场检查的任意代码 这与苹果公司控制应用商店的方式是一致的。为什么没有这个功能,为什么我怀疑它会被添加: 市场。Micro

我想在运行时使用流或字节数组加载程序集

在.net中,您可以使用
Assembly.Load(字节[],字节[])

在标准Silverlight中,您可以使用
AssemblyPart.Load()


但在WindowsPhone7中,这两种方法都不可用。

好吧,正如你所发现的;你不能这么做。该设计不允许加载未在XAP中提供的程序集。这是一种安全设计,因为他们不希望您下载和运行未通过市场检查的任意代码

<>这与苹果公司控制应用商店的方式是一致的。为什么没有这个功能,为什么我怀疑它会被添加:

  • 市场。Microsoft要求所有应用程序都通过黑盒检查。他们可能会寻找很多东西,比如性能、主要缺陷、风险材料和UI一致性。允许开发人员加载和运行任何程序集完全绕过了市场。这在几个方面伤害了用户。第一种情况是,开发人员可能会利用它作为在市场之外发布更新的手段,或者偷偷加入微软在其市场上不允许的功能(如色情)
  • 安全。能够加载程序集是一项强大的功能,它可以是好的也可以是坏的。如果开发人员错误地实现了它,就有可能利用它。其次,这可能是微软的技术限制(或时间限制),因为它将如何影响应用程序的沙箱。更糟糕的是,一个看似无害的应用程序在通过检查后下载另一个程序集,然后开始做一些邪恶的事情;比如记录密钥并上传到某个地方。由于它在市场上四处传播,微软在上市之前永远无法抓住它

  • 正如OJ在评论中所建议的,您可以做的是将程序集作为XAP的一部分,并使用允许您按名称加载的
    Assembly.Load
    重载之一。您可以动态加载程序集,它们必须是XAP的一部分。

    我想您的答案是正确的。但仅仅删除该功能是短视的。在许多情况下,人们可能希望将程序集作为嵌入式资源发送,然后在运行时选择要加载的程序集。只需将它们全部发送到XAP中,而无需将它们嵌入一个程序集,并在需要时加载它们。@Simon是的,我同意,但我认为最终这是Microsoft做出的正确决定。与这种功能相关的负面信息太多了(针对最终用户)。@OJ如何“在需要时加载它们”?如何使程序集“成为XAP的一部分”?