c# - ASP.NET vNext Core CLR 的模块化功能

标签 c# asp.net-core .net-core kruntime

在 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/

相关文章:

c# - 使用 LINQ 的 .Cast() 运算符时,显式/隐式转换运算符失败

c# - Mono:Webservice 在 XML 中添加 UTF-8 BOM

c# - Unity 和 Container.Resolve

c# - 一次只允许一名用户访问操作

.net-core - Visual Studio 2017 不使用 IIS Express 运行核心应用程序

c# - ASP.NET 文件上传在 Windows Azure 中不起作用

entity-framework - ASP.NET Core 2.0 Entityfarmework Core 错误 Ubuntu

c# - 警告 NETSDK1080 : A PackageReference to Microsoft. 面向 .NET Core 3.0 或更高版本时不需要 AspNetCore.App

angular - 请求的资源上存在“Access-Control-Allow-Origin” header

wpf - 无法使用 powershell 安装 MSIX 软件包