Программно определить, является ли развернутая веб-часть нативной, поставляемой с MOSS, или разработанной на заказ? - PullRequest
0 голосов
/ 14 мая 2010

У меня есть экземпляр SharePoint 2007 MOSS, и я выполняю миссию по установлению фактов. Было несколько разработчиков, которые разрабатывали несколько веб-частей и развертывали их (используя VS2005 / 2008 SharePoint Extensions).

Я подумал, что, может быть, я мог бы посмотреть на поля в списке "Галерея веб-частей" на моем сайте и посмотреть "Изменено", но похоже, что имя разработчика есть в некоторых из как-то пометить веб-части, и на тех, которые я знаю, они разрабатываются на заказ, они говорят «Системная учетная запись» - так что смотреть на это поле в этом списке не стоит.

Тогда я подумал, что, может быть, я мог бы взглянуть на «Группу», к которой была привязана каждая веб-часть, но похоже, что они были произвольно назначены многим различным группам - поэтому использовать эту часть информации не стоит.

Вот мой код, который я имею для того, чтобы просто просмотреть и получить имена всех веб-частей. Есть ли какое-либо свойство, к которому я могу получить доступ в элементах списка веб-частей, которое бы сообщало мне, является ли это веб-частью, разработанной пользователем? Есть ли способ отличить пользовательские веб-части от готовых? Есть ли другой способ сделать это?

        #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 Ответ

1 голос
/ 14 мая 2010

Вы пытались экспортировать веб-части? Нажмите на стрелку в правом верхнем углу веб-части и нажмите на экспорт. Он будет экспортирован в виде файла 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 предоставит вам информацию о сборке. Если это пользовательская веб-часть, имя сборки в основном должно отличаться от Microsoft.

...