في أيلول (سبتمبر) ، أصدرنا دعم .NET Core لإنشاء تطبيقات سطح مكتب Windows ، بما في ذلك WPF و Windows Forms. منذ ذلك الحين ، يسرنا أن نرى الكثير من المطورين يشاركون قصصهم حول ترحيل تطبيقات سطح المكتب (ومكتبات التحكم) إلى .NET Core. نسمع باستمرار قصصًا عن مطوري سطح مكتب .NET Windows الذين يقومون بتشغيل أعمالهم باستخدام WPF و Windows Forms ، وخاصة في السيناريوهات التي يضيء فيها سطح المكتب ، بما في ذلك:
- نماذج كثيفة واجهة المستخدم على تطبيقات البيانات (FOD)
- استجابة منخفضة زمن الاستجابة واجهة المستخدم
- التطبيقات التي تحتاج إلى تشغيل حاليا / قطع الاتصال
- التطبيقات ذات التبعيات على برامج تشغيل الأجهزة المخصصة
هذه مجرد بداية لتطوير تطبيقات Windows على .NET Core. تابع القراءة لمعرفة المزيد حول فوائد .NET Core لبناء تطبيقات Windows.

لماذا ويندوز سطح المكتب على. NET الأساسية؟
سيكون .NET Core (وفي المستقبل. NET 5 المستندة إلى. NET الأساسية) مستقبل .NET. نحن ملتزمون بدعم .NET Framework لسنوات قادمة ، ومع ذلك لن يتلقى أي ميزات جديدة ، ستتم إضافتها فقط إلى .NET Core (وفي النهاية. NET 5). لتحسين مكدسات سطح مكتب Windows وتمكين مطوري سطح مكتب .NET من الاستفادة من جميع التحديثات المستقبلية ، قمنا بإحضار Windows Forms و WPF إلى .NET Core. ستظل تقنيات Windows فقط نظرًا لوجود تبعيات مترابطة بإحكام مع واجهات برمجة تطبيقات Windows. لكن .NET Core ، إلى جانب كونه نظامًا أساسيًا مشتركًا ، لديه العديد من الميزات الأخرى التي يمكنها تحسين تطبيقات سطح المكتب.
بادئ ذي بدء ، ستتم إضافة جميع تحسينات وقت التشغيل وميزات اللغة فقط إلى .NET Core وفي المستقبل إلى .NET 5. ومن الأمثلة الجيدة هنا C # 8 التي أصبحت متوفرة في .NET Core 3.0. بالإضافة إلى ذلك ، ستصبح إصدارات .NET Core الخاصة بـ Windows Forms و WPF جزءًا من النظام الأساسي .NET 5. لذلك ، من خلال نقل التطبيق الخاص بك إلى .NET Core اليوم ، فأنت تعدهم لـ .NET 5.
أيضًا ، يوفر .NET Core مرونة النشر للتطبيقات الخاصة بك مع خيارات جديدة غير متوفرة في .NET Framework ، مثل:
- جنبا إلى جنب النشر. يمكنك الآن الحصول على إصدارات .NET Core متعددة على نفس الجهاز ويمكنك اختيار الإصدار الذي يجب أن يستهدفه كل تطبيق من تطبيقاتك.
- نشر بذاتها. يمكنك نشر .NET Framework الأساسي مع التطبيقات الخاصة بك وتصبح مستقلة تمامًا عن بيئة المستخدمين النهائيين - يحتوي التطبيق الخاص بك على كل ما يحتاجه لتشغيله على أي جهاز يعمل بنظام Windows.
- أحجام التطبيق أصغر. في .NET Core 3 قدمنا ميزة جديدة تسمى linker (والتي يشار إليها أحيانًا باسم trimmer) ، والتي ستقوم بتحليل التعليمات البرمجية الخاصة بك وتضمينها في نشراتك المستقلة فقط تلك التجميعات من .NET Core اللازمة لتطبيقك. بهذه الطريقة ، سيتم قطع جميع أجزاء المنصة غير المستخدمة في قضيتك.
- ملفات. exe واحدة. يمكنك حزم تطبيقك ومنصة .NET Core في ملف. exe واحد.
- تحسين أداء وقت التشغيل. يحتوي .NET Core على العديد من تحسينات الأداء مقارنةً بـ .NET Framework. عندما تفكر في تاريخ .NET Core ، الذي تم إنشاؤه مبدئيًا لأحمال عمل الويب والخادم ، فإن ذلك يساعد على فهم ما إذا كان التطبيق الخاص بك قد يشهد فوائد ملحوظة من تحسينات وقت التشغيل. على وجه التحديد ، من المرجح أن تشهد تطبيقات سطح المكتب ذات التبعيات الثقيلة على عمليات إدخال / إخراج الملفات والشبكات وقواعد البيانات تحسينات على أداء تلك السيناريوهات . توجد بعض المناطق التي قد لا تلاحظ فيها الكثير من التغييرات في أداء واجهة المستخدم أو أداء بدء تشغيل التطبيق.
من خلال تعيين الخصائص
<PublishSingleFile>
و
<RuntimeIdentifier>
و
<PublishTrimmed>
في ملف تعريف النشر ، ستتمكن من نشر تطبيق قائم بذاته مكتفٍ كملف .exe مفرد كما هو موضح في المثال أدناه.
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <PublishSingleFile>true</PublishSingleFile> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <PublishTrimmed>true</PublishTrimmed> </PropertyGroup>
الاختلافات بين. NET Framework سطح المكتب و. NET الأساسية سطح المكتب
أثناء تطوير تطبيقات سطح المكتب ، لن تلاحظ اختلافًا كبيرًا بين إصدارات .NET Framework و .NET Core من WPF و Windows Forms. كان جزءًا من جهدنا هو توفير تكافؤ وظيفي بين هذه الأنظمة الأساسية في منطقة سطح المكتب وتحسين تجربة .NET Core في المستقبل. تطبيقات WPF مدعومة بالكامل على .NET Core وجاهزة للاستخدام ، بينما نعمل على تحديثات وتحسينات طفيفة. بالنسبة لنماذج Windows ، يتم نقل جزء وقت التشغيل بالكامل إلى .NET Core ويعمل الفريق على مصمم نماذج Windows. نحن نخطط لإعداده بحلول الربع الرابع من عام 2020 ، ويمكنك الآن التحقق من إصدار المعاينة للمصمم في
Visual Studio 16.4 Preview 3 أو إصدار أحدث. لا تنس تعيين مربع الاختيار في أدوات-> خيارات-> ميزات المعاينة-> استخدم مصمم معاينة نماذج Windows لتطبيقات .NET Core وأعد تشغيل Visual Studio. يرجى الانتباه إلى أن التجربة محدودة في الوقت الحالي لأن العمل عليها مستمر.
كسر التغييرات
هناك بعض
التغييرات الفاصلة بين .NET Framework و .NET Core ولكن تم نقل معظم التعليمات البرمجية المتعلقة بـ Windows Forms و WPF إلى Core as-is. إذا كنت تستخدم مكونات مثل عميل WCF ، و Code Access Security ، ونطاقات التطبيق ، والتشغيل البيني والتشغيل عن بُعد ، فستحتاج إلى إعادة تفعيل كودك إذا كنت تريد التبديل إلى .NET Core.
شيء آخر يجب مراعاته - مسارات الإخراج الافتراضية على .NET Core مختلفة عن .NET Framework ، لذلك إذا كان لديك بعض الافتراضات في التعليمات البرمجية الخاصة بك حول بنية الملف / المجلد للتطبيق قيد التشغيل ، فمن المحتمل أن تفشل في وقت التشغيل.
أيضًا ، هناك تغييرات في كيفية تكوين ميزات .NET. يستخدم .NET Core بدلاً من ملف
machine.config
ملف
<something>.runtimeconfig.json
الذي يأتي مع تطبيق وله نفس الغرض العام ومعلومات مشابهة. بعض التكوينات مثل
system.diagnostics
أو
system.servicemodel
أو
system.servicemodel
غير مدعومة ، لذلك لن يتم تحميل ملف تهيئة التطبيق إذا كان يحتوي على أي من هذه الأقسام. يؤثر هذا التغيير على النظام. تتبع
System.Diagnostics
وسيناريوهات عميل WCF التي تم تكوينها بشكل شائع باستخدام تكوين XML سابقًا. في .NET Core ، ستحتاج إلى تكوينها في التعليمات البرمجية بدلاً من ذلك. لتغيير السلوكيات دون إعادة الترجمة ، فكر في إعداد أنواع التتبع و WCF باستخدام القيم المحملة من مصدر
Microsoft.Extensions.Configuration
أو من
appSettings
.
يمكنك العثور على مزيد من المعلومات حول الاختلافات بين .NET Core و .NET Framework في
الوثائق .
الابتداء
تحقق من هذه الفيديوهات التعليمية القصيرة:
ترقية من .NET Framework إلى .NET Core
أولاً وقبل كل شيء ، قم بتشغيل
Portability Analyzer وإذا لزم الأمر ، قم بتحديث الكود الخاص بك للحصول على توافق بنسبة 100٪ مع .NET Core. فيما يلي
إرشادات حول استخدام Portability Analyzer . نوصي باستخدام عنصر تحكم مصدر أو لعمل نسخة احتياطية من التعليمات البرمجية الخاصة بك قبل إجراء أي تغييرات على التطبيق الخاص بك في حالة عدم إعادة إحياء إعادة البيع بالطريقة التي تريدها ، وقررت العودة إلى حالتك الأولية.
عندما يكون تطبيقك متوافقًا تمامًا مع .NET Core ، فأنت جاهز لنقله. كنقطة بداية ، يمكنك تجربة أداة أنشأناها للمساعدة في أتمتة تحويل مشروع (مشاريع) .NET Framework الخاص بك إلى .NET Core -
try-convert .
من المهم أن تتذكر أن هذه الأداة هي مجرد نقطة انطلاق في رحلتك إلى .NET Core. كما أنه ليس أحد منتجات Microsoft المدعومة. على الرغم من أنه يمكن أن يساعدك في بعض الجوانب الميكانيكية للترحيل ، إلا أنه لن يتعامل مع جميع السيناريوهات أو أنواع المشاريع. إذا كان الحل الخاص بك يحتوي على مشاريع رفضت الأداة أو فشلت في تحويلها ، فسيتعين عليك التنقل يدويًا. لا تقلق ، لدينا الكثير من البرامج التعليمية حول كيفية القيام بذلك (في نهاية هذا القسم).
ستحاول أداة try-convert ترحيل ملفات المشاريع ذات النمط القديم إلى نمط SDK الجديد وإعادة توجيه المشاريع القابلة للتطبيق إلى .NET Core. بالنسبة لمكتباتك ، نترك الأمر لك لإجراء مكالمة فيما يتعلق بالنظام الأساسي: الطقس الذي ترغب في استهداف .NET Core أو .NET Standard. يمكنك تحديده في ملف المشروع الخاص بك عن طريق تحديث قيمة
<TargetFramework>
. قد تستفيد المكتبات التي لا تحتوي على تبعيات خاصة بـ .NET Core مثل WPF أو Windows Forms من استهداف .NET Standard:
<TargetFramework>netstandard2.1</TargetFramework>
بحيث يمكن استخدامها بواسطة المتصلين الذين يستهدفون أنظمة .NET مختلفة. من ناحية أخرى ، إذا كانت المكتبة تستخدم ميزة تتطلب .NET Core (مثل واجهات برمجة تطبيقات واجهة مستخدم سطح مكتب Windows) ، فمن الجيد أن تستهدف المكتبة .NET Core:
<TargetFramework>netcoreapp3.0</TargetFramework>
try-convert هي أداة عالمية يمكنك
تثبيتها على جهازك ، ثم يمكنك الاتصال من CLI:
C:\> try-convert -p <path to your project>
أو
C:\> try-convert -w <path to your solution>
كما ذكرنا سابقًا ، إذا لم تنجح أداة try-convert بالنسبة لك ، فهناك مواد حول كيفية توصيل التطبيق باليد.
فيديوتوثيق