记一个.NET AOT交叉编译时的坑
背景:
使用.NET9开发的Avalonia项目需要部署到Linux-arm64
踩坑:
根据官方AOT交叉编译文档配置后执行打包
shell
dotnet publish -r linux-arm64
提示error : The PrivateSdkAssemblies ItemGroup is required for _ComputeAssembliesToCompileToNative
找答案:
通过在Github上查找,找到了一个AOT交叉编译的文档
这个文档指出了如果需要交叉编译到对应的编译器,需要对应的ILCompiler包,如果需要交叉编译到Linux-arm64,则需要runtime.linux-arm64.Microsoft.DotNet.ILCompiler
包
解决:
添加runtime.linux-arm64.Microsoft.DotNet.ILCompiler
NUGET包后再执行dotnet publish -r linux-arm64
,编译成功
后续:
编译成功后再删除runtime.linux-arm64.Microsoft.DotNet.ILCompiler
包引用,再次执行交叉编译,貌似也能成功,可能只是需要这个包把对应的ILCompiler下载回来,后续就不用特别引用了