c# - 使用 SkiaSharp 时 Uno Wasm 项目无法编译
问题描述
在我安装NuGet 包后SkiaSharp.Views.Uno
,我所有的 Uno Platform WebAssembly 项目都无法编译。SkiaSharp.NativeAssets.WebAssembly
它可以在没有这些包的情况下正确编译,这发生在每个 WebAssembly 项目中。
错误详情
我在编译 WebAssembly 项目时遇到的错误如下:
System.Exception: Failed to generate AOT layout (More details are available in diagnostics mode or using the MSBuild /bl switch)
at Uno.Wasm.Bootstrap.ShellTask_v6068e93c4525d2d4df3d9218f789d6f8a43d0b20.RunPackager() at D:\a\1\s\src\Uno.Wasm.Bootstrap\ShellTask.cs:line 837
at Uno.Wasm.Bootstrap.ShellTask_v6068e93c4525d2d4df3d9218f789d6f8a43d0b20.Execute() at D:\a\1\s\src\Uno.Wasm.Bootstrap\ShellTask.cs:line 229
当我使用带有 command 的命令行编译项目时msbuild /bl
,它在以下行之后失败:
[00:00:02.1827265] Done resolving assemblies
Running [C:\Users\Ader\source\repos\UnoSkiaTest\UnoSkiaTest\UnoSkiaTest.Wasm\obj\Debug\net5.0\workAot]: cmd /c "C:\Users\Ader\.uno\emsdk\emsdk-2.0.23\emsdk\emsdk_env.bat 2>&1 && C:\Users\Ader\AppData\Local\Temp\dotnet-runtime
-wasm-windows-d277d04-cbe463bfb60-1238462436-Release\tools\ninja.exe "
[00:00:00.0210385] The system could not find the specified path.
我做什么来重现错误
- 使用Multi-Platform App (Uno Platform)模板创建新的 Uno Platform 解决方案。
- 移除除 UWP 和 Wasm 之外的所有项目头。
- 向 Wasm 头添加
SkiaSharp.Views.Uno
和NuGet 包。SkiaSharp.NativeAssets.WebAssembly
- 编译 Wasm 头。编译失败,出现上述错误。
我试过的
我尝试了以下方法,但没有成功:
- 运行
uno-check
命令。它说一切都很好。 - 将 Uno NuGet 包更新到最新的稳定版本。
- 在没有 SkiaSharp NuGet 包的情况下编译 Wasm 项目。它按预期工作。
- 仅删除
SkiaSharp.NativeAssets.WebAssembly
NuGet 包。它仍然给出同样的错误。 - 仅删除
SkiaSharp.Views.Uno
NuGet 包。它仍然给出同样的错误。 - 安装其他 NuGet 包。例如,如果安装
Newtonsoft.Json
没有 SkiaSharp 包,则编译成功。
我不知道如何解决这个问题,并且已经为此烦恼了一段时间。
解决方案
推荐阅读
- powerbi - PowerBI DAX – 同一张表的子查询
- python - 无法使用 virtualenv 或 pipenv 创建虚拟环境
- javascript - 如何使用异步制作自己的等待功能
- java - Spring Data MongoDB 看不到来自父类的私有字段的访问器
- c# - 样式 aspx 导航菜单与悬停时的子菜单
- kdb - KDB 查询返回更多 2 列而不是 1 用于最大过滤器
- javascript - 带有大量内容的 jQuery 工具提示
- javascript - 防止在 JavaScript 中冒泡和捕获事件触发
- python - Python打开模式在写入数据之前重置文件
- lambda - 使用方法参考与 HashSet 重复