如何在ASP.NET Core最小托管模型中设置HostingStartupAssembliesKey?
在ASP.NET Core 7.0最小托管模型中显式指定托管启动程序集
完全可以实现,虽然WebApplicationOptions没有提供直接配置项,但可以通过操作WebApplicationBuilder的宿主配置来完成,和环境变量实现的效果一致。
核心实现方式
直接修改宿主配置中的HostingStartupAssemblies项,把自定义DLL的程序集名称(不带.dll后缀)添加进去:
var builder = WebApplication.CreateBuilder(args); // 显式指定托管启动程序集,多个程序集用分号分隔 builder.Host.ConfigureHostConfiguration(config => { config.AddInMemoryCollection(new Dictionary<string, string> { ["HostingStartupAssemblies"] = "YourCustomAssemblyName" }); }); // 后续服务、中间件配置逻辑 var app = builder.Build(); // ... app.Run();
进阶:保留原有配置并追加程序集
如果需要保留环境变量中已配置的托管启动程序集,同时添加新的自定义程序集,可以先读取现有配置再拼接:
builder.Host.ConfigureHostConfiguration(config => { var existingAssemblies = config["HostingStartupAssemblies"] ?? string.Empty; var targetAssemblies = string.IsNullOrEmpty(existingAssemblies) ? "YourCustomAssemblyName" : $"{existingAssemblies};YourCustomAssemblyName"; config.AddInMemoryCollection(new Dictionary<string, string> { ["HostingStartupAssemblies"] = targetAssemblies }); });
原理说明
WebApplicationBuilder的Host属性本质上还是基于传统的IHostBuilder,通过ConfigureHostConfiguration修改配置,和官方文档中IHostBuilder的实现逻辑完全同源,完美适配ASP.NET 6.0+的最小托管模型。
内容的提问来源于stack exchange,提问作者jhw
相关产品推荐
相关产品推荐

