ASP.NET Core 3.0: 命名空间中不存在类型或命名空间名称 'CreateDefaultBuilder'

ASP.NET Core 3.0: The type or namespace name 'CreateDefaultBuilder' does not exist in the namespace

我在用什么:

我创建了一个针对 netcoreapp3.0 的新 ASP.NET Core Web API 项目,但出现以下错误:

The type or namespace name 'CreateDefaultBuilder' does not exist in the namespace 'Template.Host' (are you missing an assembly reference?)

更新:我的地位如此低下,无法对柯克的 post 发表评论。我不知道 Host 是 3.0 中的首选。无论如何,柯克的答案应该是正确的

您应该按如下方式使用 WebHost(而非主机):

public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }

再看一下错误信息:

The type or namespace name 'CreateDefaultBuilder' does not exist in the namespace 'Template.Host'...

当您在 Template.Host 的命名空间中编写 Host.CreateDefaultBuilder 时,编译器假定您的意思是 Template.Host.CreateDefaultBuilder

有几个选项可以解决这个问题:

  1. 在您的命名空间内嵌套 using 语句:

     namespace Template.Host
     {
         using Microsoft.Extensions.Hosting;
    
         // ...
     }
    
  2. 在您的命名空间内为 Microsoft.Extensions.Hosting.Host 类型设置别名:

     namespace Template.Host
     {
         using Host = Microsoft.Extensions.Hosting.Host;
    
         // ...
     }
    
  3. 使用 Host 类型的完全限定名称:

     Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder(args)
    

Host表示ASP.NET Core 3.0+中的Generic Host and is preferred over WebHost