Xamarin:在运行时添加 .dll 文件以向应用程序添加功能

Xamarin : add .dll files at runtime to add functionnalities to application

我想知道 Xamarin 应用程序(所有平台:Android、iOS、Windows Phone)是否可以检测并加载程序集运行时间。

这是我已经在 WPF 中做过的事情,我想在 Xamarin 应用程序中使用这些模块(可能需要进行一些修改)。

昨天一直在网上找资料,今天尝试实施解决方案,但没有成功。

Prism 似乎是一种方法,但它只适用于 WPF。

使这变得困难的限制是我在编译时不知道关于程序集的任何信息。没有名字,没有版本,没有 类。 我可以把名称和版本放在文件名中,也许可以通过反射找到 类。使用接口作为入口点(棱镜使用这个),我应该能够做到。

你对这个挑战有什么想法吗?

非常感谢!

  • iOS: 否

Apple 不允许执行在签名时未捆绑到应用程序中的代码,因此不允许即时 Jit'ing CIL。唯一的例外是 Javascript 通过他们的 Nitro JavaScript 引擎 运行 的代码。

  • Android: 是

Google 允许任何你能想到的,无论好坏 ;-)

  • Windows Phone: 否

所有代码都必须作为 Microsoft Store 的应用摄取过程的一部分进行签名,因此您以后无法动态加载程序集

注意:如果这是对您的应用的要求,您应该查看混合移动应用,例如Cordova/Ionic,您可以在其中执行热推送以推出新功能、错误修复等...除了自行托管这些热推送外,各种供应商也支持托管这些内容,甚至 Microsoft Azure 也为此提供了完整的版本控制发布系统。当然,您很可能会使用 JavaScript(或某些反式编译变体)进行编码。