ASP.NET Core 2.2 -> 3.0 升级。 env.IsDevelopment() 未找到

ASP.NET Core 2.2 -> 3.0 upgrade. env.IsDevelopment() not found

我将现有的 2.2 项目升级到 3.0。我将 Program/Startup 的新代码从一个新的 3.0 项目复制到我现有的 2.2 项目中。它有效,但下面的 IsDevelopment()

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
   if (env.IsDevelopment())
   {
      app.UseDeveloperExceptionPage();
   }
}

导致此错误:

'IWebHostEnvironment' does not contain a definition for 'IsDevelopment' and the best extension method overload 'HostingEnvironmentExtensions.IsDevelopment(IHostingEnvironment)' requires a receiver of type 'IHostingEnvironment'

同一行没有导致新创建的3.0项目。 modify/add 从 2.2 升级的项目需要什么?

新的 IHostEnvironmentIsDevelopmentIsProduction 等扩展方法位于 Microsoft.Extensions.Hosting 命名空间中,可能需要将其添加到您的应用中。

参考:

https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.0&tabs=visual-studio#migrate-startupconfigure

https://github.com/aspnet/AspNetCore/issues/7749

正如 Rena 所说 IsDevelopment 已移至 IHostEnvironment 中的界面 Microsoft.Extensions.Hosting 命名空间

我只需要添加

using Microsoft.Extensions.Hosting;

然后我可以像以前一样使用 IsDevelopment()

扩展名:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;

public static class HostingEnvironmentExtensions
{
    public static IConfigurationRoot GetAppConfiguration(this IWebHostEnvironment env)
    {
        return AppConfigurations.Get(env.ContentRootPath, env.EnvironmentName, env.IsDevelopment());
    }
}