我有一個Project
實例,我不明白如何找出項目類型/語言。具體來說,我需要檢查一個C/C++項目。如何確定EnvDTE.Project對象是否代表C/C++項目?
docs似乎缺乏。
此前,另一人加入的魔法下位到我的開源VS延伸,並在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);
但它不再VS 2017年RC工作。我很樂意擺脫這種運行時反射魔法,並且不輸入object
和dynamic
而不是Project
- 由於這個原因,代碼已經變得不可維護。
'envdte.project'有'Kind'屬性(https://msdn.microsoft.com/en-us/library/envdte.project.kind.aspx)。這是GUID。在'PrjKind'中有預定義的項目種類(https://msdn.microsoft.com/en-us/library/vslangproj.prjkind.aspx),但似乎沒有c/C++的屬性。我想你可以得到這個GUID,它對於所有的c/C++項目都是一樣的。 –
@AramKocharyan:我確實看到了'Kind',但沒有列出可能的「種類」,也沒有保證它在各種機器,裝置和VS版本中確實是靜態的...... –
@ Violet-Giraffe:你解決了問題?如果問題仍然存在,請隨時通知我。 –