【问题标题】:Asp.Net Core 3.1 App sets the wrong runtimeOptionsAsp.Net Core 3.1 App设置错误的runtimeOptions
【发布时间】:2020-05-15 13:25:19
【问题描述】:

我正在开发一个快速的 ASP.Net Core 3.1 应用程序,并尝试将其推送到 Azure 中的免费 Linux 托管 WebApp。 该应用程序在本地构建、运行并部署到 Windows Azure 中的 docker 环境。所有文件都按预期部署。

挑战是这样的:

使用命令启动应用程序时

dotnet <mywebproject>.dll

日志告诉我:

找不到框架“Microsoft.WindowsDesktop.App”,版本“3.1.0”。

首先要检查的是是否缺少运行时

root@4182491:~/site/wwwroot# dotnet --list-runtimes

Microsoft.AspNetCore.App 3.1.0 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.0 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

经过一番摸索,发现有一个名为.runtimeconfig.json的文件:

{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "frameworks": [
      {
        "name": "Microsoft.WindowsDesktop.App",
        "version": "3.1.0"
      },
      {
        "name": "Microsoft.AspNetCore.App",
        "version": "3.1.0"
      }
    ],
    "configProperties": {
      "System.GC.Server": true
    }
  }
}

所以我需要的运行时就在那里,但是dotnet不想选择它!

从错误中,我假设 dotnet 正在尝试使用它可以看到的第一个框架来启动网站,但是如何在构建过程中摆脱它?我查看了这些文件是如何在构建过程中生成的,并且看不到任何防止框架被放入 runtimeOptions 文件的选项。

由于我使用 Azure DevOps 构建应用程序,我不能简单地手动编辑文件并将其上传到运行它的托管 linux 容器。

所以我需要帮助:

  • 如何构建项目并从正在生成的框架列表中排除“Microsoft.WindowsDesktop.App”
  • 如何使用特定目标框架名称在 linux 容器中启动应用程序(我只能从我在 dotnet exec 中看到的设置中选择版本,使用 SSL 到容器。

这或多或少让我发疯了!

【问题讨论】:

  • 在黑暗中拍摄:stackoverflow.com/a/60158973
  • 是的,不是这样。运行时在那里,但由于某种原因,dotnet 选择使用不兼容的运行时
  • 你能分享你的csproj的属性吗?更具体地说是RuntimeIdentifiers 属性?

标签: .net-core-3.1 azure-webapps


【解决方案1】:

我要自己回答这个问题,因为我在喝太多咖啡后找到了解决方案:

原来你在这里看到的选项

{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "frameworks": [
      {
        "name": "Microsoft.WindowsDesktop.App",
        "version": "3.1.0"
      },
      {
        "name": "Microsoft.AspNetCore.App",
        "version": "3.1.0"
      }
    ],
    "configProperties": {
      "System.GC.Server": true
    }
  }
}

根本不是选项,而是要求。我发现了一个为 WPF 设计的包的依赖项,它当然需要安装 Microsoft.WindowsDesktop.App 运行时。由于我是在 Windows 计算机上开发的,因此代码具有在调试中运行所需的所有运行时,但在 linux 上却没有。

我将暂时关闭它,但由于命名会导致混淆,我会留下问题,以防其他人遇到与我相同的困惑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多