Skip to main content

Features.xml explained

Some xml elements in Features.xml file in WSS 3.0:

1. Root element: Feature. It contains following attributes:
  • Id: The guid to uniquely identify this feature.
  • Title: The title of the feature appears in feature list
  • Description: The descriptive text appears in feature list
  • Version: Feature version number
  • Scope: The scope this feature applies to. The possible values are: Web, Site, WebApplication and Farm
  • Hidden: A boolean value to indicate if to show this feature in feature list
  • xmlns: Xml namespace, always "http://schemas.microsoft.com/sharepoint/"
  • ImageUrl: The image icon that appears at the left of the feature in feature list. The image should be in \IMAGES if no path is given.
  • ReceiverAssembly: This is the full qualified assembly name that contains the event handler of feature installation/uninstallation, activation/deactivation.
  • ReceiverClass: This is the class name in ReceiverAssembly that actually handles feature related events. This class must inherit SPFeatureReceiver
2. ElementManifests element: This element is inside Feature element. It is just a wrapper element. Inside it contains several ElementManifest elements
3. ElementManifest: This element is inside ElementManifests element. There is only one attribute in this element: Location. The Location attribute points to the element definition xml file.
4. ElementFile: This element is inside ElementManifests element. There is one attribute you need to set for this element: Location. The Location attribute defines the place to put the file. The Location is relative to the root folder of this feature. For example, you have a feature called MyFeature and the Location attribute in ElementFile node is set to Pages\ViewLog.aspx. The SharePoint deployment will copy the file ViewLog.aspx in deployment package to ...\TEMPLATE\FEATURES\MyFeatuer\Pages folder.
5. Properties element: This element is inside Feature element. It is just a wrapper element. Inside it contains several Property elements
6. Property: This element is inside Properties element. There are two attributes in this element: Key and Value. It defines some key and value pairs that can be accessed in feature activation/deactivation. You can use the code snippet like this to access these properties:
string strThemeValue = ((SPFeatureProperty)properties.Definition.Properties["Theme"]).Value

While properties is the parameter passing into feature activation/deactivation event handler.

If you need to access the property value after the feature activation:
SPFeatureProperty prop = site.Features[new Guid(featureId)].Properties[PropertyKey];
if (prop == null) return "";
else {
return prop.Value;
}

See this link in MSDN for full explanation of Features.xml.

Comments

Popular posts from this blog

Manage IIS 7 remotely using PowerShell and AppCmd

We can use  Windows PowerShell remoting features  to manage IIS 7 websites remotely.  Currently, remoting is supported on Windows Vista with Service Pack 1 or later, Windows 7, Windows Server 2008, and Windows Server 2008 Release 2.  Start Windows PowerShell as an administrator by right-clicking the Windows PowerShell shortcut and selecting Run As Administrator .  Enable PowerShell Remoting with Enable-PSRemoting -Force Starting a Remote Session using:  Enter-PSSession -ComputerName <COMPUTER> -Credential <USER> Now the PowerShell connected to the remote server. Any commands issued with work against the remote server. We can use the Appcmd.exe command line tool to manage remote server just as what we do locally. For example, to add an application pool: c:\windows\system32\inetsrv\appcmd add apppool /name:"Contoso" /managedPipelineMode:Integrated /managedRuntimeVersion:"v4.0" /enable32BitAppOnWin64:true To change application pool for a

Entity framework code first error: OriginalValues cannot be used for entities in the Added state

When I was using Entity framework code first, I encountered an error when I tried to create an entity into database. The entity is: [ Table (" EmployeeProfile ")]     public partial class EmployeeProfile     {         [ Key ]         [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]         public int EmployeeProfileID { get; set; }         [ ForeignKey ("Employee")]         public int EmployeeID { get; set; }         public virtual Employee Employee { get; set; }         [ ForeignKey (" Profile ")]         public int ProfileID { get; set; }         public virtual Profile Profile { get; set; }         [ Required ]         [ StringLength (255)]         public string ProfileValue { get; set; }     } When creating the entity, some entities have the ProfileValue="", this causes the EntityValidationException with the detailed message " OriginalValues cannot be used for entities in the Added state ". I want to allow the Prof

X509Certificate2: The system cannot find the file specified.

When I use the new X509Certificate2(fileName, password, X509KeyStorageFlags.DefaultKeySet) to create certificate from certificate file containing private key in my web application, I got following error message: System . Security . Cryptography . CryptographicException : The system cannot find the file specified . at System . Security . Cryptography . CryptographicException . ThrowCryptogaphicException ( Int32 hr ) at System . Security . Cryptography . X509Certificates . X509Utils . _LoadCertFromBlob ( Byte [] rawData , IntPtr password , UInt32 dwFlags , Boolean persistKeySet , SafeCertContextHandle & pCertCtx ) at System . Security . Cryptography . X509Certificates . X509Certificate . LoadCertificateFromBlob ( Byte [] rawData , Object password , X509KeyStorageFlags keyStorageFlags ) at System . Security . Cryptography . X509Certificates . X509Certificate2 .. ctor ( Byte [] rawData , String password , X509KeyStorageFlags keyStorageFlags ) In orde