2017-09-27 4 views
0

Je me demande s'il est possible qu'une application Xamarin (toutes les plateformes: Android, iOS, Windows Phone) détecte et charge des assemblages lors de l'exécution.Xamarin: ajouter des fichiers .dll à l'exécution pour ajouter des fonctionnalités à l'application

C'est le genre de chose que j'ai déjà fait dans WPF, et j'aimerais utiliser ces modules (peut-être avec quelques modifications) dans une application Xamarin.

J'ai passé hier à chercher des informations en ligne, et aujourd'hui j'ai essayé de mettre en œuvre une solution, mais sans succès. Prism semblait être un moyen de le faire, mais cela ne fonctionne que dans WPF.

La restriction qui rend cela difficile est que je ne sais pas au moment de la compilation des informations sur les assemblages. Pas de noms, pas de versions, pas de classes. Je peux mettre le nom et la version dans le nom de fichier, et peut-être trouver les classes par réflexion. En utilisant une interface comme point d'entrée (Prism l'utilise), je devrais être capable de le faire.

Avez-vous des commentaires sur ce défi?

Merci beaucoup!

Répondre

2
  • iOS: Non

Apple ne permet pas de code qui n'a pas été livré dans l'application au moment de la signature à exécuter, donc pas sur la volée Jit'ing de CIL permis. La seule exception à cela est le code Javascript qui est exécuté via leur moteur JavaScript Nitro.

  • Android: Oui

Google permet à peu près tout ce que vous pouvez penser, pour le meilleur ou le pire ;-)

  • Windows Phone: No

Tout le code doit être signé dans le cadre du processus AppGestion de l'App Store de Microsoft et par conséquent, vous ne pouvez pas charger les assemblages de manière dynamique plus tard

Note: Si cela est une difficile exigence pour votre application, vous devriez regarder des applications mobiles hybrides, comme Cordova/ionique, où vous pouvez effectuer une poussée à chaud pour déployer de nouvelles fonctionnalités, des corrections de bugs, etc. .. Outre l'auto-hébergement de ces poussées, différents fournisseurs prennent en charge l'hébergement de ceux-ci, même Microsoft Azure a un système de publication de version complète pour cela. Bien sûr, vous coderiez probablement en JavaScript (ou une variante trans-compilée).

+0

Merci beaucoup pour vos conseils. Si je vous comprends bien, chercher à construire des modules en JavaScript semble fonctionner sur chaque plateforme. Je vais regarder Cordova et Ionic et voir si je peux obtenir quelque chose à travailler. –