Mam instancję Project
i nie rozumiem, jak znaleźć typ projektu/język. W szczególności muszę sprawdzić projekt C/C++.Jak ustalić, czy obiekt EnvDTE.Project reprezentuje projekt C/C++?
Wydaje się, że brakuje docs.
Wcześniej inna osoba dodawali następujący trochę magii do mojego open source VS rozszerzenia, i to działało w 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);
Ale to już nie pracuje w VS 2017 RC. Chętnie pozbyłbym się tej magicznej refleksji runtime i nie wpisanej nazwy object
i dynamic
zamiast Project
- kod ten jest już niemożliwy do utrzymania z tego powodu.
Istnieje własność 'Kind' (https://msdn.microsoft.com/en-us/library/envdte.project.kind.aspx) dla' envdte.project'. To jest GUID. Istnieją predefiniowane typy projektów w 'PrjKind' (https://msdn.microsoft.com/en-us/library/vslangproj.prjkind.aspx), ale wydaje się, że nie ma właściwości dla c/C++. Domyślam się, że możesz uzyskać ten GUID i będzie on taki sam dla wszystkich projektów c/C++. –
@AramKocharyan: Widziałem "Kind", ale nie ma listy możliwych "rodzajów", ani żadnej gwarancji, że rzeczywiście jest statyczna na różnych maszynach, instalacjach i wersjach VS ... –
@ Violet-Giraffe: Czy rozwiązujesz kwestia? jeśli problem nadal występuje, proszę daj mi znać. –