سؤال

أنا أعمل على مشروع C + + التي لا تنوي تطوير أو نشر استخدام .صافي المكتبات أو أدوات ، مما يعني أنه سيكون من المنطقي بالنسبة لي أن إنشاء باستخدام Visual Studio تطبيق وحدة تحكم Win32.ومع ذلك, لقد سمعت أن التصحيح قدرات عند استخدام CLR التطبيق تحت Visual Studio هي أقوى بكثير.لذلك لدي بعض الأسئلة:

  1. هل صحيح أن وجود CLR التطبيق مقابلWin32 التطبيق يضيف قدرات عملية التنمية الخاصة بك حتى لو كنت لا تستخدم أي .صافي المكتبات أو غيرها من الموارد ؟

  2. إذا كان الأمر كذلك, سوف لا يزال تكون قادرة على تطوير/ترجمة المشروع كما CLR المشروع إلى الاستفادة من هذه حتى على الرغم من أنني سأكون النامية نقية C++ المشروع باستخدام المحكمة الدولية الخاصة بلبنان ، إلخ.و لا تستفيد من أي .صافي وظيفة ؟ أو أن مثل هذا المشروع يتطلب الاختلافات الأساسية التي من شأنها أن تجعل غير تافهة العودة ، وهذا يعني أنني يجب أن العصا مع وحدة تحكم Win32 التطبيق ؟

هل كانت مفيدة؟

المحلول

خلاصة الجواب إذا كنت لا تنوي استخدام CLR أو أي .صافي الكائنات في التطبيق الخاص بك مجرد استخدام عادي Win32 C++ المكتبة.تفعل أي شيء آخر سوف يسبب لك الألم أسفل الطريق.

الآن للإجابة على السؤال الأصلي عن التصحيح ، نعم التصحيح مع CLR لديها بعض المزايا على التصحيح العادي C++ التطبيق.بدءا من Visual Studio 2005 ، سواء C# ، VB.Net بدأ التركيز على جعل متغير عرض في السكان المحليين / سيارات /نافذة مراقبة أكثر قيمة.كان ذلك أساسا من خلال إدخال .صافي سمات مثل DebuggerDisplay, DebuggerTypeProxy و متخيل الإطار.

إذا كنت لا تستخدم أي .صافي أنواع على الرغم من أنك سوف تحصل على أي من هذه الفوائد.

C++ مقيم تعبير لا الاستفادة من أي من هذه.له أساليب تخصيص نوع العرض.ولكن ليس كما featureful (أو يحتمل أن تكون خطرة) بوصفها سمة نمط لأنها لا تسمح بتشغيل التعليمات البرمجية في debugee العملية.

هذا لا يعني التصحيح C++ يوفر تجربة سيئة.هو مجرد مختلفة و هناك أفضل يعرض لكثير من المحكمة أنواع الحاويات.

تصحيح CLR التطبيق أيضا بعض disadvantegs.على سبيل المثال, التصحيح رمز الأمثل هو شبه مستحيل في بعض الأحيان لأن JITer سوف إخفاء المتغيرات المحلية والمعايير في كثير من الأحيان "هذا".تصحيح كما شيدت C++ التطبيق أيضا يمكن أن يكون محبطا ولكن يمكنك دائما الاستيلاء على سجلات dissamebly لمعرفة ما يجري.تفعل الشيء نفسه بالنسبة CLR التطبيق هو الصعب في أحسن الأحوال.

نصائح أخرى

أعتقد تجميع رمز C++ الأصلي في CLR يفتح علبة من الديدان.إلا إذا كنت تملك استثمارات كبيرة في القائمة رمز C++ وبعض ضرورة تشغيل التعليمات البرمجية المدارة أنواع هذا هو شيء كنت ترغب في تجنب.

على سبيل المثال, C++/CLI إلى حزمة رمز C++ الأصلي الحق في تجميع CLR, ولكن C++/ CLI يضيف غير القياسية بناء الجملة C++ لغة باستخدام C++ الأصلي أنواع مختلطة مع تدار من أنواع يبدو وكأنه مسألة صعبة جدا على أقل تقدير.

لذا في الختام ، أود أن تبقي فقط مثل التطبيق الأصلي.إذا كان لديك أي خطة ترقية إلى CLR و كنت قد بدأت للتو العمل على هذا المشروع ، وأود أن التفكير جديا في بدء الكتابة في CLR-اللغة الأم مثل C#.

هذا الجواب نسخها من هنا - http://social.msdn.microsoft.com/Forums/vstudio/en-US/895ecb47-8b34-4a1a-a20b-fda1e5e576eb/whats-the-difference-between-clr-console-application-and-win32-console-application

ما الفرق بين وحدة التحكم CLR تطبيق وحدة تحكم win32 التطبيق ؟ - يستخدم في السابق وقت تشغيل اللغة العامة (وبعبارة أخرى،.NET framework);وهذا الأخير لا.

وأنا لا يمكن استخدام مساحة الاسم System إطار تطبيق وحدة تحكم win32 نموذج. - نظام مساحة الاسم هو جزء من .NET framework.

ماذا علي أن أفعل عندما كنت ترغب في استخدام مساحة الاسم? - يجب أن يكتب .صافي التطبيق.

و لا يجب إدخال تلميح مثل C# نموذج ؟ - هناك في الواقع لا يوجد التحسس C++/CLI في الإصدارات الحالية من Visual Studio.إذا كنت ترغب في .NET, C# قد يكون من الأفضل اختيار اللغة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top