標籤: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