Question

Je veux charger un ensemble lors de l'exécution en utilisant soit un cours d'eau ou un tableau d'octets.

Dans .Net, vous pouvez utiliser Assembly.Load(Byte[], Byte[]) http://msdn.microsoft.com /en-us/library/twt16z2x.aspx

Dans Silverlight standard, vous pouvez utiliser AssemblyPart.Load() http : //msdn.microsoft.com/en-us/library/cc190521%28v=VS.96%29.aspx

Mais dans Windows Phone 7 aucune de ces méthodes sont avaliable.

Était-ce utile?

La solution

Eh bien, comme vous avez assez bien découvert; vous ne pouvez pas le faire. La conception ne permet pas pour vous de charger un ensemble qui ne sont pas livrés dans votre XAP. Ceci est une conception de la sécurité, car ils ne veulent pas le téléchargement de vous et d'exécuter du code arbitraire qui n'a pas passé du marché d'inspection.

Ceci est comparable à la façon dont Apple contrôle son App Store. Pourquoi cette fonctionnalité est pas là, et pourquoi je doute qu'il sera ajouté:

  1. du marché. Microsoft exige que toutes les applications passent une inspection Blackbox. Ils ont l'air sans doute pour un certain nombre de choses, comme la performance, bugs majeurs, le matériel osée et la cohérence interface utilisateur. Permettre à un développeur pour charger et exécuter une assemblée complètement le affranchit du marché. Ça me fait mal à l'utilisateur de plusieurs façons. Le premier être qu'un développeur serait tenté de l'utiliser comme un moyen de distribution des mises à jour en dehors du marché, ou se faufilant dans les fonctionnalités (comme la pornographie) que Microsoft ne permet pas sur leur marché.
  2. Sécurité. Être capable de charger un assemblage est une fonctionnalité puissante, qui peut être à la fois bon et mauvais. Si un développeur a mis en œuvre de façon incorrecte, il pourrait être possible de l'exploiter. En second lieu, il aurait pu être une limitation technique (ou la limitation de temps) sur Microsoft pour la façon dont il aurait une incidence sur sandboxing des applications. Ou pire, une application apparemment inoffensive télécharge un assemblage différent après avoir déjà passé une inspection, puis commence à faire quelque chose infâmes; comme l'exploitation forestière clé et le télécharger quelque part. Comme il a fait le tour du marché, Microsoft aurait jamais pu l'attraper avant qu'il ne soit au public.

Ce que vous pouvez faire, comme JO suggéré dans les commentaires, est de faire les assemblées dans le cadre de votre XAP et utilisez l'une des surcharges Assembly.Load qui vous permettent de le charger par son nom. Vous peut charger dynamiquement des ensembles, ils doivent juste être une partie de votre XAP.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top