【问题标题】:Kubernetes no compatible version found (dotnet)Kubernetes 未找到兼容版本 (dotnet)
【发布时间】:2021-03-24 15:06:14
【问题描述】:

当我在 Google Cloud 中部署我的应用时,日志资源管理器中出现错误>工作负载

找不到任何兼容的框架版本

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

找到以下框架: 5.0.4 在 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

您可以通过安装指定的框架和/或 SDK 来解决问题。

指定的框架可以在:

https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.0&arch=x64&rid=debian.10-x64

我的 Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk

COPY . /app

WORKDIR /app

RUN dotnet publish -c Release -o out

COPY /out .

ENTRYPOINT ["dotnet", "Test.dll"]

这是应该运行的代码

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;


namespace Server
{
    class Program
    {
        private static TcpListener tcpListener;
        public static void Main(string[] args)
        {
            
            tcpListener = new TcpListener(IPAddress.Any, 26950);
   
            tcpListener.Start();
         
            tcpListener.BeginAcceptTcpClient(TCPConnectCallback, null);
            Console.ReadKey();
           
        }
        private static void TCPConnectCallback(IAsyncResult _result)
        {
            TcpClient _client = tcpListener.EndAcceptTcpClient(_result);
            tcpListener.BeginAcceptTcpClient(TCPConnectCallback, null);
        }
    }
}

解决方案:

FROM mcr.microsoft.com/dotnet/sdk:3.1 WORKDIR /app

COPY . .

ENTRYPOINT ["dotnet", "run"]

【问题讨论】:

  • 试试FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
  • 我试了一下,出现以下错误:找不到任何已安装的 .NET Core SDK 您是要运行 .NET Core SDK 命令吗?从以下位置安装 .NET Core SDK:aka.ms/dotnet-download 命令“/bin/sh -c dotnet publish -c Release -o out”返回非零代码:145 ERROR ERROR: build step 0 "gcr.io/cloud- builders/docker" failed: step exited with non-zero status: 145 谢谢你的建议。
  • 再看一遍,你应该在 COPY /out . 行之前添加那一行,保持其他一切不变,即使用两个不同的图像,一个用于构建的 sdk 和一个用于良好运行的运行时。跨度>
  • @MatJ 嗯,它没有用。我遇到了与我在问题中描述的相同的错误,只是它说它没有找到任何框架

标签: c# google-cloud-platform server google-kubernetes-engine


【解决方案1】:

您正在使用sdk 的最新映像,在本例中为版本5.0.4。您需要使用它3.1.0 作为您的应用程序:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1

尝试以下 Dockerfile 之一:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster
WORKDIR /app
COPY ./bin/Debug/netcoreapp3.1 .
EXPOSE 80
ENV ASPNETCORE_URLS "http://*:80"
ENTRYPOINT ["dotnet", "Test.dll"]

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "Test.dll"]```

【讨论】:

  • 这样我得到了同样的错误,除了“发现以下框架:5.0.4 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]”变成“-没有框架找到了。”
  • 您的应用程序针对的 .Net Core 框架是什么?
  • netcoreapp3.1 这是我的 .csproj 文件,所以我猜我的目标是 netcoreapp3.1
  • @apprentice 刚刚更新了答案。检查并试一试:)
  • 我又遇到了同样的错误:/ 我假设你从教程中得到了代码。如果是这样,关于它的问题可能是在教程中他们实际上使用了 WebBuilder 等,但我的应用程序只是一个没有前端的 TCP 连接主机
猜你喜欢
  • 2016-12-26
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
相关资源
最近更新 更多