.NET Core应用部署Elastic Beanstalk时遇System.Drawing.Common加载失败错误
解决Elastic Beanstalk Windows环境下.NET Core应用缺失System.Drawing.Common的问题
原因及修复步骤
1. 确认项目依赖正确配置
- 打开项目的
.csproj文件,确认已添加System.Drawing.Common的NuGet引用:<PackageReference Include="System.Drawing.Common" Version="6.0.0" /> - 发布应用时,确保勾选“包含所有依赖项”;用命令行发布的话,框架依赖部署执行
dotnet publish -c Release,独立部署则加上-r win-x64参数,确保打包所有必要组件。
2. 配置.NET 6+的平台兼容性
从.NET 6开始,System.Drawing.Common仅支持Windows平台,需在.csproj中指定运行时标识:
<PropertyGroup> <RuntimeIdentifiers>win-x64</RuntimeIdentifiers> </PropertyGroup>
之后用对应运行时发布:
dotnet publish -c Release -r win-x64
3. 给Elastic Beanstalk环境补装GDI+组件
Windows Server 2019的ServerCore版本可能缺失GDI+基础库,可通过.ebextensions脚本自动安装:
在项目根目录创建.ebextensions/gdi_setup.config文件,写入:
container_commands: 01_enable_gdi_features: command: dism /online /enable-feature /featurename:ServerCore-Gui-Mgmt /all /norestart
部署时Elastic Beanstalk会自动执行该命令,启用所需系统组件。
4. 检查部署包完整性
解压上传的部署zip包,查看runtimes/win-x64/native目录下是否存在libgdiplus.dll文件。如果没有,重新发布项目,确保NuGet包完整下载并打包。
5. 验证IIS应用池位数
你的环境是64位Windows,需确保IIS应用池为64位模式:
- 登录EC2实例,打开IIS管理器
- 找到对应应用的应用池,右键选择“高级设置”
- 将“启用32位应用程序”设为False
内容的提问来源于stack exchange,提问作者Blastjackers
相关产品推荐
相关产品推荐

