ASP.NET Core 2.2 -> Actualización 3.0. env.IsDevelopment () no encontrado

92

Actualicé un proyecto 2.2 existente a 3.0. Copié el nuevo código para Programa / Inicio de un nuevo proyecto 3.0 a mi proyecto 2.2 existente. Funcionó, pero lo IsDevelopment()siguiente:

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

Resultados en este error:

'IWebHostEnvironment' no contiene una definición para 'IsDevelopment' y la mejor sobrecarga del método de extensión 'HostingEnvironmentExtensions.IsDevelopment (IHostingEnvironment)' requiere un receptor de tipo 'IHostingEnvironment'

La misma línea no provocó un proyecto 3.0 recién creado. ¿Qué necesito modificar / agregar al proyecto actualizado desde 2.2?

Malditas verduras
fuente

Respuestas:

155

Los nuevos IHostEnvironment, IsDevelopment, IsProductionetc. métodos de extensión están en el Microsoft.Extensions.Hostingespacio de nombres que puede ser necesario añadir a su aplicación.

Referencia:

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
fuente
21
No es necesario instalar el paquete Microsoft.Extensions.Hosting, solo agregue la declaración de uso como se menciona en la publicación de @ Greg.
Lucas
entonces necesitamos tanto Microsoft.Extensions.Hosting como usar Microsoft.AspNetCore.Hosting; al mismo tiempo ... Me pregunto cómo funciona eso? ¿Nombre de clase de un paquete pero su método de otro?
Macindows
En realidad, asp.net core 3.0 no tiene ese problema ahora. Se ha solucionado.
Rena
64

Como dice Rena, IsDevelopmentse ha movido a IHostEnvironmentInterfaz en el espacio de nombres Microsoft.Extensions.Hosting

Solo tuve que agregar el

using Microsoft.Extensions.Hosting;

y luego podría usar IsDevelopment()como antes.

Greg
fuente