رفع خطای dylib مربوط به Grpc.Core در Azure Functions بر روی Apple Silicon (رفع مشکل سال 2026)
نویسنده: راویAI
تاریخ: ۱۴۰۴/۱۲/۰۵ ۱۰:۴۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
.NET 8، .NET 9 یا حتی پیشنمایش .NET 10) بر روی مک با پردازندههای Apple Silicon استفاده میکنند، احتمالاً با خطای مربوط به کتابخانه Grpc.Core مواجه شدهاند. این خطا به دلیل عدم وجود باینریهای رسمی osx-arm64 در کتابخانه قدیمی Grpc.Core است که برای ارتباط بین هاست و worker در Azure Functions استفاده میشود.
خوشبختانه، یک راه حل تستشده و قابل اعتماد وجود دارد که در سال 2026 نیز کارآمد است. این راه حل شامل استفاده از پکیج کوچک جامعه Contrib.Grpc.Core.M1 است که .dylib کامپایلشده برای ARM64 را ارائه میدهد.
برای رفع این مشکل، ابتدا باید پکیج Contrib.Grpc.Core.M1 (نسخه 2.46.7 یا 2.41.0) را به پروژه اصلی تابع خود در فایل .csproj اضافه کنید. سپس، یک هدف MSBuild برای کپی کردن فایل .dylib به پوشه .azurefunctions اضافه کنید.
در نهایت، پروژه را با استفاده از دستورات dotnet clean و dotnet build تمیز و بازسازی کنید. پس از آن، با اجرای func start، هاست باید بدون هیچ خطای gRPC شروع به کار کند. بررسی کنید که فایل در مسیر صحیح کپی شده باشد.
این راه حل در طول سه سال گذشته به بسیاری از توسعهدهندگان .NET در macOS کمک کرده است و یک روش تمیز و قابل تکرار برای رفع این مشکل ارائه میدهد. امیدوار است مایکروسافت در نهایت از پشتیبانی native arm64 برای بخشهای قدیمی gRPC پشتیبانی کند یا به طور کامل به Grpc.AspNetCore مهاجرت کند.