Como você lista todos os sites / páginas em um aplicativo da Web do SharePoint 2007 que uma solução específica (WSP) é referenciada?

2

Existe um comando stsadm() (ou algum outro método) que mostrará em todos os lugares que uma Solução está sendo usada. Gostaria de obter os resultados em uma lista usando o GUID da solução ou o nome totalmente qualificado (como o CorasWork.Workplace.WebParts.ActionLauncher ...)

Eu encontrei as soluções stsadm() operation enum que foram muito úteis, mas não mostram quais sites ou páginas em que um controle está sendo usado.

Como posso obter essa informação?

Seth

    
por Seth Spearman 16.09.2011 / 22:17

1 resposta

1

Não, não há uma maneira de fazer isso - você precisa codificá-lo. Agora, isso não é um argumento de venda e a ferramenta não está disponível comercialmente ou mesmo comercialmente, mas eu tenho uma ferramenta de análise de conteúdo que eu escrevi que faz o que você pede e muito mais. Basicamente, eu uso a ferramenta para analisar novos farms de clientes e, especialmente, perto de uma migração, para que eu saiba o que mora e saiba os tipos de conteúdo que eles armazenam e como eles são armazenados. De qualquer forma, como exemplo, aqui está um trecho do que você pode fazer:

    public XmlDocument CreateAssetLibrary(string siteURL, Delegate callback)
    {
        //Set up the XML and go get the data
        XmlDocument doc = new XmlDocument();
        XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null);
        doc.AppendChild(dec);
        var pi = doc.CreateProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"contentanalysis.xsl\"");
        doc.AppendChild(pi);

        using (SPSite siteColl = new SPSite(siteURL))
        {
            using (SPWeb web = siteColl.OpenWeb())
            {
                web.AllowUnsafeUpdates = true;
                XmlElement sitecollections = doc.CreateElement("sitecollections");
                SPWebApplication webApp = web.Site.WebApplication;
                totalSites = webApp.Sites.Count;

                foreach (SPSite site in webApp.Sites)
                {
                    started = DateTime.Now;
                    websProcessedThisSite = 0;
                    totalWebsThisSite = site.AllWebs.Count;
                    webCount = 0;
                    listCount = 0;
                    itemCount = 0;
                    fileCount = 0;
                    listItemCount = 0;
                    userCount = 0;
                    groupCount = 0;

                    //initiate the global profile hashtable with a catch all entry for non-file based content (i.e. SPListItems)
                    globalHash.Clear();
                    globalHash.Add(nonFileID, new ContentItem(nonFileID, 0, 0));
                    SPWeb currentWeb = site.OpenWeb();
                    XmlElement sitecollection = doc.CreateElement("sitecollection");
                    sitecollection.SetAttribute("sitename", currentWeb.Title);
                    sitecollection.SetAttribute("link", currentWeb.Url);
                    XmlElement structure = getXML(currentWeb, doc, callback);
                    XmlElement profile = getProfile(doc);
                    XmlElement stats = getStats(doc);
                    structure.AppendChild(profile);
                    structure.AppendChild(stats);
                    sitecollection.AppendChild(structure);
                    sitecollections.AppendChild(sitecollection);
                    sitesProcessed++;
                    callback.DynamicInvoke(new Object[6] { doc.InnerXml, Convert.ToInt32(totalSites), Convert.ToInt32(sitesProcessed), 0, 0, doc });
                }
                web.AllowUnsafeUpdates = false;
                doc.AppendChild(sitecollections);
            }
        }
        return doc;
    }

A coisa mais fácil a fazer seria relatar quais SITES ou WEBS estavam usando um recurso / solução. Mais difícil seria por página - você pode estender isso para percorrer cada página da biblioteca e inspecionar os metadados para especificar os recursos que estão sendo usados.

    
por 23.09.2011 / 04:30