以编程方式判断已部署的Web部件是MOSS附带的本地部件,还是自定义开发的部件?

时间:2010-05-14 14:56:51

标签: sharepoint sharepoint-2007 web-parts sitecollection

我有一个SharePoint 2007 MOSS实例,而且我正在进行实况调查。有多个开发人员,开发多个webpart并部署它们(使用VS2005 / 2008 SharePoint Extensions)。

我想也许我可以查看我网站“Web部件库”列表中的字段,然后查看“修改者”,但看起来开发人员的名字在某些不合适之处。盒子webparts不知何故,并且在我知道的是自定义开发的,他们说“系统帐户” - 所以在这个列表中查看该字段是不行的。

我想也许我可以看一下每个webpart被分配到的“组”,但看起来它们被任意地分配给许多不同的组 - 所以使用那条信息是不行的。

这是我的代码,我只是循环并获取所有webparts的名称。我可以在webparts列表项上访问任何属性,告诉我它是否是自定义开发的webpart?有什么方法可以区分自定义的webparts和开箱即用的webparts?还有另一种方法吗?

        #region Misc Site Collection Methods
        public static List<string> GetAllWebParts(string connectedSPInstanceUrl)
        {
            List<string> lstWebParts = new List<string>();

            try
            {
                using (SPSite site = new SPSite(connectedSPInstanceUrl))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists["Web Part Gallery"];
                        foreach (SPListItem item in list.Items)
                        {
                            lstWebParts.Add(item.Name);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                lstWebParts.Add("Error");
                lstWebParts.Add("Message: " + ex.Message);
                lstWebParts.Add("Inner Exception: " + ex.InnerException.ToString());
                lstWebParts.Add("Stack Trace: " + ex.StackTrace);
            }

            return lstWebParts;
        }
        #endregion

1 个答案:

答案 0 :(得分:1)

您是否尝试过导出webparts?单击webpart右上角的箭头,然后单击export。它将作为XML文件导出。查找元数据标签。 e.g:

<metaData>
  <type name="Microsoft.SharePoint.Portal.WebControls.KPIListWebPart, Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
  <importErrorMessage />
</metaData>

type属性将为您提供程序集信息。如果它是自定义webpart,则程序集名称应该大部分不是Microsoft.Sharepoint