如何导入Microsoft.AspNetCore.Hosting.IWebHostEnvironment?

我的项目中的以下代码出现以下错误。

public static IServiceCollection AddInfrastructure(this IServiceCollection services,IConfiguration configuration,microsoft.AspNetCore.Hosting.IWebHostEnvironment environment) // Error
{
    //    .....
    return services;
}
  

错误CS0234类型或名称空间名称'IWebHostEnvironment'在名称空间'microsoft.AspNetCore.Hosting'中不存在(您是否缺少程序集引用?)

我已经导入了nuget包。

  <ItemGroup>
    <PackageReference Include="microsoft.AspNetCore.Hosting" Version="2.2.7" />
    <PackageReference Include="microsoft.AspNetCore.Hosting.Abstractions" Version="2.2.0" />
    <PackageReference Include="microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.0.0" />
  </ItemGroup>

如何导入Microsoft.AspNetCore.Hosting.IWebHostEnvironment?

chenmin1258 回答:如何导入Microsoft.AspNetCore.Hosting.IWebHostEnvironment?

我已经完全解决了您的问题,并且知道如何解决它:)

将此添加到您的* .csproj文件:

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" />
  </ItemGroup>

因此IWebHostEnvironment位于nuget包Microsoft.AspNetCore.App中。

我真的不知道IWebHostEnvironment为何不与软件包Microsoft.AspNetCore.Hosting一起提供,即使它在该命名空间中也是如此。真是令人困惑。也许将来会清理...

更新

以上解决方案可在Winidows上使用,但我现在尝试使该项目在带有Visual Studio for Mac的macOS上运行,并且无法构建。解决方案如@ mindplay.dk的注释中所述,以将项目类型更改为* .csproj文件第一行中的<Project Sdk="Microsoft.NET.Sdk.Web">。 (即使这对我的ClassLibrary项目没有任何意义)

重现步骤:只需尝试将IWebHostEnvironment放在一个单独的类库项目中,就会遇到所有这些问题...

,

Microsoft.AspNetCore.Hosting.IWebHostEnvironment在asp.net core 3中不存在,您应该使用IWebHostEnvironment。 看一下:Migration to asp.net core 3Github Announcement

  

请注意,新的IHostEnvironment IsDevelopment,IsProduction等扩展方法位于Microsoft.Extensions.Hosting命名空间中,可能需要将其添加到您的应用程序中。

所以您可能需要向项目添加一些NuGet包引用

,

扩展CodingYourLife的答案。 在包含其他框架时,应将其包含在FrameworkReference标签中,以使其正确加载:

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>
,

如果要在Web项目以外的单独库项目中使用Microsoft.AspNetCore.Hosting.IWebHostEnvironment,则必须通过编辑项目文件将Microsoft.AspNetCore.App包引用显式添加到库项目。

在Dotnet 5.0中,我们也必须遵循相同的方法。

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

 <PropertyGroup>
  <OutputType>Library</OutputType>
  <TargetFramework>net5.0</TargetFramework>
 </PropertyGroup>

 <ItemGroup>
  <FrameworkReference Include="Microsoft.AspNetCore.App" />
 </ItemGroup>

 <ItemGroup>...</ItemGroup>

</Project>
本文链接:https://www.f2er.com/3164248.html

大家都在问