ASP.NET Core 2.2 -> 3.0 อัพเกรด ไม่พบ env.IsDevelopment ()


96

ฉันอัปเกรดโครงการ 2.2 ที่มีอยู่เป็น 3.0 ฉันคัดลอกโค้ดใหม่สำหรับ Program / Startup จากโปรเจ็กต์ 3.0 ใหม่ไปยังโปรเจ็กต์ 2.2 ที่มีอยู่ของฉัน มันใช้งานได้ แต่IsDevelopment()ด้านล่าง:

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

ผลลัพธ์ในข้อผิดพลาดนี้:

'IWebHostEnvironment' ไม่มีคำจำกัดความสำหรับ 'IsDevelopment' และวิธีการขยายที่ดีที่สุดในการโอเวอร์โหลด 'HostingEnvironmentExtensions.IsDevelopment (IHostingEnvironment) ต้องการตัวรับประเภท' IHostingEnvironment '

บรรทัดเดียวกันไม่ได้ทำให้เกิดโปรเจ็กต์ 3.0 ที่สร้างขึ้นใหม่ ฉันต้องแก้ไข / เพิ่มเติมอะไรในโปรเจ็กต์ที่อัปเกรดจาก 2.2?

คำตอบ:


159

ใหม่IHostEnvironment, IsDevelopment, IsProductionฯลฯ วิธีการขยายอยู่ในMicrosoft.Extensions.Hostingnamespace ซึ่งอาจต้องมีการเพิ่มแอปของคุณ

อ้างอิง:

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


21
ไม่จำเป็นต้องติดตั้งแพคเกจ Microsoft.Extensions.Hosting เพียงเพิ่มคำสั่งใช้ตามที่ระบุไว้ในโพสต์ของ @ Greg
Luke

ดังนั้นเราจึงต้องการทั้ง Microsoft.Extensions.Hosting และการใช้ Microsoft.AspNetCore.Hosting; ในเวลาเดียวกัน ... สงสัยว่ามันทำงานอย่างไร? ชื่อคลาสจากแพ็คเกจหนึ่ง แต่เป็นวิธีการจากอีกแพ็กเกจ?
Macindows

จริงๆแล้ว asp.net core 3.0 ไม่มีปัญหาตอนนี้มันได้รับการแก้ไขแล้ว
Rena

67

ตามที่ Rena กล่าวว่าIsDevelopmentได้ถูกย้ายไปที่IHostEnvironmentInterface ใน Microsoft.Extensions.Hosting Namespace

ฉันต้องเพิ่มไฟล์

using Microsoft.Extensions.Hosting;

แล้วฉันก็ใช้งานได้IsDevelopment()เหมือนเดิม


ขอบคุณล้านคำตอบนี้ช่วยฉันแก้ข้อยกเว้น กำลังโยกย้าย asp.net core 23.0 เป็น core 3.1 เพียงเพิ่มไลบรารีนี้และทำงานได้อย่างคมชัด บิลเลียน!
PatsonLeaner
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.