代码之家  ›  专栏  ›  技术社区  ›  TehOne

SharePoint 2007将母版页部署为停用时删除文件的功能

  •  1
  • TehOne  · 技术社区  · 14 年前

    我有一个正在部署到SharePoint2007服务器的母版页。我正在使用一个特性和一个WSP来进行部署。部署后,我的新母版页无法选择并用于我的网站。然后,如果我激活了我的功能,我就可以选择我的母版页。但是,当我停用我的功能(甚至收回解决方案并将其从SharePoint中删除)时,母版页仍可供选择,并且作为我的功能/解决方案一部分的所有其他文件仍在SharePoint上。那么,当我的功能被停用时,是否有任何方法可以将主页面从可用状态删除,然后如果它再次被激活,它是否再次可用?

    希望这是合理的,谢谢。

    2 回复  |  直到 13 年前
        1
  •  3
  •   Preston Guillot    14 年前

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

    为了删除主页面和其他相关文件,您需要为您的功能编写一个功能接收器,实现FeatureDeactivating方法,并使用对象模型代码(而不是CAML)删除您的文件。功能接收器的msdn文档是 here 还有写功能接收器代码的博客例子。 all over the web .

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

        2
  •  1
  •   Anthony Graglia    13 年前

    首先,确保不再在停用功能中使用母版页。然后你可以把它取下来。

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