كيف يمكنني تحديد فصول فقط في المشروع الحالي في Envdte؟

StackOverflow https://stackoverflow.com/questions/3560823

  •  01-10-2019
  •  | 
  •  

سؤال

لدي حزمة لـ VS2010 تتبع حاليًا

EnvDTE=>Solution=>Projects=>CodeModel=>CodeElements

للقيام بما يلي بشكل متكرر والعثور على الفصول الدراسية

var q = elements.Cast<CodeElement>()
            .Where(x => x is CodeClass || x is CodeNamespace)
            .Where(x => x.Name.StartsWith("System") == false)
            .Where(x=>x.Name.StartsWith("Infragistics")==false)
            .Where(x=>x.Name.StartsWith("Microsoft")==false)
            .Where(x => x.Name.StartsWith("ICSharpCode")==false);

إنه يعمل ببطء إلى حد ما ، هل هناك طريقة لتقييد هذا الاستعلام/البحث على الفئات/الأنواع المحددة فقط في المشروع الحالي؟

كما أفهمها FileCodeModel ليس مفيدًا ولا مناسبًا لأن ذلك سيتطلب فتح كل عنصر مشروع.

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

المحلول

الطريقة التي أستخدمها للتنقل في عناصر التعليمات البرمجية الخاصة بمشروع.

Howto: انتقل عناصر التعليمات البرمجية من ملف من Macro Visual Studio .NEThttp://www.mztools.com/articles/2006/mz2006008.aspx

إذا كان الأداء مشكلة ، فحاول إذا كان تجنب طبقة LINQ يعزز الأداء. بخلاف ذلك ، لا يوجد الكثير مما يجب القيام به نظرًا لأن مجموعات الكود التي تم إرجاعها بواسطة Envdte تُرجع جميع عناصر الكود وبعد ذلك عند التصفية.

نصائح أخرى

سؤال قديم ، لكنني سأقوم بنشر هذا للرجوع إليه في المستقبل.

يوجد خاصية تحديد الموقع على فئة CodeElement التي تساوي VSCMInfolocation.VSCMINFOLOCATIONENTERAL عندما يأتي عنصر من مجموعة مرجعية.

للمزيد من المعلومات:http://msdn.microsoft.com/en-us/library/envdte.codeelement.infolocation.aspx

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