'IHostingEnvironment' is obsolete

asp.net Core.Net Coreasp.net Core-3.0

asp.net Core Problem Overview


I updated my ASP.NET Core project to .NET Core v3.0.0-preview3, and I now get:

> Startup.cs(75,50,75,69): warning CS0618: 'IHostingEnvironment' is > obsolete: 'This type is obsolete and will be removed in a future > version. The recommended alternative is > Microsoft.AspNetCore.Hosting.IWebHostEnvironment.'

The code is:

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

What is the correct way to do this now? Are there any documentation or examples to demonstrate that?

asp.net Core Solutions


Solution 1 - asp.net Core

It seems IHostingEnvironment has been replaced by IHostEnvironment (and a few others). You should be able to change the interface type in your code and everything will work as it used to :-)

You can find more information about the changes at this link on GitHub https://github.com/aspnet/AspNetCore/issues/7749

EDIT There is also an additional interface IWebHostEnvironment that can be used in ASP.NET Core applications. This is available in the Microsoft.AspNetCore.Hosting namespace.

Solution 2 - asp.net Core

> When Microsoft.Extensions.Hosting was introduced in 2.1 some types like IHostingEnvironment and IApplicationLifetime were copied from Microsoft.AspNetCore.Hosting. Some 3.0 changes cause apps to include both the Microsoft.Extensions.Hosting and Microsoft.AspNetCore.Hosting namespaces. Any use of those duplicate types causes an "ambiguous reference" compiler error when both namespaces are referenced. > > This error has been addressed in 3.0.0-preview3 by marking the following types obsolete and replacing them with new types. There have not been any behavioral changes made for the new types, only naming. > > Obsolete types (warning): > > 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
> > Note the new IHostEnvironment IsDevelopment, IsProduction, etc. extension methods are in the Microsoft.Extensions.Hosting namespace which may need to be added to your app. > > For 3.0 both the old and new types will be available from HostBulder's and WebHostBuilder's dependency injection containers. The old types will be removed in 4.0.

Source: https://github.com/aspnet/AspNetCore/issues/7749

Long and short, you're looking for IWebHostEnvironment now. You'll likely need to add using for Microsoft.Extensions.Hosting as well.

Solution 3 - asp.net Core

For env.IsDevelopment(), I used env.EnvironmentName.Equals("Development")

Solution 4 - asp.net Core

From ASP.NET Core 5, use:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkofifusView Question on Stackoverflow
Solution 1 - asp.net CoreSimply GedView Answer on Stackoverflow
Solution 2 - asp.net CoreChris PrattView Answer on Stackoverflow
Solution 3 - asp.net CoreleocrimsonView Answer on Stackoverflow
Solution 4 - asp.net CoreAdilson Pereira SilvaView Answer on Stackoverflow