我的项目中的以下代码出现以下错误。
public static IServiceCollection AddInfrastructure(this IServiceCollection services,
IConfiguration configuration,
Microsoft.AspNetCore.Hosting.IWebHostEnvironment environment) // Error
{
// .....
return services;
}
Run Code Online (Sandbox Code Playgroud)
错误 CS0234 命名空间“Microsoft.AspNetCore.Hosting”中不存在类型或命名空间名称“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>
Run Code Online (Sandbox Code Playgroud)
小智 7
如果要Microsoft.AspNetCore.Hosting.IWebHostEnvironment在 Web 项目以外的单独库项目中使用,则必须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>
Run Code Online (Sandbox Code Playgroud)
我正好遇到了您的问题,并且知道如何解决它:)
将此添加到您的 *.csproj 文件中:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
所以IWebHostEnvironment在NuGet包Microsoft.AspNetCore.App。
我真的不知道为什么即使它在那个命名空间IWebHostEnvironment中也不附带包Microsoft.AspNetCore.Hosting。这真的很混乱。也许这将在未来清理......
更新
上述解决方案适用于 Windows,但我现在尝试使用 Visual Studio for Mac 在 macOS 上运行该项目,但它无法构建。对此的解决方案如@mindplay.dk 的注释中所述,将项目类型更改<Project Sdk="Microsoft.NET.Sdk.Web">为 *.csproj 文件的第一行。(即使这对我的 ClassLibrary 项目没有任何意义)
重现步骤:只需尝试将 IWebHostEnvironment 放在单独的类库项目中,您就会遇到所有这些问题......
| 归档时间: |
|
| 查看次数: |
6475 次 |
| 最近记录: |