IHostBuilder 不包含 ConfigureWebHostDefaults 的定义
IHostBuilder does not contain a definition for ConfigureWebHostDefaults
我正在尝试使用 .NET Core 3.0 中记录的 here 中的新 GenericHost
,但我遇到了一个非常基本的错误,统计信息IHostBuilder
不包含 ConfigureWebHostDefaults
函数的定义。
查看 ASP.NET 3.0 文档 IHostBuilder
接口 here 我看不到任何对 ConfigureWebHostDefaults
的引用所以我有点困惑。
我正在为 Microsoft.Extensions.Hosting
和 Microsoft.Extensions.Hosting.Abstractions
使用 3.0.0 包,但我忍不住觉得我遗漏了一些非常明显的东西,或者 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>
除了using Microsoft.Extensions.Hosting
,ConfigureWebHostDefaults
还需要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>();
});
}
}
此外,您的项目看起来像是一个控制台应用程序。那就是问题所在。 ConfigureWebHostDefaults
仅适用于 Web 应用程序。因此,您可以通过将 .csproj
文件中的 Sdk="Microsoft.NET.Sdk"
替换为 Sdk="Microsoft.NET.Sdk.Web"
来将您的控制台应用程序转换为 Web 应用程序,如下所示:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
</Project>
我正在尝试使用 .NET Core 3.0 中记录的 here 中的新 GenericHost
,但我遇到了一个非常基本的错误,统计信息IHostBuilder
不包含 ConfigureWebHostDefaults
函数的定义。
查看 ASP.NET 3.0 文档 IHostBuilder
接口 here 我看不到任何对 ConfigureWebHostDefaults
的引用所以我有点困惑。
我正在为 Microsoft.Extensions.Hosting
和 Microsoft.Extensions.Hosting.Abstractions
使用 3.0.0 包,但我忍不住觉得我遗漏了一些非常明显的东西,或者 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>
除了using Microsoft.Extensions.Hosting
,ConfigureWebHostDefaults
还需要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>();
});
}
}
此外,您的项目看起来像是一个控制台应用程序。那就是问题所在。 ConfigureWebHostDefaults
仅适用于 Web 应用程序。因此,您可以通过将 .csproj
文件中的 Sdk="Microsoft.NET.Sdk"
替换为 Sdk="Microsoft.NET.Sdk.Web"
来将您的控制台应用程序转换为 Web 应用程序,如下所示:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
</Project>