【问题标题】:ASP.NET Core 3.0: The type or namespace name 'CreateDefaultBuilder' does not exist in the namespaceASP.NET Core 3.0:命名空间中不存在类型或命名空间名称“CreateDefaultBuilder”
【发布时间】:2020-02-03 12:59:22
【问题描述】:

我在用什么:

  • .NET Core SDK 3.0.100
  • Visual Studio 社区 2019 版本 16.3.2

我创建了一个针对 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?)

【问题讨论】:

    标签: c# asp.net-core .net-core .net-core-3.0 asp.net-core-3.0


    【解决方案1】:

    再看看错误信息:

    命名空间“Template.Host”中不存在类型或命名空间名称“CreateDefaultBuilder”...

    当您在 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 代表Generic Host,在 ASP.NET Core 3.0+ 中优于 WebHost

    【讨论】:

      【解决方案2】:

      更新:我的地位很低,我无法评论柯克的帖子。我不知道 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>();
          }
      
      

      【讨论】:

      • @kirk 是正确的。所有默认模板都使用以下代码 public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } 公共静态 IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      相关资源
      最近更新 更多