未找到 Linux Azure WebApp 的指定框架 'Microsoft.AspNetCore.App',版本“3.1.0”

Specified framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found for a Linux Azure WebApp

问题

在 Azure 中将 .Net Core 2.2 Linux Web 应用程序升级到 .Net Core 3.1 后,应用程序关闭并出现 Specified framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found 错误。我什至用 .Net Core 3.1 创建了一个新的 Linux Web 应用程序,并且在 bash 命令提示符仍然输出 dotnet --list-runtimes2.2.7.

详情

网站宕机

日志流

报告应用程序已关闭,因为它找不到 .net core 3.1。

创建了新的 .net 核心网络应用程序

3.1 linux 中北部的 webapp,同样的问题

确保它在美国中北部运行

根据 https://aspnetcoreon.azurewebsites.net/,应该有完整的 .netCore 3.1 支持

还是.net core 2.2.7

opt/dotnet/runtimes 列出 3、3.0 和 3.0.0,但没有 3.1`

环境变量

我在 Azure 列表 FRAMEWORK_VERSION = lts 中的环境变量,而不是 3.1

发布

这是使用 Azure AppService Deploy 任务从 azure devops ci 管道发布的。 3.1 在这里不可用,所以我选择 LTS

更新 1

似乎罪魁祸首是 Azure Devops Web 应用程序/Web 服务任务中的框架堆栈中缺少 3.1。

每当我从 CI 发布时,Web 应用程序框架都会更新为在此下拉列表中选择的任何内容。如果我在 Azure Web App 上手动将框架更改为 3.1,则会出现该站点。但随后下一次发布它又退回了,因为它将框架恢复为 ci.

中的设置

新问题

如何让 Azure Devops 发布管道发布 .net core 3.1 任务?

更新 2

相关 Azure Devops 论坛post

目前正在调查截至 2020 年 2 月 23 日

.Net Core 3.1 deploy pipeline to Linux App Service

建议的解决方法

  1. 将 YML 用于发布管道并手动将版本从 3.0 更改为 3.1,由答案和 this thread
  2. 注明
  3. framework dependent 版本升级到 self containedReference
  4. 降级到 .NetCore 3.0

我 运行 遇到了同样的情况,使用您提供的信息,我已经能够通过在 Devops Pipelines Build .yml 文件中手动设置值来解决问题。看起来他们只是缺少 RunTime Stack 下拉列表中的值。如果您手动更新构建过程 .yml 文件,如下所示:

这将 select 正确的框架版本。希望这会解决您的 Azure Devops CI 管道部署问题。

一个更简单的解决方案是在 devops 的运行时堆栈下拉列表中输入 DOTNETCORE|3.1。 (感谢 rdavisau!)