Обновление ASP.NET Core 2.2 -> 3.0. env.IsDevelopment () не найден

93

Я обновил существующий проект 2.2 до 3.0. Я скопировал новый код для Program / Startup из нового проекта 3.0 в свой существующий проект 2.2. Это сработало, но IsDevelopment()ниже:

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

Приводит к этой ошибке:

«IWebHostEnvironment» не содержит определения для «IsDevelopment», а для перегрузки лучшего метода расширения «HostingEnvironmentExtensions.IsDevelopment (IHostingEnvironment)» требуется получатель типа «IHostingEnvironment»

Эта же строка не вызвала вновь созданный проект 3.0. Что мне нужно изменить / добавить в проект, обновленный с 2.2?

Проклятые овощи
источник

Ответы:

155

Новые IHostEnvironment, IsDevelopment, и IsProductionт.д. методы расширения находятся в 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

Рена
источник
21
Нет необходимости устанавливать пакет Microsoft.Extensions.Hosting, просто добавьте оператор using, как указано в сообщении @Greg.
Люк,
Итак, нам нужны как Microsoft.Extensions.Hosting, так и Microsoft.AspNetCore.Hosting; в то же время ... Интересно, как это работает? Имя класса из одного пакета, а его метод из другого?
Macindows,
Собственно, в ядре asp.net 3.0 такой проблемы сейчас нет, она исправлена.
Рена
65

Как говорит Рена, IsDevelopmentон был перемещен в IHostEnvironmentинтерфейс в пространстве имен Microsoft.Extensions.Hosting

Мне просто нужно было добавить

using Microsoft.Extensions.Hosting;

и тогда я мог использовать IsDevelopment()как раньше.

Грег
источник