מדוע המעבר מ-Xamarin ל-.NET MAUI הוא בלתי נמנע?
תארו לעצמכם: אפליקציית המובייל שלכם על Xamarin.Forms מפסיקה לפתע לפעול ב-iOS 17 — המערכת מדווחת על חוסר תאימות ל-SDK החדש. התמיכה ב-Xamarin.iOS, Xamarin.Android ו-Xamarin.Forms הופסקה רשמית על ידי מיקרוסופט: אין עדכוני אבטחה, תיקוני באגים או תאימות ל-API חדשים. אפליקציה על Xamarin צוברת חוב טכני עם מועד ברור. .NET MAUI הוא היורש היחיד, יציב לשימוש בייצור. הצוות שלנו עם 8 שנות ניסיון במערכת האקולוגית של .NET ביצע 20+ המרות מוצלחות. אנו ממזערים סיכונים בכל שלב ומבטיחים שהאפליקציה שלכם תעבוד על הגרסאות העדכניות ביותר של iOS ו-Android.
שירות ההמרה שלנו מ-Xamarin ל-.NET MAUI ממיר את אפליקציית Xamarin.Forms שלכם ל-.NET MAUI, תוך כתיבה מחדש של Renderers מותאמים אישית כ-Handlers לתאימות iOS ו-Android. אנו מטפלים בכל היבטי המעבר, ומבטיחים שהאפליקציה שלכם מנצלת את ה-SDK העדכניים ביותר.
מה בדיוק נשבר במהלך ההמרה?
מבנה הפרויקט
ב-Xamarin.Forms ישנם שלושה פרויקטים נפרדים: PCL/Shared משותף, ראש iOS וראש Android. ב-MAUI זהו פרויקט יחיד עם מספר יעדים: .csproj אחד עם <TargetFrameworks>net8.0-ios;net8.0-android</TargetFrameworks>. משאבים מקוריים (אייקונים, גופנים, Assets) מועברים ל-Resources/ בתיקיית השורש. AppDelegate.cs ו-MainActivity.cs נבנים מחדש אוטומטית אך דורשים אימות.
מרחבי שמות ו-API
Xamarin.Forms → Microsoft.Maui. זה חל על כל הצהרת using. חיפוש והחלפה פשוט עובד רק חלקית: Device.BeginInvokeOnMainThread → MainThread.BeginInvokeOnMainThread, Application.Current.MainPage → Application.Current?.Windows[0].Page. Renderers מוחלפים לחלוטין ב-Handlers — מודל שונה מהותית להתאמה אישית של פקדים מקוריים.
Renderers → Handlers
זהו האתגר הגדול ביותר. כל Renderer מותאם אישית עבור Entry הוא מחלקה היורשת מ-EntryRenderer עם דריסה של OnElementChanged. ב-MAUI, Handler משתמש במיפוי מאפיינים דרך PropertyMapper ו-CommandMapper. בפרויקט עם 5–10 Renderers מותאמים אישית, המשמעות היא 2–3 שבועות של עבודה טהורה. אנו בונים אותם מחדש מאפס באמצעות Handlers מובנים של MAUI, מה שלעתים קרובות מפחית את נפח הקוד ב-30–50%.
תלותים ותוספים
חלק מהתוספים של Xamarin (למשל, מ-Xamarin.Essentials — שכעת מובנים ב-MAUI) פשוט נעלמו. אנו בודקים חבילות צד שלישי ב-NuGet לתאימות עם net8.0-ios ו-net8.0-android. חבילות לא תואמות מוחלפות בחלופות או שאנו כותבים מעטפות.
כיצד אנו מבצעים את ההמרה?
התהליך מורכב מהשלבים הבאים:
- ביקורת תלותים ו-Renderers — איסוף רשימה מלאה של חבילות NuGet, בדיקת כל אחת לתאימות MAUI; יצירת רישום של Renderers מותאמים אישית עם הערכת מאמץ להמרה ל-Handlers.
-
המרה אוטומטית באמצעות Upgrade Assistant — הכלי מעדכן מכנית
.csproj, target frameworks, ומעביר משאבים. זה מכסה כ-30–40% מהעבודה. -
עבודה ידנית — תיקון Renderers, ניווט, DI, עדכון סימון XAML. עבור ניווט Shell, MAUI זהה מבחינה רעיונית ל-Xamarin.Forms, כך ש-
AppShell.xamlעובר עם שינויים מינימליים. הזרקת תלותים מועברת ל-MauiAppBuilderהמובנה עלMicrosoft.Extensions.DependencyInjection. - בדיקות — כיסוי הלוגיקה העסקית בבדיקות יחידה (xUnit, NUnit) לפני ההמרה; לאחר ההמרה, בדיקות UI באמצעות Appium + MAUI UI Testing ובדיקות ידניות על מכשירי iOS ו-Android פיזיים. בניות מופצות דרך TestFlight ו-Firebase App Distribution.
- פריסה לחנויות — הגדרת CI/CD (Azure DevOps, GitHub Actions), פריסה ל-App Store Connect ול-Google Play Console, הגדרת התראות push (APNs/FCM) וקישורים עמוקים (Universal Links / App Links).
מדוע MAUI טוב יותר מ-Xamarin?
MAUI מאיץ את זמן הבנייה פי 2 ומפחית את גודל קובץ ההתקנה ב-30% בהשוואה ל-Xamarin.Forms. הנה ההבדלים המרכזיים:
| תכונה | Xamarin.Forms | .NET MAUI |
|---|---|---|
| ארכיטקטורת פרויקט | 3 פרויקטי ראש נפרדים | פרויקט יחיד עם מספר יעדים |
| מודל רינדור | Renderers (ירושה) | Handlers (PropertyMapper) |
| הזרקת תלותים | מיכלי DI של צד שלישי | MauiAppBuilder מובנה |
| ביצועי אתחול | ~2–4 שניות | ~1–2 שניות |
| גודל IPA/APK | ~30 MB iOS, ~20 MB Android | ~25 MB iOS, ~15 MB Android |
טעויות אופייניות בהמרה עצמית כוללות: שכחת לבדוק את כל הצהרות using, אי החלפת Device.BeginInvokeOnMainThread ב-MainThread.BeginInvokeOnMainThread, ניסיון להריץ תוסף Xamarin ישן ללא בדיקת תאימות, ושימוש ב-Application.Current.MainPage המיושן במקום Application.Current?.Windows[0].Page.
תוצרים
- תיעוד מלא של שלבי ההמרה ושינויי הקוד.
- גישה לצינור CI/CD ולממצאי בנייה.
- ביקורת של האפליקציה הנוכחית: .csproj, NuGet, Renderers, ניווט, ספריות מותאמות אישית.
- תוכנית המרה עם לוח זמנים שלב אחר שלב והערכת סיכונים.
- המרה אוטומטית באמצעות Upgrade Assistant ולאחריה גימור ידני.
- כתיבה מחדש של כל ה-Renderers המותאמים אישית כ-Handlers.
- עדכון DI, ניווט, שירותים ומשאבים.
- הגדרת CI/CD (Azure DevOps, GitHub Actions) לבניית iOS ו-Android.
- בדיקות: יחידה, אינטגרציה, UI, ידניות על מכשירים.
- פריסה ל-App Store Connect ול-Google Play Console, כולל התראות push וקישורים עמוקים.
- הכשרת הצוות שלכם ב-MAUI (סדנה של 1–2 ימים).
- תמיכה לאחר ההמרה למשך חודש.
לוחות זמנים והערכות
| גודל פרויקט | Renderers מותאמים אישית | לוח זמנים משוער |
|---|---|---|
| עד 20 מסכים | אין / 1–3 | 3–5 שבועות |
| 20–50 מסכים | 3–10 | 6–10 שבועות |
| 50+ מסכים | 10+ | 12+ שבועות |
עלות פרויקט אופיינית: $8,000–$25,000 בהתאם למורכבות. MAUI גם מפחית את עלויות התחזוקה השוטפות בעד 30% — חיסכון פוטנציאלי של $2,000–$7,500 בשנה.
העלות מחושבת באופן אישי לאחר ביקורת של הפרויקט שלכם. הזמינו ביקורת של אפליקציית Xamarin שלכם — נעריך את היקף העבודה ונבחר את פורמט שיתוף הפעולה האופטימלי.
הניסיון שלנו: 8+ שנים של פיתוח אפליקציות מובייל על .NET, 20+ המרות מוצלחות מ-Xamarin ל-MAUI. אנו מבטיחים תוצאות — האפליקציה שלכם תעבוד על גרסאות iOS ו-Android חדשות ללא אובדן פונקציונליות.
צרו קשר כדי לדון בפרטים.







