You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI .NET 8 iOS加载SVG时SkiaSharp方法缺失异常解决咨询

问题:MAUI .NET 8迁移后加载SVG遇MissingMethodException异常

迁移Xamarin Forms项目到MAUI .NET 8后,加载SVG图片时抛出以下异常:

Unhandled Exception:
System.MissingMethodException: Method not found: SkiaSharp.SKMatrix SkiaSharp.SKMatrix.MakeTranslation(single,single)
at SkiaSharp.Extended.Svg.SKSvg.LoadElements(IEnumerable`1 elements, SKCanvas canvas, SKPaint stroke, SKPaint fill)
at SkiaSharp.Extended.Svg.SKSvg.Load(XDocument xdoc)
at SkiaSharp.Extended.Svg.SKSvg.Load(XmlReader reader)
at SkiaSharp.Extended.Svg.SKSvg.Load(Stream stream)
at SKM_MOBILE.UI.Core.Utils.CommonUtils.GetSVG(String svgName, Boolean isEnergized, Boolean inService, String imagePath)
at SkiaSharp.Views.Maui.Controls.SKCanvasView.OnPaintSurface(SKPaintSurfaceEventArgs e)
at SkiaSharp.Views.Maui.Controls.SKCanvasView.SkiaSharp.Views.Maui.ISKCanvasView.OnPaintSurface(SKPaintSurfaceEventArgs e)
at SkiaSharp.Views.Maui.Handlers.SKCanvasViewHandler.OnPaintSurface(Object sender, SKPaintSurfaceEventArgs e)
at SkiaSharp.Views.iOS.SKCanvasView.OnPaintSurface(SKPaintSurfaceEventArgs e)
at SkiaSharp.Views.iOS.SKCanvasView.Draw(CGRect rect)
at UIKit.UIApplication.UIApplicationMain(Int32 args, String[] argv, IntPtr principalClassName, IntPtr delegateClassName) in /Users/builder/azdo/_work/1/s/xamarin-macios/src/UIKit/UIApplication.cs:line 58
at UIKit.UIApplication.Main(String[] args, Type principalClass, Type delegateClass) in /Users/builder/azdo/_work/1/s/xamarin-macios/src/UIKit/UIApplication.cs:line 94
at SKM_MOBILE.Program.Main(String[] args) in /Users/macmini3/Documents/MAUI/SKM_MOBILE/SKM_MOBILE/Platforms/iOS/Program.cs:line 13

触发异常的代码片段:

using (var stream = GetImageStream(svgName.Replace(".PNG", ".svg").Replace(".png", ".svg"), imagePath))
{
    if (stream != null)
    {
        svg = new SkiaSharp.Extended.Svg.SKSvg();
        svg.Load(stream);
        SVGComponentImage[$"{key}"] = svg;
    }
}

解决方案

这个异常是SkiaSharp系列包版本不兼容导致的:.NET 8对应的SkiaSharp包版本已更新,而你使用的SkiaSharp.Extended.Svg版本可能仍适配旧版SkiaSharp,找不到新版中已变更的SKMatrix.MakeTranslation方法。

解决步骤:

  • 统一更新SkiaSharp相关包:在NuGet包管理器中卸载所有旧版SkiaSharp、SkiaSharp.Views.Maui、SkiaSharp.Extended.Svg包,重新安装适配.NET 8的最新稳定版,确保所有包版本完全一致。
  • 清理缓存并重建项目:删除项目目录下的bin和obj文件夹,执行dotnet clean命令清理后,重新编译运行。
  • 检查依赖冲突:打开项目.csproj文件,确认所有SkiaSharp相关包版本统一;若存在间接依赖的旧版包,可通过指定版本号强制覆盖。

内容的提问来源于stack exchange,提问作者Anitha v

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:13:23