"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")