11

使用 ASP.NET 4.5,可以在运行时使用Assembly.Load()AppDomain.CurrentDomain.Load()动态加载程序集。这可用于以模块的形式向正在运行的 Web 应用程序添加新功能,而无需重新构建甚至重新启动应用程序。

我想知道如何使用针对 Core 框架的新 ASP.NET vNext(5.0?)来完成此操作。我知道这可以使用完整的框架System.AppDomain以及重载的Assembly.Load(). 当我更改为以 Core 框架为目标时,我不再System.AppDomain可用并Assembly.Load()受到限制。

有没有办法在 ASP.NET 5.0 Core 框架中获得这种动态模块化功能?

4

2 回答 2

3

我不确定什么是好的答案,因为 Asp.Net 5 太新了,而且没有很多完整的文档。

理论上应该是可以的,只是和你习惯的不一样。

查看源代码,有一个接口IAssemblyLoadContext可以让您获取程序集。还有IAssemblyLoader

这些由“kre”主机使用,它是 Asp.Net 5 的基础部分,基本上可以增强您的应用程序。因此,您需要将您的添加IAssemblyLoader到底层主机,以便 kre.

不幸的是,到目前为止,我还没有在代码中看到很多扩展点。我们会得到这些扩展点吗?我不知道。您可以在github页面上记录问题。也可能有一个我目前没有看到的扩展点。

回到这个问题,你能把这种可扩展性添加到 Asp.Net 5 Core 吗?是的,您可以创建自己的主机,类似于默认主机,然后包含您的自定义加载程序,然后使用它启动您的应用程序。

于 2014-12-10T17:21:42.190 回答
1

你可以试试ExtCore 框架

它允许开箱即用的模块化和可扩展的ASP.NET 5应用程序。

简而言之

  1. 它允许同时使用来自 dll 和 nuget 包的两个模块。
  2. 它允许所有模块在单一上下文中使用存储,并拥有自己的模型和存储库。
  3. 每个扩展都可以有控制器、视图、静态内容等。
于 2015-12-29T14:03:11.173 回答