在VS2010中以编程方式为Sharepoint Projects确定项目类型(ProjectTypeGuids)

时间:2012-08-24 10:19:19

标签: visual-studio-2010 sharepoint-2010 add-in envdte vs-extensibility

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

我编辑了我的csproj(针对Sharepoint Project),我看到了这个ProjectTypeGuids:

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

任何已知项目类型Guids的 FULL 列表,包括Sharepoint项目?

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

参考文献:

已知项目类型Guids列表 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

What is the significance of ProjectTypeGuids tag in the visual studio project file

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

1 个答案:

答案 0 :(得分:1)

Carlos J.Quintero:

请参阅:

HOWTO:从加载项

获取Visual Studio项目的项目风格(子类型)

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

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

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

Mathias Herbaux:

如果您可以获得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