記一個.NET AOT交叉編譯時的坑
背景:
使用.NET9開發的Avalonia項目需要部署到Linux-arm64
踩坑:
根據官方AOT交叉編譯文檔配置后執行打包
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下載回來,后續就不用特別引用了