【问题标题】:Get the GUID of .proj file using C#使用 C# 获取 .proj 文件的 GUID
【发布时间】:2014-03-14 07:13:34
【问题描述】:

我需要使用 C# 获取 C# .proj 文件的 GUID。我从.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() ???

【问题讨论】:

    标签: c# .net envdte


    【解决方案1】:

    你可以使用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);
    }
    

    【讨论】:

    • 在哪里可以找到 Microsoft.VisualStudio.Shell.Interop.dll?
    • 在我的机器上它位于C:\Program Files (x86)\Microsoft Visual Studio 11.0\VSSDK\VisualStudioIntegration\Common\Assemblies\v2.0 目录下。
    • @SanthoshKumar,您可能需要下载并安装Visual Studio SDK
    【解决方案2】:

    使用IndexOfSubstring 来查找 .proj 文件中的&lt;ProjectGuid&gt;&lt;/ProjectGuid&gt; 字符串并提取标签的内容。

    【讨论】:

    • 我期待一个类似内置属性的东西,它可以准确地为我提供 GUID。
    猜你喜欢
    • 2021-02-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    相关资源
    最近更新 更多