Mise à niveau ASP.NET Core 2.2 -> 3.0. env.IsDevelopment () introuvable

93

J'ai mis à niveau un projet 2.2 existant vers 3.0. J'ai copié le nouveau code pour le programme / démarrage d'un nouveau projet 3.0 vers mon projet 2.2 existant. Cela a fonctionné, mais leIsDevelopment() ci dessous:

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

Résultats dans cette erreur:

'IWebHostEnvironment' ne contient pas de définition pour 'IsDevelopment' et la meilleure surcharge de méthode d'extension 'HostingEnvironmentExtensions.IsDevelopment (IHostingEnvironment)' nécessite un récepteur de type 'IHostingEnvironment'

La même ligne n'a pas provoqué un projet 3.0 nouvellement créé. De quoi ai-je besoin pour modifier / ajouter au projet mis à niveau depuis la version 2.2?

Légumes maudits
la source

Réponses:

155

Les nouvelles IHostEnvironment, IsDevelopment, IsProductionetc. Les méthodes d'extension sont dans l' Microsoft.Extensions.Hostingespace de noms qui peuvent avoir besoin d' être ajouté à votre application.

Référence:

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

Rena
la source
21
Pas besoin d'installer le package Microsoft.Extensions.Hosting, ajoutez simplement l'instruction using comme mentionné dans le post de @ Greg.
Luc
nous avons donc besoin à la fois de Microsoft.Extensions.Hosting et de Microsoft.AspNetCore.Hosting; en même temps ... Je me demande comment ça marche? Nom de classe d'un paquet mais sa méthode d'un autre?
Macindows
En fait, asp.net core 3.0 n'a pas un tel problème maintenant, il a été corrigé.
Rena le
65

Comme Rena le dit, IsDevelopmenta été déplacé vers IHostEnvironmentInterface dans l'espace de noms Microsoft.Extensions.Hosting

Je devais juste ajouter le

using Microsoft.Extensions.Hosting;

et puis je pourrais utiliser IsDevelopment()comme avant.

Greg
la source