ASP.NET Core 2.2 -> 3.0 Upgrade. env.IsDevelopment () nicht gefunden

93

Ich habe ein vorhandenes 2.2-Projekt auf 3.0 aktualisiert. Ich habe den neuen Code für Programm / Start von einem neuen 3.0-Projekt in mein vorhandenes 2.2-Projekt kopiert. Es hat funktioniert, aber das IsDevelopment()Folgende:

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

Ergebnisse in diesem Fehler:

'IWebHostEnvironment' enthält keine Definition für 'IsDevelopment' und die beste Erweiterungsmethodenüberladung 'HostingEnvironmentExtensions.IsDevelopment (IHostingEnvironment)' erfordert einen Empfänger vom Typ 'IHostingEnvironment'.

Dieselbe Zeile hat kein neu erstelltes 3.0-Projekt verursacht. Was muss ich ändern / zu dem von 2.2 aktualisierten Projekt hinzufügen?

Verdammtes Gemüse
quelle

Antworten:

156

Die neuen IHostEnvironment, IsDevelopment, IsProductionusw. Erweiterungsmethoden sind im Microsoft.Extensions.HostingNamensraum , die zu Ihrer Anwendung hinzugefügt werden muß.

Referenz:

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
quelle
21
Sie müssen das Microsoft.Extensions.Hosting-Paket nicht installieren. Fügen Sie einfach die using-Anweisung hinzu, wie in @ Gregs Beitrag erwähnt.
Luke
Dann benötigen wir sowohl Microsoft.Extensions.Hosting als auch die Verwendung von Microsoft.AspNetCore.Hosting. zur gleichen Zeit ... Frage mich, wie das funktioniert? Klassenname aus einem Paket, aber seine Methode aus einem anderen?
Macindows
Tatsächlich hat der asp.net Core 3.0 jetzt kein solches Problem. Es wurde behoben.
Rena
66

Wie Rena sagt IsDevelopment, wurde IHostEnvironmentInterface im Microsoft.Extensions.Hosting Namespace verschoben

Ich musste nur das hinzufügen

using Microsoft.Extensions.Hosting;

und dann könnte ich IsDevelopment()wie bisher verwenden.

Greg
quelle