ChatGPT解决这个技术问题 Extra ChatGPT

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

我将现有的 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 升级的项目进行修改/添加什么?


R
Rena

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

参考:

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


无需安装 Microsoft.Extensions.Hosting 包,只需添加 @Greg 帖子中提到的 using 语句。
那么我们需要 Microsoft.Extensions.Hosting 和使用 Microsoft.AspNetCore.Hosting;同时......想知道它是如何工作的?来自一个包的类名,但来自另一个包的方法?
其实asp.net core 3.0现在没有这个问题,已经修复了。
O
Omu

正如 Rena 所说,IsDevelopment 已移至 Microsoft.Extensions.Hosting 命名空间中的 IHostEnvironment 接口

我只需要添加

using Microsoft.Extensions.Hosting;

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


谢谢一百万,这个答案帮助我解决了异常。正在将 asp.net core 23.0 迁移到 core 3.1。只需添加这个库,所有工作都像锐利一样。天真!
A
Alison Horacio

在扩展名中:

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());
    }
}

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅