ASP.NET Core 2.2 -> atualização 3.0. env.IsDevelopment () não encontrado

102

Eu atualizei um projeto 2.2 existente para 3.0. Copiei o novo código para Program / Startup de um novo projeto 3.0 para meu projeto 2.2 existente. Funcionou, mas o IsDevelopment()abaixo:

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

Resulta neste erro:

'IWebHostEnvironment' não contém uma definição para 'IsDevelopment' e a melhor sobrecarga de método de extensão 'HostingEnvironmentExtensions.IsDevelopment (IHostingEnvironment)' requer um receptor do tipo 'IHostingEnvironment'

A mesma linha não gerou um projeto 3.0 recém-criado. O que eu preciso modificar / adicionar ao projeto atualizado do 2.2?

Malditos vegetais
fonte

Respostas:

165

Os novos IHostEnvironment, IsDevelopment, IsProductionetc. métodos de extensão estão no Microsoft.Extensions.Hostingnamespace que podem precisar de ser adicionado à sua aplicação.

Referência:

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
fonte
21
Não há necessidade de instalar o pacote Microsoft.Extensions.Hosting, basta adicionar a instrução using conforme mencionado na postagem de @Greg.
Lucas
então precisamos Microsoft.Extensions.Hosting e using Microsoft.AspNetCore.Hosting; ao mesmo tempo ... Quer saber como isso funciona? Nome da classe de um pacote, mas seu método de outro?
Macindows de
Na verdade, o asp.net core 3.0 não tem esse problema agora. Ele foi corrigido.
Rena
70

Como Rena diz IsDevelopment, foi movido para IHostEnvironmentInterface no namespace Microsoft.Extensions.Hosting

Eu só tive que adicionar o

using Microsoft.Extensions.Hosting;

e então eu poderia usar IsDevelopment()como antes.

Greg
fonte
Um milhão de agradecimentos, esta resposta me ajudou a resolver a exceção. Estava migrando o asp.net core 23.0 para o core 3.1. basta adicionar esta biblioteca e tudo funcionou como afiado. Billiant!
PatsonLeaner