In SharePoint Server 2010 i siti salvati come template non sono più dei file con estensione STP, ma sono delle solution (.WSP). Le solution sono salvate in Site Actions / Site Settings / Galleries / Solutions (http://sharepoint2010/_catalogs/solu...llItems.aspx ).

Per recuperare via codice il template di sito bisogna usare il metodo GetWebTemplates dell'oggetto SPSite, questo ritorna una collection di template. Per trovare un template specifico bisogna ciclare e confrontare il nome. I template custom hanno il nome composto secondo questa convenzione:

{guid}#nomeTemplate

ad esempio {AC75BCC4-EF27-4F72-B7ED-02E5B80E123E}#ProjectTemplate.

//get custom template
public SPWebTemplate GetWssTemplate(uint lcid, SPSite site, string templateName)
{
  //SPWebTemplateCollection templates = site.GetCustomWebTemplates(lcid);
  SPWebTemplateCollection templates = site.GetWebTemplates(lcid);
  SPWebTemplate template = null;
  foreach (SPWebTemplate t in templates)
  {
    if (t.Name.EndsWith("#" + templateName
              , StringComparison.InvariantCultureIgnoreCase) == true)
    {
       template = t;
       break;
    }
  }
  return template;
}
In SharePoint 2007 si usava il metodo GetCustomWebTemplates

per creare un sito con un template in inglese (1033) salvato con nome ProjectTemplate:
using (SPSite site = new SPSite("http;//sharepoint2010"))
{
  using (SPWeb web = site.OpenWeb())
  {
    SPWebTemplate template = GetWssTemplate(1033, site, "ProjectTemplate");
    SPWebCollection webs = web.Webs;
    SPWeb newWeb = webs.Add(url, "titolo", "description", 1033, template, false, false);
  }
}