كيف يمكنني تحديد فصول فقط في المشروع الحالي في Envdte؟
-
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