.Net 6 控制台应用程序:WebApplication.CreateBuilder 与 Host.CreateDefaultBuilder

Kri*_*edK 46 .net dependency-injection console-application

我正在研究 .NET 6,并希望构建一个简单的控制台应用程序,并进行一些依赖项注入。

据我所知,为了使启动(现在只是程序)文件更具可读性,已经做了很多工作。让我有点困惑的是,所有改进似乎都是针对 API 项目中使用的 WebApplication.CreateBuilderpart 进行的,而不是 Host.CreateDefaultBuilder。正如本博客中提到的

微软自己的文档,似乎也只提到了WebApplication。

对我来说,WebApplication 似乎仅适用于 Web 项目,例如 API,并且我找不到任何可以证实 og 揭穿这一点的内容。

可以在控制台应用程序中使用 WebApplication,还是应该依赖 Host,并保留堆叠的 lambda 表达式?

som*_*men 42

WebApplication.CreateBuilder()仅用于 Web/API 应用程序,顾名思义,Host.CreateDefaultBuilder()用于构建通用主机(没有 Web 服务、中间件等),您可以使用它来构建除 Web 主机之外的任何内容。

请参阅未更改的.NET Generic Host示例。

确实,目前构建控制台应用程序和/或后台服务感觉有点尴尬。

  • @mslot,如果控制台模板包含大量这样的“混乱”,那就很奇怪了。但没有 - 没有“带有 di 的控制台和所有美好的事情 asp.net core”模板。这再次令人悲伤——目前创建诸如后台服务之类的东西(这将是一个控制台应用程序,包括 DI 等)感觉很奇怪。我为此创建了自己的引导程序(但后来我也希望为所有应用程序等拥有相同的日志记录设置)来构建通用主机。然后我有派生类来构造网络应用程序或后台应用程序等。 (6认同)
  • 那么如果我们想使用 IoC 并添加托管服务,就不能使用新的最小控制台模板吗?我正在努力解决这个问题。我喜欢它之前的状态,因为它看起来一样,但现在如果我不能使用新的最小方法,它就会有很大的分歧。 (4认同)