ASP.NET Core 3.1应用是否需要引用Microsoft.Extensions.Hosting包?
你的第一个猜想是正确的,不用单独引用Microsoft.Extensions.Hosting包完全是Microsoft.NET.Sdk.Web SDK的特性所致,和你项目里残留的Microsoft.AspNetCore 2.2.0包没有关系,具体原因如下:
- ASP.NET Core从3.0版本开始,采用了共享框架的发布模式,
Microsoft.NET.Sdk.WebSDK会自动引入Microsoft.AspNetCore.App共享框架,该框架已经内置了Microsoft.Extensions.Hosting等所有核心基础库的实现,无需开发者手动添加对应的PackageReference引用。 - 你项目中残留的
Microsoft.AspNetCore2.2.0包是2.x版本的旧元包,3.0+版本已经停止维护,这个包本身也不包含Microsoft.Extensions.Hosting的相关实现,不会对当前3.1版本的引用逻辑产生影响,反而建议你尽快移除该旧版本包,避免出现潜在的版本冲突问题。 - 你可以在项目的「依赖项-框架」节点下查看
Microsoft.AspNetCore.App包含的所有程序集,就能找到Microsoft.Extensions.Hosting的相关引用,这就是你删除单独的包引用后,using语句不报错、功能运行正常的核心原因。
补充:只有使用Microsoft.NET.Sdk(通用SDK)的控制台类项目,才需要手动添加Microsoft.Extensions.Hosting的NuGet包引用来使用宿主功能。
内容的提问来源于stack exchange,提问作者manymanymore
相关产品推荐
相关产品推荐

