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

w00*_*ngy 11 azure .net-core azure-web-app-service .net-core-3.1

问题

在 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 App,在 bash 命令提示符后仍然输出dotnet --list-runtimes2.2.7.

细节

网站关闭

应用程序错误

日志流

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

日志流

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

3.1 linux webapp in North Central,同样问题

创建了新的网络应用程序

确保它在美国中北部运行

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

仍然是 .net 核心 2.2.7 cmd 提示 2.2.7

opt/dotnet/runtimes 列出 3、3.0 和 3.0.0,但没有 3.1` 在此处输入图片说明

环境变量

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

出版

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

DevOps 发布管道

更新 1

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

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

新问题

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

更新 2

相关的 Azure Devops 论坛帖子

目前正在调查截至 2/23/2020

.Net Core 3.1 将管道部署到 Linux 应用服务

建议的解决方法

  1. 使用 YML 进行发布管道并手动将版本从 更改3.03.1,由 answer 和此线程注明
  2. framework dependent发行版升级到self contained. 参考
  3. 降级到 .NetCore 3.0

小智 3

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

在此输入图像描述

这将选择正确的框架版本。希望这将解决您的 Azure Devops CI Pipeline 部署问题。

  • 似乎可以将字符串 DOTNETCORE|3.1 直接输入到运行时堆栈框中(并且它解决了问题) - 因此无需将发布管道转换为 yaml! (2认同)