मेरे पास Project
उदाहरण है, और मुझे समझ में नहीं आता कि परियोजना प्रकार/भाषा कैसे पता लगाना है। विशेष रूप से, मुझे सी/सी ++ प्रोजेक्ट की जांच करने की आवश्यकता है।यह निर्धारित करने के लिए कि EnvDTE.Project ऑब्जेक्ट एक सी/सी ++ प्रोजेक्ट का प्रतिनिधित्व करता है या नहीं?
docs की कमी लग रही है।
इससे पहले, एक अन्य व्यक्ति मेरी खुला स्रोत वी.एस. विस्तार करने के लिए जादू की निम्न बिट जोड़ा, और यह VS2013-2015 में काम किया:
private static bool isVisualCppProject(object project)
{
Type projectObjectType = project.GetType();
var projectInterface = projectObjectType.GetInterface("Microsoft.VisualStudio.VCProjectEngine.VCProject");
return projectInterface != null;
}
...
isVisualCppProject(project.Object);
लेकिन यह नहीं रह गया है वी.एस. 2017 आर सी में काम करता है। और मैं इस रनटाइम प्रतिबिंब जादू से छुटकारा पाउंगा और object
और dynamic
Project
के बजाय dynamic
से संतुष्ट हूं - इस कारण कोड पहले से ही अनजान हो रहा है।
'envdte.project' के लिए' Kind' property (https://msdn.microsoft.com/en-us/library/envdte.project.kind.aspx) है। यह GUID है। 'PrjKind' (https://msdn.microsoft.com/en-us/library/vslangproj.prjkind.aspx) में पूर्वनिर्धारित परियोजना प्रकार हैं लेकिन ऐसा लगता है कि सी/सी ++ के लिए कोई संपत्ति नहीं है। मुझे लगता है कि आप वह GUID प्राप्त कर सकते हैं और यह सभी सी/सी ++ परियोजनाओं के लिए समान होगा। –
@AramKocharyan: मैंने 'दयालु' देखा, लेकिन संभवतः "प्रकार" की कोई सूची नहीं है, न ही कोई गारंटी है कि यह वास्तव में विभिन्न मशीनों, प्रतिष्ठानों और वीएस संस्करणों में स्थिर है ... –
@ व्हायोलेट-जिराफ: क्या आप इसे हल करते हैं मुद्दा? यदि समस्या अभी भी मौजूद है, तो कृपया मुझे बेझिझक बताएं। –