Is there an stsadm () command (or some other method) that will show everywhere that a Solution is being used. I would like to get the results in a list using either the solution GUID or the fully qualified name (like CorasWork.Workplace.WebParts.ActionLauncher...)

I found the stsadm opertion enumsolutions which was very helpful but it does not show you what sites or pages that a control is being used on.

How can I get that information?

Seth

link|improve this question

0% accept rate
feedback

1 Answer

No there isn't an out of the box way of doing this - you'd have to code it. Now this isn't a sales pitch and the tool isn't commercially available or even commercial quality but I do have a content analysis tool I wrote that does what you ask and a lot more besides. Basically I use the tool to analyse new clients farms and especially close to a migration so that I know what lives where and have a grasp on the types of content they store and how well they store it. ANyway, as an example here is a snippet of what you might do:

    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;
    }

The easy thing to do would be to report on which SITES or WEBS were using a feature / solution. Harder would be per-page - you'd extend this to go through each page in the library and inspect the metadata to esatblish the features being used.

link|improve this answer
Andy,how would I go about getting that content analysis tool? Seth – Seth Spearman Sep 26 '11 at 14:32
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.