IHostBuilder不包含ConfigureWebHostDefaults的定义

Tim*_*Tim 1 c# asp.net-core-3.0

我正在尝试使用此处记录的.NET Core 3.0中的新功能GenericHost,但遇到一个非常基本的错误,即统计信息不包含该函数的定义。IHostBuilderConfigureWebHostDefaults

在这里查看ASP.NET 3.0文档的IHostBuilder接口我看不到任何引用,ConfigureWebHostDefaults因此有点困惑。

我正在使用3.0.0程序包Microsoft.Extensions.HostingMicrosoft.Extensions.Hosting.Abstractions但是却束手无策,但感觉到我遗漏了某些明显的东西,或者ConfigureWebHostDefaults由于某种原因而将其删除了?

更新-Program.cs的屏幕截图

在此处输入图片说明

更新-.csproj文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
    <PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.0.0" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

Tan*_*jel 7

与一起using Microsoft.Extensions.HostingConfigureWebHostDefaults还要求using Microsoft.AspNetCore.Hosting;如下:

using Microsoft.AspNetCore.Hosting; //<-- Here it is
using Microsoft.Extensions.Hosting;

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

        public static IHostBuilder CreateWebHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}
Run Code Online (Sandbox Code Playgroud)

而且,看起来您的项目是一个控制台应用程序。那就是问题所在。ConfigureWebHostDefaults仅适用于Web应用程序。因此,您可以通过在文件中替换Sdk="Microsoft.NET.Sdk"Sdk="Microsoft.NET.Sdk.Web",将控制台应用程序转换为Web Applicaton,.csproj如下所示:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

  • 是的,完全忽略了这一点 - 我已将其更新为使用 Sdk.Web 并选择了ConfigureWebHostDefaults 扩展。谢谢您的帮助 (3认同)