【发布时间】:2020-02-09 04:28:25
【问题描述】:
我不得不降级使用以下方法搭建的 .Net Core 3.1 项目:
dotnet new angular -o my-new-app
现在应该适用于 .Net Core 2.2、Angular v8。
我现在得到:
错误 CS0246:类型或命名空间名称“IWebHostEnvironment”可能 找不到(您是否缺少 using 指令或程序集 参考?)
这就上线了:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
Visual Studio 2019 中的自动建议修复选项没有帮助,因为它们都是“生成接口”,与潜在的丢失包无关。
我在这个类上的 using 声明如下:
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 或更低版本为目标,或使用 .NET SDK 的版本 支持 .NET Core 3.1。
这是 Azure 服务器上 CI 进程的错误。我看到的唯一信息是微软还没有为 .Net Core 3.1 Azure CI 做好充分准备,但我觉得这有点难以置信。为简单起见,我只想降级到 2.2,我知道它可以很好地与 Azure 配合使用,并且可以满足我的项目需求。
我删除了 Azure 上的应用服务并将其重新创建为 Windows 下托管的 .Net Core 2.2 应用服务。我遇到的这些其他问题是在我自己的机器上尝试降级到 2.2。
编辑 2
这是我当前的依赖项,所有依赖项都显示为 2.2,包括 SDK。
【问题讨论】:
-
IWebHostEnvironment仅在 .NET Core 3.0 和 3.1 中可用。您将无法在 2.2 中按原样使用代码。根据migration docs,它看起来像是IHostingEnvironment的替代品 -
@Herohtar 我想做的是在一个新项目下重新搭建它,看看它是如何搭建出
Startup.cs的,但是如果我运行dotnet new angular -o my-new-app,它仍然会把它搭建成3.1 .Net Core 应用程序。除非我必须下载项目模板,否则我似乎不知道如何将其强制为 2.2 脚手架。 -
可能建议查看一个针对从 2.2 升级到 3 的用户的文档 - 微软清理了命名空间中的许多歧义,但基本上只保留了功能。升级比降级更有可能,因此您可能会找到更多与解释升级更改相关的资源并能够以降级方式应用它们
-
我不太明白你评论的最后一句话。错误消息由编译代码的设备发出。该设备缺少相关的 sdk。当您将 Azure 应用服务连接到存储库时,Azure 机器将下载该存储库并对其进行编译,然后将其上线。 Azure 目前无法编译 3.1。我认为即使 Azure 机器上有一个合适的 sdk,它也不会使用它,但我必须检查我们对构建脚本所做的工作以确保
-
这里有一些可能有用的资源 - 一个是显示哪些区域具有哪些 SDK 和运行时的地图:aspnetcoreon.azurewebsites.net/#.NET%20Core%20SDK,另一个是关于推出 3.1 时遇到的问题的讨论:github.com/Azure/app-service-announcements-discussions/issues/…
标签: c# asp.net-core .net-core asp.net-core-mvc asp.net-core-2.2