.NET MAUI安卓应用启动报错:Gdip类型初始化异常如何解决?
解决.NET MAUI Android启动时Gdip类型初始化异常问题
1. 排查间接依赖的System.Drawing.Common
即便你没有直接引用该组件,第三方NuGet包可能间接引入了它:
- 右键项目→管理NuGet程序包→已安装,搜索
System.Drawing.Common,确认是否被依赖引入 - 或在项目目录执行命令:
dotnet list package,查看所有依赖项
若发现该包:
- 优先升级依赖的第三方包到最新版本,多数适配MAUI的包已替换System.Drawing.Common的使用
- 无法升级时,在项目
.csproj中添加配置,强制禁用Android平台的该包引用:
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0-android'"> <PackageReference Include="System.Drawing.Common" Version="7.0.0" ExcludeAssets="all" /> </ItemGroup>
(版本号需匹配你的.NET MAUI版本)
2. 检查MAUI Android核心配置
MAUI内部用SkiaSharp替代GDI+,确保相关配置正确:
- 确认已安装
Microsoft.Maui.Graphics.SkiaNuGet包(MAUI默认包含,若误删需重新安装) - 在
MauiProgram.cs中确保初始化SkiaSharp:
builder.UseMauiApp<App>().UseSkiaSharp();
3. 清理项目缓存并重建
缓存损坏可能引发此类异常:
- 删除项目目录下的
bin和obj文件夹 - 在Visual Studio中执行清理解决方案→重建解决方案,或终端运行:
dotnet clean && dotnet build
4. 验证Android SDK版本兼容性
确保SDK版本与MAUI版本匹配:
- 打开Visual Studio工具→Android→Android SDK管理器,安装对应版本的SDK(如.NET 7对应Android 33,.NET 8对应Android 34)
- 检查
.csproj中的TargetFramework配置,例如:<TargetFramework>net7.0-android33.0</TargetFramework>
5. 排查自定义渲染器/平台代码
若项目有自定义渲染器或Android特定代码:
- 替换所有
System.Drawing相关API为Microsoft.Maui.Graphics命名空间下的API(如用Canvas替代Graphics,Color替代System.Drawing.Color) - 替换第三方绘图库为MAUI兼容的方案(如SkiaSharp)
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

