Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 在.NET Core 3.1 Nano Server Docker映像上安装.NET运行时_.net Core_Docker Run_Nano Server - Fatal编程技术网

.net core 在.NET Core 3.1 Nano Server Docker映像上安装.NET运行时

.net core 在.NET Core 3.1 Nano Server Docker映像上安装.NET运行时,.net-core,docker-run,nano-server,.net Core,Docker Run,Nano Server,我有一个.NET Core 3.1控制台应用程序,它使用Microsoft.NET.Sdk.WindowsDesktopproject Sdk,因为它引用了System.Windows.Media.Media3D中的Geometry3D 我想在Windows Nano Server上的Docker容器中运行此操作,但在执行Docker run时收到以下错误: It was not possible to find any compatible framework version The fram

我有一个.NET Core 3.1控制台应用程序,它使用
Microsoft.NET.Sdk.WindowsDesktop
project Sdk,因为它引用了
System.Windows.Media.Media3D
中的
Geometry3D

我想在Windows Nano Server上的Docker容器中运行此操作,但在执行
Docker run
时收到以下错误:

It was not possible to find any compatible framework version
The framework 'Microsoft.WindowsDesktop.App', version '3.1.0' was not found.
  - No frameworks were found.

You can resolve the problem by installing the specified framework and/or SDK.

The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.WindowsDesktop.App&framework_version=3.1.0&arch=x64&rid=win10-x64
如何安装所需的sdk和运行时?

这是我现有的Dockerfile:

FROM mcr.microsoft.com/dotnet/core/runtime:3.1-nanoserver-1903 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1903 AS build
WORKDIR /src
COPY ["HelloWpfCore/HelloWpfCore.csproj", "HelloWpfCore/"]
RUN dotnet restore "HelloWpfCore/HelloWpfCore.csproj"
COPY . .
WORKDIR "/src/HelloWpfCore"
RUN dotnet build "HelloWpfCore.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "HelloWpfCore.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "HelloWpfCore.dll"]

GitHub repo在这里:

我找到了答案。我创建了一个映像,用于在Nano服务器基础映像上安装Windows桌面运行时

# escape=`

# Installer image
FROM mcr.microsoft.com/windows/servercore:1909 AS installer

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

# Retrieve .NET Core Runtime
# USER ContainerAdministrator
RUN $dotnet_version = '3.1.5'; `
    Invoke-WebRequest -OutFile dotnet-installer.exe https://download.visualstudio.microsoft.com/download/pr/86835fe4-93b5-4f4e-a7ad-c0b0532e407b/f4f2b1239f1203a05b9952028d54fc13/windowsdesktop-runtime-3.1.5-win-x64.exe; `
    $dotnet_sha512 = '5df17bd9fed94727ec5b151e1684bf9cdc6bfd3075f615ab546759ffca0679d23a35fcf7a8961ac014dd5a4ff0d22ef5f7434a072e23122d5c0415fcd4198831'; `
    if ((Get-FileHash dotnet-installer.exe -Algorithm sha512).Hash -ne $dotnet_sha512) { `
        Write-Host 'CHECKSUM VERIFICATION FAILED!'; `
        exit 1; `
    }; `
    `
    ./dotnet-installer.exe /S

# Runtime image 
FROM mcr.microsoft.com/windows/nanoserver:1909

ENV `
    # Enable detection of running in a container
    DOTNET_RUNNING_IN_CONTAINER=true

# In order to set system PATH, ContainerAdministrator must be used
USER ContainerAdministrator
RUN setx /M PATH "%PATH%;C:\Program Files\dotnet"
USER ContainerUser

COPY --from=installer ["/Program Files/dotnet", "/Program Files/dotnet"]
我将此推送到Docker Hub上的回购协议:

然后,我只是将此自定义图像用作示例应用程序的基础图像: