Frage

Ich möchte eine Baugruppe zur Laufzeit entweder mit einem Stream oder einem Byte -Array laden.

In .NET können Sie verwenden Assembly.Load(Byte[], Byte[]) http://msdn.microsoft.com/en-us/library/twt16z2x.aspx

In Standard Silverlight können Sie verwenden AssemblyPart.Load() http://msdn.microsoft.com/en-us/library/cc190521%28v=vs.96%29.aspx

Aber in Windows Phone 7 ist keine dieser Methoden durchschnittlich.

War es hilfreich?

Lösung

Nun, wie Sie ziemlich entdeckt haben; Sie können es nicht tun. Das Design erlaubt nicht, dass Sie eine Baugruppe laden, die nicht in Ihr XAP versendet wird. Dies ist ein Sicherheitsdesign, da Sie nicht möchten, dass Sie willkürliche Code herunterladen und ausführen, der keine Marktplatzinspektion bestanden hat.

Dies ist gleichbedeutend damit, wie Apple seinen App Store steuert. Warum diese Funktionalität nicht da ist und warum ich bezweifle, dass sie hinzugefügt wird:

  1. Marktplatz. Microsoft verlangt, dass alle Anwendungen eine Blackbox -Inspektion bestehen. Sie suchen wahrscheinlich nach einer Reihe von Dingen wie Leistung, größeren Fehlern, Risikenmaterial und UI -Konsistenz. Ermöglicht einem Entwickler, eine Baugruppe zu laden und zu betreiben, um den Markt vollständig umzugehen. Das tut dem Benutzer in einigen Arten weh. Das erste war, dass ein Entwickler versucht sein würde, ihn als Mittel zur Verteilung von Updates außerhalb des Marktes zu verwenden oder sich an Funktionen (wie Pornos) zu schleichen, die Microsoft auf seinem Markt nicht zulässt.
  2. Sicherheit. Eine Baugruppe zu laden, ist eine leistungsstarke Funktion, die sowohl gut als auch schlecht sein kann. Wenn ein Entwickler es falsch implementiert hat, kann es möglich sein, es auszunutzen. Zweitens könnte es eine technische Einschränkung (oder Zeitbeschränkung) für Microsoft dafür gewesen sein, wie sich dies auf die Sandboxen von Apps auswirken würde. Oder schlimmer noch, eine scheinbar harmlose Anwendung lädt eine andere Versammlung herunter, nachdem sie bereits Inspektion bestanden hat und dann etwas Unzeitiges durchführen kann. Wie Schlüsselprotokollierung und Hochladen irgendwo. Da es um den Markt ging, hätte Microsoft es nie in der Lage gewesen, es zu fangen, bevor es in die Öffentlichkeit ging.

Was Sie, wie OJ in den Kommentaren vorgeschlagen hat Assembly.Load Überladungen, mit denen Sie es mit Namen laden können. Du kann Dynamisch laden Sie Baugruppen, sie müssen nur Teil Ihres XAP sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top