VB6 إلى C#
محول VB6 يستند إلى VB6 -> محول C# 2017.
الاستخدام
مجاني للاستخدام. مجاني للشوكة. حرية المساهمة. حرية السؤال عنها. مجاني للبيع. حرية البيع باسمك... حرية القيام بأي شيء باستثناء القول "لا أستطيع" (راجع الترخيص).
انظر أدناه للحصول على المعلومات الأساسية. راجع ويكي للحصول على معلومات أكثر تفصيلا. لا تتردد في الاتصال للحصول على الدعم.
بداية سريعة
- افتح الملف
prj.vbp ، وابدأ البرنامج (يتطلب VB6 IDE). - أدخل بعض قيم التكوين في نموذج
Config عبر الزر. - الآن بعد أن حددت مشروعك، انقر فوق زر
SCAN . يساعد هذا المحول على معرفة الفرق بين الطرق بدون الأقواس والمتغيرات/الثوابت. كما أنه ينشئ قائمة كاملة بالواردات (والتي يمكن تنظيفها في VS 2019 IDE عبر ^K^E). - إذا أردت، انقر فوق
SUPPORT لإنشاء بنية دعم المشروع الأساسية.- وبدلاً من ذلك، يمكن نسخ الملفات
VBExtension.cs و VBConstants.cs مباشرةً من جذر المشروع وإدراجها في مكان آخر.
- ثم أدخل اسم الملف وانقر فوق
Single File لمحاولة تحويل الملف الذي تدخله بجانبه.
إذا كنت ترغب في تحويل المشروع بأكمله، فما عليك سوى النقر فوق ALL ، وسيقوم بإجراء المسح وإنشاء الدعم وتحويل المشروع بالكامل بشكل فوري.
ملحوظة: قد لا يكون هذا هو الأسرع، لكنه لا يزال يتطلب مجهودًا يدويًا، ولكنه أسرع من القيام بذلك يدويًا!
التحديثات 2021-12-01
تعامل الإصدار الأصلي من المحول مع المشكلة بطريقة كتلة تلو الأخرى، حيث قام بفصل كل وحدة برنامج منطقية إلى سلسلة خاصة بها وتحويلها من تلقاء نفسها. ونتيجة لذلك، قام المحول بتمريرات متعددة وكان يعمل بشكل بطيء للغاية. بعد تحديث Linter لعدم استخدام هذا الأسلوب، ولكن ببساطة للتشغيل عبر الكود من الأعلى إلى الأسفل، بدا واضحًا أن المحول يمكنه فعل الشيء نفسه بنفس القدر من الدقة.
لذلك، تم إصدار الإصدار v2 من المحول اليوم، جنبًا إلى جنب مع الإصدار v1، عبر أزرار الاختيار الموجودة في النموذج الرئيسي. لا تتردد في المزج والمطابقة، وتحويل المشروع بأكمله باستخدام أحدهما، ثم الملفات الفردية باستخدام الآخر. نأمل، مع الطريقتين المختلفتين تمامًا، أن يعمل أحدهما بشكل أفضل من الآخر وسيؤدي إلى عمل أقل. مرة أخرى، لا يزال كلاهما مجرد تحويل بنسبة 80-90٪. هناك العديد من الأشياء التي سيتعين عليك القيام بها يدويًا والتحقق مرة أخرى (مثل حدود الحلقة)، ولكن مرة أخرى، من المؤكد أنها تتفوق على تغيير جميع & s في كود VB6 الخاص بك إلى + s لـ C#.
كيف يمكنني...؟
هناك الكثير من الأسئلة عندما يتعلق الأمر بالتحويل. إذا كنت تريد فقط معرفة الطريقة التي يتعامل بها هذا المحول مع أنماط معينة، يرجى الاطلاع على كيف يمكنني...؟ الصفحة في ويكي لدينا.
سواء كنت تستخدم هذا المحول أم لا، فإننا نقدم حلنا لألغاز التحويل التي تواجهها بشكل شائع. حلولنا سريعة ودقيقة، ولا تستخدم عمومًا الكثير من البرمجة أو الحمل الزائد للسياق. على الرغم من أنهم قد يعتمدون على وحدة الامتداد الخاصة بنا، إلا أن كل ذلك عبارة عن كود C# أصلي، وبشكل عام، يشبه إلى حد ما ما فعلته في VB6.
متطلبات
متطلبات المحول
- يعمل المحول في VB6 IDE. كما تعلمون، IDE الخاص بالبرنامج الذي تحاول تحويله.
متطلبات البرنامج المحولة
- يدعم Visual Studio بعض الإصدارات الحديثة نسبيًا من C#. أو البديل.
- حزم طاقة Visual Basic / رابط آخر / متوفر في الريبو لأنه قد يكون من الصعب العثور عليه في بعض الأيام
- يسمح باستخدام وظائف VB القياسية مثل
Mid و Trim و Abs و DateDiff وما إلى ذلك مباشرةً في كود C#. - يضمن التوافق بنسبة 99.9% مع وظيفة VB6 (باستثناء
Format ...)، دون الحاجة إلى مكتبة الصندوق الأسود التابعة لجهة خارجية (إنها من MS، لذا فهي صندوق أسود تابع لجهة خارجية). - من السهل التكرار بمجرد تحويله وتشغيله.
تعليمات
يرجى الاطلاع على الويكي لمزيد من المعلومات حول الاستخدام.
اعتبارات التصميم
- بسيط - غير مصمم لإجراء تحويل بنسبة 100%. ربما فقط 80٪ - 90٪ من العمل الناخر.
- مبني على VB6 - لماذا لا؟ يجب أن يكون لديك مترجم VB6 فعال إذا كنت تقوم بالتحويل من الإصدار vb6 على أية حال.
- مخصص - تم إنشاؤه لمشروع شخصي، وبالتالي تم تصميمه خصيصًا لحالة الاستخدام الخاصة بنا. ولكن، لا يوجد أي سبب يمنع أي شخص من التحقق من المنطق وتعديله لأي من مشكلاته الخاصة.
- انتهازية - يعتمد هذا الكود بشكل كبير على التوحيد النسبي لـ VB6 IDE:
- يعد التباعد متسقًا نسبيًا لأن IDE يفرضه.
- يمكن ضمان الكتابة بالأحرف الكبيرة للكلمات الرئيسية.
- نحن نستفيد من Microsoft Power Packs، ولا نحتاج إلى تحويل معظم بيانات VB6 الأساسية. علاوة على ذلك، يمكنك الاستمرار في استخدام عبارات مثل
DateDiff و Left و Trim كما تفعل في VB. أو، إذا كنت تفضل ذلك، ابدأ في الهجرة بعيدًا عنهم بعد التحويل. نحن ببساطة نسحب مكتبة Microsoft لتحقيق أقصى قدر من التوافق، وبالتالي، ليس لدينا مكتبة استبدال سلسلة كبيرة، ولا نعتمد بشكل كبير كما تفعل بعض المحولات على مكتبات DLL أو المكتبات الخاصة بنا (نقوم بإنشاء عدد قليل منها لسهولة بناء الجملة، ولكن والنتيجة النهائية هي كود C# خالص).
- غير مفترض - فهو يفترض أن التعليمات البرمجية التي تم تجميعها أثناء وجودها في VB، لذلك لا تفترض أنه لن يتم العثور على المرجع الذي لا يمكن حله.
- الواردات العامة - تستورد كل وحدة تعليمات برمجية، تمامًا كما يفعل VB6 تلقائيًا. اجعل Visual Studio يقوم بعمل تحديد أي منها يتم استخدامه ببساطة عن طريق تحسين عمليات الاستيراد بعد التحويل.
- C# 2017 - هذا قادم متأخرًا. لم يكن هناك أبدًا حل مجاني لـ VB6 -> C#، والآن بعد أن تم إيقاف VB.NET بشكل أو بآخر، لماذا لا؟
المشكلات المعروفة (الإصدار 1 فقط)
- في الوقت الحالي، غالبًا ما يرفض المحول الملف الذي يحتوي على كلمة "خاصية" في أي مكان فيه (بخلاف إعلان الملكية). في حين أن هذا يمثل مشكلة ومن المحتمل أن يتم إصلاحه، فقد تمت مواجهته في نهاية فائدة المشروع (وبالتالي ليس عاجلاً في قائمة الإصلاح)، وحيث أعاق التقدم، فإن المتغير الذي يحتوي على كلمة "...ملكية" تمت إعادة تسميته ببساطة مؤقتًا إلى شيء مثل "...Prppty"، ثم تم تغييره مرة أخرى في الملف المحول.
- تمت معالجة هذه المشكلة في الإصدار 2، إلا أنها قد تظهر في بعض الحالات في الإصدار 1.
الجوانب السفلية
- لن ينتج عن ذلك تعليمات برمجية سيتم تجميعها في النموذج الذي تم إنشاؤه. إن الميل الأخير هو ببساطة الأكثر تكلفة في التشغيل الآلي، وغالبًا ما يكون من الأفضل القيام به يدويًا. بدا الأمر أكثر ملاءمة لجعل شيء ما يحصل على معظم الطريق، وإنهاء أي حالات حافة أو تحويل نهائي يدويًا.
- تخصيص محدود لواجهة المستخدم (ولكن التخصيص غير المحدود القائم على التعليمات البرمجية). هذا ليس الحل الأكثر تخصيصًا. ما لم تكن بالطبع ترغب في التعمق في القليل من كود المصدر الموجود على المحول. ولكن هذا هو السبب في أنها متاحة.
- إخراج غير مبطن. الكود الناتج عبارة عن فوضى من الناحية الأسلوبية. هذا هو الغرض من IDE الحديث. يمكن تنظيف جميع التنسيقات السيئة باستخدام ^K^D. الواردات غير المستخدمة مع ^K^E. وهناك الكثير من علامات { و } الإضافية التي قد ترغب في حذفها.
- المحول حاليًا سيئ حقًا في حدود الحلقة. عذرًا، إنها إحدى عيوب تحويل VB6->C#، وليس هناك الكثير من المنطق حول كيفية التحويل. إنه أمر ممل، لكن قم بإجراء بحث على مستوى المشروع عن جميع الحلقات وافحص الحدود يدويًا.
- هناك طريقة إضافية لكل حدث. واحدة للتوقيع الصحيح، وواحدة للتوقيع الأصلي. في معظم الحالات، يكون التكرار غير ضروري، ولكنه يوفر التحويل الأسهل. يمكن اختصارها إلى طريقة واحدة في معظم الحالات (ولكن ليس كلها، ولهذا لا أفعل ذلك).
ملاحظة: في معظم الأماكن التي يعرفها المحول أنه ستكون هناك مشكلة، فإنه سيضيف تعليقًا توضيحيًا للكود من خلال تعليق // TODO: :. تأكد من معالجة كل واحدة منها بدقة.
الإيجابيات
- إنه مجاني.
- لديك المصدر (قم بتخصيصه، أيًا كان).
- افعل كل شيء أو ملف واحد فقط في كل مرة.
- إنه أفضل بكثير من القيام بكل ذلك يدويًا.
- وسوف يعطيك فكرة جيدة عما يحدث، دون الحاجة إلى بذل كل الجهد اليدوي لإجراء تحويل بسيط.
- ليس التحويل الأسرع، ولكنه تحويل واضح (لكن الإصدار 2 أصبح أفضل بكثير). فحص وظائف مثل
ConvertSub أو ConvertPrototype .- لكن فكر في الأمر... أنت تتطلع إلى التحويل لمرة واحدة، وليس التكرار مرارًا وتكرارًا أثناء التنفيذ المحول.
- يسمح بفحص كيفية تحويل شيء ما. لا أحب الإخراج؟ تغييره.
- يمكنك وضع نقطة توقف VB6 في أي مكان تريده والتوقف. بالإضافة إلى ذلك، ما عليك سوى إضافة سطر مثل
If LineN = 387 Then Stop ، وسيتوقف المحول عند هذا الحد.
إضافات
- لينتر رمز VB6.
?Lint . استخرج أكبر قدر ممكن من ديون التكنولوجيا حتى قبل بدء العملية. - نموذج VB6 إلى XAML
الاحتمالات المستقبلية
المشروع إلى حد كبير كما هو. إنه يعمل على ما يفعله. ومع ذلك، هناك بعض الأشياء التي يجب مراقبتها مثل "خصائص الامتداد". إذا نفذت C# هذا أو شيء من هذا القبيل، فإن التحويل .Visible = True يصبح أكثر وضوحًا. نظرًا لأن لغة C# تستخدم التعداد الآن بدلاً من القيمة المنطقية، فهذا غير ممكن، ولكنه سيكون ممكنًا مع هذه الميزة.
اتصال
- إذا كانت لديك أية أسئلة أو استفسارات أو كنت ترغب ببساطة في الحصول على بعض النصائح السريعة، فلا تتردد في فتح مشكلة. لا أستطيع أن أضمن الكثير، ولكني أحاول!