Durable Functions harika bir ürün, Apple Mac Mx (M1,M2...) bilgisayarlar da bir o kadar öyleler. Ama ikisi bir araya geldiğinde bugün yaşadığımız bir problem ortaya çıkıyor. Klasik Azure Functions geliştirirken bir problem yok iken, Durable Functions'a geçtiğimizde değişik bir hata bizi karşıladı.
Aldığımız hata mesajının bir kısmı şöyle idi:
Grpc.Core: Error loading native library. Not found in any of the possible locations: /Users ...
Hata mesajında aradığı dosyanın adına dikkat ettiğimizde problem anlaşılıyor. Bu dosyanın ARM64 için bir derlemesi bulunmuyor. En azından MacOS için. Bu belki henüz yayınlanmamış ön izleme paketlerinde bulunabilir diye tüm bağımlı paketleri güncellemek fayda etmedi. Ardından şu adrese ulaştım.
https://github.com/einari/Grpc.Core.M1
Bu deponun içeriğinde Grpc'yi Mac Mx üzerinde kullanmak için NuGet paketi ve bunu lokal ortamda derlemek için çözüm sunuluyor. İhtiyacınız olan sürüme göre yönergeleri izleyip derleme yapabilirsiniz. Fakat Azure Functions için daha basit bir çözüm var. İlgili libgrpc_csharp_ext.arm64.dylib
isimli dosyayı indirip projenizin altında .azureFunctions
dizininin altına kopyalayın.
Proje ait .csproj
dosyanı açın ve <Project>
düğümü içerisine aşağıdaki XML parçasını kopyalayın.
<ItemGroup>
<Content Include=".azureFunctions\libgrpc_csharp_ext.arm64.dylib">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
PreserveNewest
seçeneği yerine dilersenizAlways
kullanabilirsiniz bu durumda her derleme işleminde dosya değişiklik olmasa da tekrar kopyalanır.
artık projeniz olması gerektiği gibi çalışacaktır.