ASP.NET Core 2.2-> 3.0升级 找不到env.IsDevelopment()


102

我将现有的2.2项目升级到3.0。我将程序/启动的新代码从一个新的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升级的项目?

Answers:


165

IHostEnvironmentIsDevelopmentIsProduction等扩展方法是在Microsoft.Extensions.Hosting其中可能需要添加到您的应用程序的命名空间。

参考:

https://docs.microsoft.com/zh-cn/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帖子中提到的using语句。
路加福音

因此,我们既需要Microsoft.Extensions.Hosting,也需要使用Microsoft.AspNetCore.Hosting;。同时...想知道它是如何工作的?来自一个包的类名,但来自另一个包的类名?
Macindows

实际上,asp.net core 3.0现在没有此类问题。已修复。
Rena

70

正如Rena所说IsDevelopment,已移至IHostEnvironmentMicrosoft.Extensions.Hosting命名空间中的Interface。

我只需要添加

using Microsoft.Extensions.Hosting;

然后我可以IsDevelopment()像以前一样使用。


谢谢你一百万,这个答案帮助我解决了这个异常。将asp.net Core 23.0迁移到Core 3.1。只需添加此库,所有功能就如夏普一样。辉煌!
PatsonLeaner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.