ASP.NET Core 2.2 -> 3.0 upgrade. env.IsDevelopment() not found
Asked Answered
C

3

157

I upgraded an existing 2.2 project to 3.0. I copied the new code for Program/Startup from a new 3.0 project to my existing 2.2 project. It worked, but the IsDevelopment() below:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
   if (env.IsDevelopment())
   {
      app.UseDeveloperExceptionPage();
   }
}

Results in this error:

'IWebHostEnvironment' does not contain a definition for 'IsDevelopment' and the best extension method overload 'HostingEnvironmentExtensions.IsDevelopment(IHostingEnvironment)' requires a receiver of type 'IHostingEnvironment'

The same line did not caused a newly created 3.0 project. What do I need to modify/add to the project upgraded from 2.2?

Clathrate answered 23/9, 2019 at 21:33 Comment(1)
What about blessed vegetables?Bridgeman
K
259

The new IHostEnvironment, IsDevelopment, IsProduction etc. extension methods are in the Microsoft.Extensions.Hosting namespace which may need to be added to your app.

Reference:

https://learn.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

Karalee answered 24/9, 2019 at 1:48 Comment(3)
No need to install the Microsoft.Extensions.Hosting package, just add the using statement as mentioned in @Greg's post.Hiragana
so then we need both Microsoft.Extensions.Hosting and using Microsoft.AspNetCore.Hosting; at the same time... Wonder how that works? Class name from one package but its method from another?Bumgarner
Actually,the asp.net core 3.0 do not have such issue now.It has been fixed.Karalee
H
147

As Rena says IsDevelopment has been moved to IHostEnvironment Interface in the Microsoft.Extensions.Hosting Namespace

I just had to add the

using Microsoft.Extensions.Hosting;

and then I could use IsDevelopment() as before.

Horror answered 24/9, 2019 at 2:5 Comment(1)
Thanks a million, this answer helped me to solve the exception. Was migrating asp.net core 23.0 to core 3.1. just add this library and all worked like sharp. Billiant!Affair
A
2

int the extension:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;

public static class HostingEnvironmentExtensions
{
    public static IConfigurationRoot GetAppConfiguration(this IWebHostEnvironment env)
    {
        return AppConfigurations.Get(env.ContentRootPath, env.EnvironmentName, env.IsDevelopment());
    }
}
Alt answered 7/6, 2021 at 1:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.