在 ASP.NET 4.5 中,可以使用 Assembly.Load()
或 AppDomain.CurrentDomain.Load()
在运行时动态加载程序集。这可用于以模块的形式向正在运行的 Web 应用程序添加新功能,而无需重建甚至重新启动应用程序。
我想知道如何使用针对 Core 框架的新 ASP.NET vNext(5.0?)来完成此操作。我知道这可以通过完整的框架来完成,因为 System.AppDomain
可以与重载的 Assembly.Load()
一起使用。当我更改为以核心框架为目标时,我不再有可用的 System.AppDomain
并且 Assembly.Load()
变得有限。
有没有办法在 ASP.NET 5.0 Core 框架中获得这种动态模块化功能?
最佳答案
我不确定什么是好的答案,因为 Asp.Net 5 太新了,而且没有很多完整的文档。
理论上应该是可行的,只是与您习惯的有所不同。
查看源码有一个接口(interface)IAssemblyLoadContext这将使您获得组装。还有IAssemblyLoader .
这些由“kre”主机使用,它是 Asp.Net 5 的底层部分,基本上可以增强您的应用程序。因此,您需要将 IAssemblyLoader
添加到底层主机,以便 kre。
不幸的是,到目前为止我在代码中还没有看到很多扩展点。我们会得到那些扩展点吗?我不知道。您可以在 github 上记录问题页。也可能存在我当前未看到的扩展点。
回到这个问题,你能为 Asp.Net 5 Core 添加那种可扩展性吗?是的,您可以创建自己的主机,类似于默认主机,然后包含您的自定义加载器,然后用它启动您的应用程序。
关于c# - ASP.NET vNext Core CLR 的模块化功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27362331/