SharePoint 2007在停用时将主页面部署为功能删除文件

时间:2010-07-02 20:17:33

标签: sharepoint deployment sharepoint-2007 master-pages

我有一个MasterPage,我正在部署到SharePoint 2007服务器。我正在使用一个功能和一个wsp来进行部署。部署后,我的新主页无法选择并用于我的网站。然后,如果我激活我的功能,我可以选择我的母版页。但是,当我停用我的功能(甚至撤回解决方案并将其从SharePoint中删除)时,主页仍可供选择,并且属于我的功能/解决方案的所有其他文件仍在SharePoint上。那么,有什么方法可以在我的功能停用时删除主页面,然后再次激活它,让它再次可用吗?

希望这是有道理的,谢谢。

2 个答案:

答案 0 :(得分:3)

默认情况下,SharePoint不会清除作为功能激活的一部分而部署的文件。

为了删除母版页和其他相关文件,您需要为功能编写功能接收器,实现FeatureDeactivating方法,并使用对象模型代码而不是CAML删除文件。功能接收器的MSDN文档为here,并且有博客示例编写功能接收器代码all over the web

请记住,要删除母版页,首先需要确保将网站集中所有网站的母版页重置为默认/其他可用母版页。您还需要注意不要删除在母版页或页面布局之间共享的资源文件(CSS,图像等)。

答案 1 :(得分:1)

首先确保您在功能停用时不再使用母版页。然后你可以删除它。

SPWeb web = (SPWeb)properties.Feature.Parent;

string customMasterUrl = (new Uri(web.Url + "/_catalogs/masterpage/Sample.master")).AbsolutePath;

if (web.MasterUrl != customMasterUrl)
{
  try
  {
    SPFile file = web.GetFile(customMasterUrl);
    SPFolder masterPageGallery = file.ParentFolder;

    SPFolder temp = masterPageGallery.SubFolders.Add("Temp");
    file.MoveTo(temp.Url + "/" + file.Name);
    temp.Delete();
  }
  catch (ArgumentException)
  {
    return;
  }
}