解决.NET AOT交叉编译到Linux - arm64的坑

笔记哥 / 04-02 / 39点赞 / 0评论 / 673阅读
# 记一个.NET AOT交叉编译时的坑 ### 背景: 使用.NET9开发的Avalonia项目需要部署到Linux-arm64 ### 踩坑: 根据官方AOT交叉编译文档配置后执行打包 ```csharp 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下载回来,后续就不用特别引用了