将 .NET Framework 4.8 控制台应用程序部署到 Azure Docker 实例

问题描述 投票:0回答:1

我能够在 Docker Desktop 上运行该应用程序。 我能够将其部署到天蓝色容器注册表。 但是创建容器实例失败。

我有点不知道如何正确更改我的 dockerfile 以使用列出的支持版本之一。

我能够在 .NET 7 中运行测试 docker 实例(设置起来更加友好)。 但是,我有一个针对 .NET Framework 4.8 的主要第三方依赖项。

错误:

Error screenshot {"code":"DeploymentFailed","target":"/subscriptions/.../deployments/Microsoft.ContainerInstances-20231003202653","message":"至少一项资源部署操作失败。请列出部署操作以了解详细信息。有关使用详细信息,请参阅 https://aka.ms/arm-deployment-operations。","details":[{"code":"UnsupportedWindowsVersion","message":"不支持的 Windows 映像版本支持的版本为“Windows Server 2019 - 2B 之前、Windows Server 2019 - 2B 之后、Windows Server、版本 1903 - 2B 之后、Windows Server、版本 2004、Windows Server 2022、Windows Server LTSC Preview Build”"}]}

Dockerfile:

FROM mcr.microsoft.com/dotnet/framework/sdk:4.8 AS build
WORKDIR /app

COPY \*.csproj .
RUN dotnet restore

COPY . .
WORKDIR /app
RUN dotnet publish -c Release -o out --no-restore

FROM mcr.microsoft.com/dotnet/framework/runtime:4.8 AS runtime
WORKDIR /app
COPY --from=build /app/out ./
ENTRYPOINT \["MyApp.exe"\]

SDK风格项目:

<Project Sdk="Microsoft.NET.Sdk;Microsoft.NET.Sdk.Publish">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
     <TargetFramework>net48</TargetFramework>
    <DockerDefaultTargetOS>Windows</DockerDefaultTargetOS>
    <DockerfileContext>.</DockerfileContext>
    <ApplicationManifest>app.manifest</ApplicationManifest>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />>
  </ItemGroup>
</Project>

app.manifest 提升应用程序能够读取/写入注册表。

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <assemblyIdentity version="1.0.0.0" name="WorkShark48.exe" />
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
         </requestedPrivileges>
      </security>
   </trustInfo>
</asmv1:assembly>
c# azure docker .net-framework-version .net-4.8
1个回答
0
投票

https://hub.docker.com/_/microsoft-dotnet-framework-sdk/

看起来 docker 文件正在使用 操作系统版本:windowsservercore-ltsc2022

这可能会导致您看到的错误。

尝试将标签更改为: 4.8-windowsservercore-ltsc2019 或 4.8-windowsservercore-ltsc2016 而不是 4.8,看看是否可以解决该错误。

© www.soinside.com 2019 - 2024. All rights reserved.