【问题标题】:ASP.NET Core application suddenly needs new specific version without changesASP.NET Core 应用程序突然需要新的特定版本而无需更改
【发布时间】:2019-05-09 01:13:24
【问题描述】:

我有一个在 Docker 容器(2.1-aspnetcore-runtime)中运行的 ASP.NET Core 应用程序。

带有应用程序的 docker 容器运行了两个月没有任何问题。最近我不得不更新 AppSettings 中的 ConnectionString。所以我更改了 JSON 文件并部署了一个新的 docker 版本。

这导致了以下消息:

It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.6' was not found.
  - Check application dependencies and target a framework version installed at:
      /usr/share/dotnet/
  - Installing .NET Core prerequisites might help resolve this problem:
      http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
  - The .NET Core framework and SDK can be installed from:
      https://aka.ms/dotnet-download
  - The following versions are installed:
      2.1.4 at [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]

为什么应用程序突然需要“2.1.6”版本?应用程序没有改变,两个月前“2.1.6”版本甚至都不存在。

除此之外,还有一个用于“2.1.6”(2.1.6-aspnetcore-runtime)的特定 Docker 容器。为什么普通的“2.1-aspnetcore-runtime”容器中没有最新版本?

【问题讨论】:

  • 为什么普通的“2.1-aspnetcore-runtime”容器中没有最新版本?您可能在创建(或运行)之前没有运行docker pull microsoft/dotnet:2.1-aspnetcore-runtime你的码头集装箱。如果您不这样做,它将使用最新的 locally tagged 版本(但不是 docker hub 上该标签可用的最新版本),因为 microsoft/dotnet:2.1-aspnetcore-runtime 将指向较新的次要版本当他们出来的时候,但这需要一个新的拉动才能得到它
  • @Tseng 谢谢我会试试的。这可能是问题

标签: docker asp.net-core asp.net-core-2.1


【解决方案1】:

为什么应用程序突然需要“2.1.6”版本?应用程序没有改变,两个月前“2.1.6”版本甚至都不存在。

这个很容易解释。更新的 ASP.NET Core 2.1(及更高版本)模板是使用 implicit versioningMicrosoft.AspNetCore.All/Microsofot.AspNetCore.App 包生成的。

在 ASP.NET Core 2.1 或更高版本中,您可以指定没有版本的 Microsoft.AspNetCore.All 包引用。如果未指定版本,则 SDK (Microsoft.NET.Sdk.Web) 会指定隐式版本。我们建议依赖 SDK 指定的隐式版本,而不是在包引用上显式设置版本号。如果您对此方法有任何疑问,请在 Microsoft.AspNetCore.App 隐式版本的讨论中留下 GitHub 评论。

您在 csproj 中的条目将看起来像

<PackageReference Include="Microsoft.AspNetCore.All" />

而不是

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.4" />

这确保每次重建都将使用/获取系统上可用的最新的次要软件包。这适用于便携式应用程序。自包含基本上做同样的事情,但运行时在发布时可用。

这首先是导致您出现问题的原因。

为什么普通的“2.1-aspnetcore-runtime”容器中没有最新版本?

在创建/构建(或运行)您的 docker 容器之前,您可能没有运行 docker pull microsoft/dotnet:2.1-aspnetcore-runtime

如果您不这样做,它将使用 最新的本地标记 版本(但不是 docker hub 上该标记可用的最新版本),因为 microsoft/dotnet:2.1-aspnetcore-runtime 将指向更新的次要版本出现时,但这需要您进行新的拉取以获取(重新)标记图像的最新版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2016-12-07
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多