"IHostingEnvironment" устарел

Я обновил свой проект до .NETCORE v3.0.0-preview3 и теперь я получаю:

Startup.cs(75,50,75,69): предупреждение CS0618: "IHostingEnvironment" устарело: "Этот тип устарел и будет удален в следующей версии. Рекомендуемая альтернатива - Microsoft.AspNetCore.Hosting.IWebHostEnvironment. '

Код является:

public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
  if (env.IsDevelopment()) {
    ...

Как правильно сделать это сейчас? Есть ли документация/пример, чтобы показать это?

Ответы

Ответ 1

Кажется, IHostingEnvironment был заменен на IHostEnvironment (и несколько других). Вы должны быть в состоянии изменить тип интерфейса в вашем коде, и все будет работать так, как раньше :-)

Вы можете найти больше информации об изменениях по этой ссылке на GitHub https://github.com/aspnet/AspNetCore/issues/7749

РЕДАКТИРОВАТЬ Существует также дополнительный интерфейс IWebHostEnvironment, который можно использовать в приложениях ASP.NET Core. Это доступно в пространстве имен Microsoft.AspNetCore.Hosting.

Ответ 2

  Когда Microsoft.Extensions.Hosting был введен в 2.1, некоторые типы, такие как IHostingEnvironment и IApplicationLifetime были скопированы из Microsoft.AspNetCore.Hosting. Некоторые изменения в версии 3.0 приводят к тому, что приложения включают в себя пространства имен Microsoft.Extensions.Hosting и Microsoft.AspNetCore.Hosting. Любое использование этих дублирующих типов вызывает ошибку компилятора с "неоднозначной ссылкой", когда на оба пространства имен ссылаются.

Эта ошибка была устранена в 3.0.0-preview3, пометив следующие типы как устаревшие и заменив их новыми. В новых типах не было никаких изменений в поведении, кроме имен.

Устаревшие типы (предупреждение):

Microsoft.Extensions.Hosting.IHostingEnvironment
Microsoft.AspNetCore.Hosting.IHostingEnvironment
Microsoft.Extensions.Hosting.IApplicationLifetime
Microsoft.AspNetCore.Hosting.IApplicationLifetime
Microsoft.Extensions.Hosting.EnvironmentName
Microsoft.AspNetCore.Hosting.EnvironmentName

New types:

Microsoft.Extensions.Hosting.IHostEnvironment
Microsoft.AspNetCore.Hosting.IWebHostEnvironment : IHostEnvironment
Microsoft.Extensions.Hosting.IHostApplicationLifetime
Microsoft.Extensions.Hosting.Environments

Обратите внимание, что новые методы расширения IHostEnvironment IsDevelopment, IsProduction и т.д. находятся в пространстве имен Microsoft.Extensions.Hosting, которое может потребоваться добавить в ваше приложение.

В версии 3.0 оба старых и новых типа будут доступны из контейнеров внедрения зависимостей HostBulder и WebHostBuilder. Старые типы будут удалены в 4.0.

Источник: https://github.com/aspnet/AspNetCore/issues/7749

Короче говоря, вы ищете IWebHostEnvironment сейчас. Скорее всего, вам также понадобится добавить использование для Microsoft.Extensions.Hosting.