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

时间:2014-03-14 07:13:35

标签: c# .net envdte

我需要使用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() ???

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

快速而肮脏的解决方案是使用IndexOfSubstring来查找 .proj文件中的<ProjectGuid></ProjectGuid>字符串,并提取标记的内容。