使用C#获取.proj文件的GUID

iam*_*mCR 2 .net c# envdte

我需要得到GUID一个的C# .proj使用C#文件.我从.proj文件中取出了使用XML读取文件并获取标记值.

// XML标签

 <ProjectGuid>{7701AEB4-8549-4FB2-B34C-E71D0B7DE59D}</ProjectGuid>
Run Code Online (Sandbox Code Playgroud)

但我需要知道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() ???
Run Code Online (Sandbox Code Playgroud)

Yur*_*rii 8

您可以使用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);
}
Run Code Online (Sandbox Code Playgroud)