2017-09-27 3 views
0

Ich frage mich, ob es für eine Xamarin-Anwendung (alle Plattformen: Android, iOS, Windows Phone) möglich ist, Assemblys zur Laufzeit zu erkennen und zu laden.Xamarin: .dll-Dateien zur Laufzeit hinzufügen, um der Anwendung Funktionen hinzuzufügen

Das ist die Art von Sache, die ich bereits in WPF gemacht habe, und ich würde gerne diese Module (vielleicht mit einigen Modifikationen) in einer Xamarin App verwenden.

Ich habe gestern nach Informationen online gesucht, und heute habe ich versucht, eine Lösung zu implementieren, aber ohne Erfolg.

Prism schien eine Möglichkeit zu sein, aber es funktioniert nur in WPF.

Die Einschränkung, die dies schwierig macht, ist, dass ich zur Kompilierzeit keine Informationen über die Baugruppen weiß. Keine Namen, keine Versionen, keine Klassen. Ich kann den Namen und die Version in den Dateinamen eingeben und vielleicht die Klassen durch Reflexion finden. Wenn ich eine Schnittstelle als Einstiegspunkt benutze (Prism benutze das), sollte ich es schaffen können.

Haben Sie irgendwelche Gedanken zu dieser Herausforderung?

Vielen Dank!

Antwort

2
  • iOS: Nein

von Apple nicht erlaubt Code, der nicht in die App bei der Unterzeichnung Zeit gebündelt wurde ausgeführt werden, so dass keine on-the-fly Jit'ing von CIL erlaubt. Die einzige Ausnahme ist Javascript-Code, der über die Nitro JavaScript Engine ausgeführt wird.

  • Android: Ja

Google so ziemlich alles erlaubt man sich vorstellen kann, für besser oder schlechter ;-)

  • Windows Phone: Nein

Alle Code muss als Teil des Microsoft Store 'App-Aufnahmeprozesses signiert werden und daher können Sie Baugruppen später nicht dynamisch laden

Hinweis: Wenn dies eine hart Voraussetzung für Ihre Anwendung ist, können Sie bei Hybrid mobilen Anwendungen, wie Cordova/Ionic aussehen sollten, wo Sie eine heiße Push ausführen können neue Funktionen, Bugs behebt ausrollen, usw. .. Neben der Selbsthosting dieser Hot Pushs, unterstützen verschiedene Anbieter das Hosting dieser, sogar Microsoft Azure hat ein vollständiges Versionierungs-Publikationssystem dafür. Natürlich würden Sie höchstwahrscheinlich in JavaScript (oder einer anderen trans-kompilierten Variante) codieren.

+0

Vielen Dank für Ihre Ratschläge. Wenn ich Sie richtig verstehe, scheint es auf jeder Plattform zu funktionieren, Module in JavaScript zu erstellen. Ich werde in Cordova und Ionic schauen und sehen, ob ich etwas zur Arbeit bekommen kann. –

Verwandte Themen