我的项目中的下列代码将得到以下错误。
public static IServiceCollection AddInfrastructure(this IServiceCollection services,
IConfiguration configuration,
Microsoft.AspNetCore.Hosting.IWebHostEnvironment environment) // Error
{
// .....
return services;
}名称空间‘
’CS0234中不存在类型或名称空间名称'IWebHostEnvironment‘(您是否缺少程序集引用)
?
我已经进口了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>

发布于 2020-11-19 08:21:53
如果要在web项目以外的单独库项目中使用Microsoft.AspNetCore.Hosting.IWebHostEnvironment,则必须通过编辑项目文件向库项目显式添加Microsoft.AspNetCore.App包引用。
在DotNet5.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>发布于 2020-04-11 11:28:42
我完全了解你的问题,并知道如何解决它:)
将其添加到*.csproj文件中:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" />
</ItemGroup>所以IWebHostEnvironment在nuget包Microsoft.AspNetCore.App中。
我真的不知道为什么IWebHostEnvironment没有附带包Microsoft.AspNetCore.Hosting,即使它在那个名称空间中。真让人费解。也许这件事将来会被清理..。
更新
上面的解决方案可以在Winidows上运行,但是我现在已经尝试让这个项目在macOS上运行,并与一起运行,而它就是无法构建。解决方案如@mindplay.dk注释中所示,将项目类型更改为*.csproj文件的第一行中的<Project Sdk="Microsoft.NET.Sdk.Web">。(即使这对我的ClassLibrary项目没有任何意义)
复制步骤:只需尝试将IWebHostEnvironment放在单独的类库项目中,就会遇到所有这些问题。
发布于 2020-10-29 11:05:50
拓展你生活的答案。当包含额外的框架时,您应该将其包含在FrameworkReference标记中,以便正确加载:
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>https://stackoverflow.com/questions/58699803
复制相似问题