2

我使用 VS2010 和 Sharepoint 2010 项目。我有一个 VS 2010 插件,我需要以编程方式检测类型项目。

我编辑了我的 csproj(用于 Sharepoint 项目),我看到了这个 ProjectTypeGuids:

{BB1F664B-9266-4fd6-B973-E1E44974B511};{14822709-B5A1-4724-98CA-57A101D1B079};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}

任何已知项目类型指南的完整列表,包括 Sharepoint 项目?

如何在 C# 中以编程方式为我的 EnvDTE.Project 获取 ProjectTypeGuids?

参考:

已知项目类型指南列表
http://www.mztools.com/articles/2008/mz2008017.aspx

Visual Studio项目文件中ProjectTypeGuids标签的意义是什么
http://social.msdn.microsoft.com/Forums/en/vsx/thread/d9d05cdc-96a1-4044-95d8-a4f8885a660a

Visual Studio项目文件中ProjectTypeGuids标签的意义是什么

http://www.mztools.com/articles/2007/MZ2007016.aspx

4

1 回答 1

1

卡洛斯·J·昆特罗:

看:

HOWTO:从加载项获取 Visual Studio 项目的项目风格(子类型)

http://www.mztools.com/Articles/2007/MZ2007016.aspx

没有完整列表,因为每个人都可以创建新的项目类型,这就是使用 GUID 的原因。

您可以创建 SharePoint 2010 项目并获取指南,这就是我获得该列表的方式。

马蒂亚斯·赫伯:

如果您可以获得 IVsSolution 实例,则可以拥有构成您的项目的所有 GUID:

  public bool IsTypedProject(IVsSolution solution, EnvDTE.Project project)
        {
            IVsHierarchy hierarchy;
            solution.GetProjectOfUniqueName(project.UniqueName, out hierarchy);
            IVsAggregatableProjectCorrected AP;
            AP = hierarchy as IVsAggregatableProjectCorrected;
            string projTypeGuids = string.Empty;
            if (AP != null)
            {
                AP.GetAggregateProjectTypeGuids(out projTypeGuids);
                if (projTypeGuids.ToUpper().Contains("YOUR_GUID".ToUpper()))
                {
                    return true;
                }
            }

            return false;
        }

也许您可以请求这样的服务:

(IVsSolution)ServiceProvider.GetService(typeof(SVsSolution))

参考资料:
http ://social.msdn.microsoft.com/Forums/da-DK/vsx/thread/bf18037e-479a-4ca8-ae64-81ee39652d73

于 2012-08-27T06:22:07.353 回答