Uaktualnienie ASP.NET Core 2,2 -> 3,0. Nie znaleziono env.IsDevelopment ()

93

Zaktualizowałem istniejący projekt 2.2 do 3.0. Skopiowałem nowy kod programu Program / Startup z nowego projektu 3.0 do mojego istniejącego projektu 2.2. Zadziałało, ale IsDevelopment()poniżej:

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

Skutkuje tym błędem:

„IWebHostEnvironment” nie zawiera definicji „IsDevelopment” i najlepszego przeciążenia metody rozszerzającej „HostingEnvironmentExtensions.IsDevelopment (IHostingEnvironment)” wymaga odbiornika typu „IHostingEnvironment”

Ta sama linia nie spowodowała nowo utworzonego projektu 3.0. Co muszę zmodyfikować / dodać do projektu zaktualizowanego z wersji 2.2?

Cholerne warzywa
źródło

Odpowiedzi:

155

Nowe IHostEnvironment, IsDevelopment, IsProductionitp rozszerzenie metod znajdują się w Microsoft.Extensions.Hostingprzestrzeni nazw, które mogą należy dodać do swojej aplikacji.

Odniesienie:

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
źródło
21
Nie ma potrzeby instalowania pakietu Microsoft.Extensions.Hosting, wystarczy dodać instrukcję using, jak wspomniano w poście @ Greg.
Łukasz
więc potrzebujemy zarówno Microsoft.Extensions.Hosting, jak i Microsoft.AspNetCore.Hosting; w tym samym czasie ... Ciekawe, jak to działa? Nazwa klasy z jednego pakietu, ale jej metoda z innego?
Macindows
W rzeczywistości problem asp.net core 3.0 nie ma teraz takiego problemu. Został on naprawiony.
Rena
65

Jak mówi Rena, IsDevelopmentzostał przeniesiony do IHostEnvironmentinterfejsu w przestrzeni nazw Microsoft.Extensions.Hosting

Musiałem tylko dodać

using Microsoft.Extensions.Hosting;

a potem mogłem użyć IsDevelopment()jak poprzednio.

Greg
źródło