"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()) {
    ...

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

5 ответов

Решение

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

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

когда 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

Новые типы:

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 также.

Из ASP.NET Core 5 используйте:

      using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
...
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    if (Environments.Development.Equals(env.EnvironmentName))
    {
        ...

Для env.IsDevelopment(), Я использовал env.EnvironmentName.Equals("Development")

Тип IHostingEnvironment устарел для ASP.NET Core 3.0+. И по словам Microsoft:

Рекомендуемая альтернатива — Microsoft.AspNetCore.Hosting.IWebHostEnvironment.

https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.hosting.ihostingenvironment?view=aspnetcore-7.0

На сегодняшний день IHostingEnvironment устарел для следующих версий:

Другие вопросы по тегам