Обновление 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()как раньше.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.