错误:找不到任何已安装的 .NET Core SDK

iri*_*tan 58 docker .net-core

当我运行命令时,docker run -i -t myProject它显示错误:

找不到任何已安装的 .NET Core SDK 您是要运行 .NET Core SDK 命令吗?从以下位置安装 .NET Core SDK:https : //aka.ms/dotnet-download

但是,我确实安装了 .NET Core SDK 并且PATH是正确的(如下所示:https : //docs.microsoft.com/en-us/aspnet/core/test/troubleshoot?view=aspnetcore-3.1#no-net -core-sdks-were-detected)。

更重要的是,我的项目只需要运行时 .NET Core SDK。

有谁知道可能是什么问题?

运行 dotnet --info 时,我得到:

.NET Core SDK(反映任何 global.json):版本:3.1.101 提交:b377529961

运行时环境:操作系统名称:Windows 操作系统版本:10.0.18363 操作系统平台:Windows RID:win10-x86 基本路径:C:\Program Files (x86)\dotnet\sdk\3.1.101\

主机(用于支持):版本:3.1.1 提交:a1388f194c

已安装的 .NET Core SDK:3.1.101 [C:\Program Files (x86)\dotnet\sdk]

安装的 .NET Core 运行时:Microsoft.AspNetCore.App 3.1.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 3.1.1 [C:\Program Files (x86) )\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App 3.1.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 3.1.1 [C :\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 3.1.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop。应用程序 3.1.1 [C:\Program Files (x86)\dotnet\shared\Microsoft.WindowsDesktop.App]

要安装其他 .NET Core 运行时或 SDK:https : //aka.ms/dotnet-download

Krz*_*tof 95

对我来说,这发生在我犯错ENTRYPOINT的时候DOCKERFILE

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "SampleAppForDocker.dll"]
Run Code Online (Sandbox Code Playgroud)

确保您在ENTRYPOINT. 我有错误的dll文件名。

  • “仔细检查你要运行的内容。” 这是我永远不会忘记的明智建议。 (3认同)
  • 我将入口点更改为 `ENTRYPOINT ["ls", "."]`,这使我能够查看目录中的所有文件并意识到我使用了不正确的 dll 名称 (3认同)
  • @MathieuVIALES 那是很久以前的事了,我已经换工作了哈哈 (2认同)

小智 9

我有这个问题,但我ENTRYPOINT是正确的。问题在于陈旧或损坏的mcr.microsoft.com/dotnet/core/sdk:3.1图像。所以我清除了所有内容并重建了 docker 镜像。

对于那些不知道的人,这是如何做到的:

Remove all docker containers: docker rm -f $(docker ps -a -q)
Remove all docker images:     docker rmi -f $(docker images)
Run Code Online (Sandbox Code Playgroud)

之后,它工作得很好。


myb*_*ave 6

在 的情况下linux,区分大小写很重要。就我而言,问题在于(顺便说一句,它作为Windows容器工作)

ENTRYPOINT ["dotnet", "backendapi.dll"]
Run Code Online (Sandbox Code Playgroud)

因为库名称的大小写不同。一旦入口点被正确命名为

ENTRYPOINT ["dotnet", "BackendAPI.dll"]
Run Code Online (Sandbox Code Playgroud)


小智 5

我按照微软提供的.Net Core应用程序教程进行操作,并遇到了同样的问题。我将 docker 文件设置为:

FROM mcr.microsoft.com/dotnet/aspnet:3.1
COPY bin/release/netcoreapp3.1/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "NetCore.Docker.dll"]
Run Code Online (Sandbox Code Playgroud)

但它没有拉出 mcr.microsoft.com/dotnet/aspnet 图像作为我的构建基础(我假设,因为我还不是这方面的专家)。我对 aspnet 图像执行了拉取请求:

docker pull mcr.microsoft.com/dotnet/aspnet:3.1
Run Code Online (Sandbox Code Playgroud)

它创造了这个形象。然后,我构建了项目的 docker 映像,并创建了容器。在上述操作之后,我的容器和应用程序按预期运行。