如何用C#代码管理SharePoint解决方案

如何用C#代码管理SharePoint解决方案

        本文我们将了解如何用代码管理SharePoint解决方案。我们使用服务器端对象模型抽取解决方案。
        SharePoint中解决方案有两类:沙盒解决方案和场解决方案。 沙盒解决方案和场解决方案使用不同方式部署,并且通过不同对象模型抽取。
        注意:这里用SPUserSolution代表沙盒解决方案;SPFarmSolution代表场解决方案。

如何获得沙盒解决方案

        沙盒解决方案在网站集层次部署。下面是在网站集中抽取所有用户解决方案:
using (SPSite site = new SPSite("http://localhost"))
{
    foreach (SPUserSolution solution in site.Solutions)
    {
        Console.WriteLine(solution.Name);
        Console.WriteLine(solution.Status);
    }
}

如何获得场解决方案

        抽取所有场解决方案的代码如下:
foreach (SPSolution solution in SPFarm.Local.Solutions)
{
    Console.WriteLine(solution.Name);
    Console.WriteLine(solution.SolutionId);
    Console.WriteLine(solution.Status);
}
        接下来看看如何通过服务器端对象模型安装解决方案吧。

安装沙盒解决方案

        安装解决方案有两步:添加到库;激活。
        下面是添加解决方案到库的代码:
using (SPSite site = new SPSite("http://localhost"))
{
    SPDocumentLibrary gallery
              =(SPDocumentLibrary)site.GetCatalog(SPListTemplateType.SolutionCatalog);
    SPFile file = gallery.RootFolder.Files.Add("SandboxedSolution.wsp",
       File.ReadAllBytes("SandboxedSolution.wsp"));
 
    SPUserSolution solution = site.Solutions.Add(file.Item.ID);
}

移除沙盒解决方案

        移除解决方案并禁用功能使用以下代码:
using (SPSite site = new SPSite("http://localhost"))
{
    SPUserSolution solution = site.Solutions.Cast<SPUserSolution>().
                                             Where(s => s.Name == "Your Solution").First();
    site.Solutions.Remove(solution);
}

安装场解决方案

         安装场解决方案使用以下代码:
private static void InstallFarmSolution()
{
    SPSolution solution = SPFarm.Local.Solutions.Add("File Path here");
    solution.Deploy(DateTime.Now, true, GetAllWebApplications(), true);
}
        我们需要指定解决方案路径。上面的代码让解决方案安装到所有Web应用程序中。GetAllWebApplication()方法主体如下:
public static Collection<SPWebApplication> GetAllWebApplications()
{
    Collection<SPWebApplication> result = new Collection<SPWebApplication>();
    SPServiceCollection services = SPFarm.Local.Services;
    foreach (SPService s in services)
    {
        if (s is SPWebService)
        {
            SPWebService webService = (SPWebService)s;
            foreach (SPWebApplication webApp in webService.WebApplications)
            {
                result.Add(webApp);
            }
        }
    }
    return result;
}

移除场解决方案

        移除场解决方案成为收回解决方案。这是合适的方法:
private void RetractFarmSolution(SPSolution solution)
{
    solution.Retract(DateTime.Now);
}
        创建Timer job收回解决方案。你可以指定开始收回的时间。
        只从指定Web应用程序移除解决方案,参照这个方法:
private void RetractFarmSolution(SPSolution solution, Collection<SPWebApplication> webApplications)
{
    solution.Retract(DateTime.Now, webApplications);
}

总结

        本文中,我们学习了如何使用服务器端对象模型抽取沙盒解决方案和场解决方案。

参考:

关于沙盒解决方案与场解决方案区别,参照 http://msdn.microsoft.com/en-us/library/ee361616.aspx
使用代码激活SharePoint 2010 沙盒解决方案,参照 http://msdn.microsoft.com/en-us/library/hh528516(v=office.14).aspx
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值