C# 将.Net核心项目从3.1降级到2.2-类型或命名空间名称';IWebHostEnvironment';找不到

C# 将.Net核心项目从3.1降级到2.2-类型或命名空间名称';IWebHostEnvironment';找不到,c#,asp.net-core,.net-core,asp.net-core-mvc,asp.net-core-2.2,C#,Asp.net Core,.net Core,Asp.net Core Mvc,Asp.net Core 2.2,我不得不降级一个.Net Core 3.1项目,该项目采用以下方式构建: dotnet新角度-o我的新应用程序 现在应该是针对.Net Core 2.2,Angular v8的 我现在得到: 错误CS0246:类型或命名空间名称“IWebHostenEnvironment”可能无效 找不到(是否缺少using指令或程序集 参考?) 这是在线的: public void配置(IApplicationBuilder应用程序,IWebHostEnvironment环境) Visual Studio 2

我不得不降级一个.Net Core 3.1项目,该项目采用以下方式构建:

dotnet新角度-o我的新应用程序

现在应该是针对.Net Core 2.2,Angular v8的

我现在得到:

错误CS0246:类型或命名空间名称“IWebHostenEnvironment”可能无效 找不到(是否缺少using指令或程序集 参考?)

这是在线的:

public void配置(IApplicationBuilder应用程序,IWebHostEnvironment环境)

Visual Studio 2019中的自动建议修复选项没有帮助,因为它们都是“生成接口”,与可能丢失的包无关

我在此类上的使用声明如下:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.AngularCli;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;`
这些都是有效的(未标记的)参考

还有许多其他错误。我错过了什么

编辑

我之所以选择这条路线,唯一的原因是我无法使用.Net Core 3.1部署到Azure,即使我的应用程序服务设置为使用该版本(LTS)

当前的.NET SDK不支持以.NET Core 3.1为目标。任何一个 以.NET Core 2.2或更低版本为目标,或使用 支持.NETCore3.1

这是CI进程上Azure服务器上的错误。我看到的唯一信息是微软还没有完全准备好.NETCore3.1AzureCI,但我觉得这有点难以置信。为了简单起见,我只想降级到2.2,我知道它可以与Azure配合使用,并满足我项目的需要

我删除了Azure上的应用程序服务,并将其重新创建为Windows下托管的.Net Core 2.2应用程序服务。我遇到的其他问题是在我自己的机器上试图降级到2.2

编辑2

下面是我当前的依赖项,它们都显示了2.2版本,包括SDK


您可以使用IHostingEnvironment而不是.net core 2中的IHostingEnvironment。
当然,您必须确保已安装.NETCore2.2。sdk。

您可以使用IHostingEnvironment而不是.net core 2中的IHostingEnvironment。
当然,您必须确保已安装.NETCore2.2。sdk。

我可以通过安装以下项目模板来解决此问题:

这允许我从头开始创建一个新项目,我可以从中复制
Startup.cs
Program.cs
文件,以及复制已安装的NuGet软件包

这解决了将项目从核心3.1切换到核心2.2所导致的所有错误

由于使用了3.1的一些功能,例如
Range
,因此还涉及到其他代码更改,但我将这些更改支持为2.2兼容的代码更改,并且所有更改都再次正常工作

如果其他人正在尝试此操作,以下是您需要将其从3.1移至2.2的NuGet软件包:


我可以通过安装以下项目模板来解决此问题:

这允许我从头开始创建一个新项目,我可以从中复制
Startup.cs
Program.cs
文件,以及复制已安装的NuGet软件包

这解决了将项目从核心3.1切换到核心2.2所导致的所有错误

由于使用了3.1的一些功能,例如
Range
,因此还涉及到其他代码更改,但我将这些更改支持为2.2兼容的代码更改,并且所有更改都再次正常工作

如果其他人正在尝试此操作,以下是您需要将其从3.1移至2.2的NuGet软件包:


IWebHostEnvironment
仅在.NET Core 3.0和3.1中提供。您将无法使用2.2中的代码。根据@Herohtar的说法,它似乎是
IHostingEnvironment
的替代品。我想做的是在一个新项目下重新构建它,看看它如何构建
Startup.cs
,但是如果我运行
dotnet new angular-o我的新应用程序
,它仍然将其构建为一个3.1.Net核心应用程序。除非我必须下载项目模板,否则我似乎不知道如何将其强制为2.2脚手架。最好看一看针对从2.2升级到3的用户的文档-Microsoft清除了名称空间中的许多模糊性,但基本上没有考虑功能。升级比降级更有可能,因此您可能会找到更多与解释升级更改有关的资源,并能够以降级方式应用它们。我真的不明白您评论的最后一句话。编译代码的设备会发出错误消息。该设备缺少相关的sdk。当您将Azure应用程序服务连接到repo时,Azure机器将下载并编译该repo,然后将其投入使用。Azure现在无法编译3.1。我认为即使Azure机器上有合适的sdk,它也不会使用它,但我必须检查一下我们对构建脚本所做的工作,以确保这里有两个可能有用的资源—一个是显示哪些地区有什么SDK和运行时的地图;另一个是关于推出3.1时遇到的问题的讨论:
IWebHostEnvironment
仅在.NET Core 3.0和3.1中可用。您将无法使用2.2中的代码。根据@Herohtar的说法,它似乎是
IHostingEnvironment
的替代品。我想做的是在一个新项目下重新构建它,看看它如何构建
Startup.cs
,但是如果我运行
dotnet new angular-o我的新应用程序
,它仍然将其构建为一个3.1.Net核心应用程序。除非我必须下载项目模板,否则我似乎不知道如何将其强制为2.2脚手架。最好看一看针对从2.2升级到3的用户的文档-Microsoft清除了名称空间中的许多模糊之处,但基本上没有使用它