Question

I need to get the GUID of a C# .proj file using C#. I have taken from the .proj file like reading the file using XML and getting the tag value.

//XML Tag

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

But i need to know is there any specific property in C# to retrieve the existing .proj file GUID, something like this.

//Code

 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() ???
Was it helpful?

Solution

You can use the IVsHierarchy.GetGuidProperty method:

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);
}

OTHER TIPS

A quik and dirty solution would be using IndexOf and Substring to find the <ProjectGuid> and </ProjectGuid> string in the .proj-file and extract the content of the tag.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top