我需要使用C#获取GUID文件的C# .proj。我从.proj文件中提取了内容,就像使用XML读取文件并获取标签值一样。

// XML标签

 <ProjectGuid>{7701AEB4-8549-4FB2-B34C-E71D0B7DE59D}</ProjectGuid>


但我需要知道C#中是否有任何特定属性来检索现有的.proj文件GUID,类似这样。

//码

 int iIncriment = 0;
 foreach (var objProj in vhaSolution.Projects)
        {
          EnvDTE.Project prj1 = (EnvDTE.Project)objProj;
          iIncriment++;
            if (string.Equals(testProjectName + ".proj", prj1.Name))
                {
                    prj = vhaSolution.Projects.Item(iIncriment);
                }
        }

 string GUID = prj.GetGUID() ???

最佳答案

您可以使用IVsHierarchy.GetGuidProperty方法:

var solution = serviceProvider.GetService(typeof(SVsSolution)) as IVsSolution;
IVsHierarchy hierarchy;

solution.GetProjectOfUniqueName(project.FullName, out hierarchy);

if (hierarchy != null)
{
    Guid projectGuid;

    hierarchy.GetGuidProperty(
                VSConstants.VSITEMID_ROOT,
                (int)__VSHPROPID.VSHPROPID_ProjectIDGuid,
                out projectGuid);
}

08-19 02:07