Windows SharePoint Services 3.0 提供完整的物件模型,用於列舉指定範圍內已安裝的 Feature 清單,並控制 Feature 在伺服器陣列或網站層級的啟用狀態。本文整理核心類別與常用操作範例。
| 類別 | 命名空間 | 說明 |
|---|---|---|
SPFeature / SPFeatureCollection | Microsoft.SharePoint | 描述 Feature 在對應層級(伺服器陣列、Web 應用程式、網站集合、網站)的啟用狀態。集合中存在即表示已啟用。 |
SPFeatureProperty / SPFeaturePropertyCollection | Microsoft.SharePoint | 代表 Feature 的屬性集合。 |
SPFeatureScope | Microsoft.SharePoint | 列舉可能的範圍:Farm、WebApplication、Site、Web。 |
SPFeatureDefinition / SPFeatureDefinitionCollection | Microsoft.SharePoint.Administration | Feature 基礎定義:名稱、範圍、ID、版本,可儲存全域屬性。 |
SPFeatureDependency / SPFeatureDependencyCollection | Microsoft.SharePoint | 代表 Feature 之間的相依關係。 |
SPElementDefinition / SPElementDefinitionCollection | Microsoft.SharePoint.Administration | Feature 啟用時預置的元素定義。 |
SPWebApplication.Features — Web 應用程式範圍已啟用的 FeatureSPWebService.Features — 伺服器陣列範圍的管理型 FeatureSPFarm.FeatureDefinitions — 伺服器陣列安裝的所有 Feature 定義SPSite.Features — 網站集合內已啟用的 FeatureSPWeb.Features — 網站內已啟用的 FeatureSPFeatureDefinition.ActivationDependencies — 某 Feature 啟用所相依的 Feature 清單SPSite siteCollection = SPControl.GetContextSite(Context);
SPWeb site = siteCollection.AllWebs["Site"];
SPFeatureCollection siteFeatures = site.Features;
CultureInfo cultureInfo = new CultureInfo(1033);
foreach (SPFeature siteFeature in siteFeatures)
{
Response.Write("Title: " + siteFeature.Definition.GetTitle(cultureInfo) + "<BR>ID:" + siteFeature.DefinitionId.ToString() + "<BR><BR>");
}
SPWeb subSite = site.Webs["SubSite"];
Guid guid = new Guid("6e005f62-f8b2-4073-a673-c035c9129946");
subSite.Features.Add(guid);
掌握 Feature 物件模型,即可透過程式碼精確控管 SharePoint 功能的部署與啟用,實現自動化佈署與治理。開發者應熟悉各範圍對應的集合屬性,並善用 SPFeatureDefinition 取得中繼資料(標題、版本、相依性),構建健全的 Feature 生命週期管理方案。