.Net6 中的 Windows Nano Server / Servercore 不支持 System.Drawing

This article was translated from English: Does it need improvement?
Translated
View the article in English

您是否看到以下错误信息?

  • 加载 Chrome 浏览器程序集时出错 (libcef.dll)
  • Chrome 浏览器部署失败 (加载 libcef.dll 时出错) (203)

这是因为 Windows Nano Server 中不包含 System.Drawing,而 Windows Servercore (.Net6).

Windows 的官方 .NET 映像基于 Nano Sever。

要解决这个问题,我们建议采用以下方法之一:

1.以 "自包含 "方式构建和部署项目 (点击获取 更多信息 关于此选项)

2.通过更改 .csproj 文件中的以下属性,切换到基于Linux的容器映像:

<DockerDefaultTargetOS>Windows</DockerDefaultTargetOS>
      to  
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
XML

然后,您就可以添加 Linux 依赖项了:

RUN apt update \     && apt install -y libgdiplus libxkbcommon-x11-0 libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1

(上述依赖关系适用于 Debian 11,但也可查看 Ubuntu、CentOs、Amazon Linux 等的具体依赖关系。 这里)