質問

ストリームまたはバイト配列のいずれかを使用して、実行時にアセンブリをロードしたいと思います。

.NETで使用できます Assembly.Load(Byte[], Byte[]) http://msdn.microsoft.com/en-us/library/twt16z2x.aspx

標準のSilverlightで使用できます AssemblyPart.Load() http://msdn.microsoft.com/en-us/library/cc190521%28v = vs.96%29.aspx

しかし、Windows Phone 7では、これらの方法はどちらも利用できません。

役に立ちましたか?

解決

まあ、あなたがほとんど発見したように。あなたはそれをすることはできません。このデザインでは、XAPに出荷されないアセンブリをロードすることはできません。これは、市場検査に合格していない任意のコードをダウンロードして実行することを望まないため、セキュリティデザインです。

これは、AppleがApp Storeを制御する方法と同等です。なぜこの機能がそこにないのか、そしてなぜ私がそれが追加されるのではないかと疑う理由:

  1. 市場。 Microsoftでは、すべてのアプリケーションがBlackbox検査に合格する必要があります。彼らはおそらく、パフォーマンス、主要なバグ、リスク素材、UIの一貫性など、多くのものを探しています。開発者がアセンブリをロードして実行できるようにすると、市場を完全に回避できます。それはいくつかの方法でユーザーを傷つけます。最初のことは、開発者が市場の外に更新を配布する手段として使用するか、Microsoftが市場で許可していない機能(ポルノなど)をこっそり使用することを誘惑することです。
  2. 安全。アセンブリをロードできることは強力な機能であり、良いことも悪いこともあります。開発者が誤って実装した場合、それを悪用することが可能かもしれません。第二に、マイクロソフトの技術的な制限(または時間制限)であった可能性があり、アプリのサンドボックスにどのように影響するかについてです。さらに悪いことに、一見無害なアプリケーションは、既に検査に合格した後、別のアセンブリをダウンロードし、その後、不気味なことを始めます。キーロギングのように、どこかにアップロードします。それが市場を回って以来、マイクロソフトはそれが一般に行く前にそれを捕まえることができなかったでしょう。

OJがコメントで示唆したように、あなたができることは、XAPの一部としてアセンブリを作成し、の1つを使用することです。 Assembly.Load 名前でロードできるオーバーロード。君は できる アセンブリを動的にロードすると、XAPの一部である必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top