目标:当feature 被active或deactive时更名当前站点的Title。 这实际上是在Feature 被active或deactive时触发Event Handle。要达成此目标,可以创建一个继承于SPFeatureReceiver的类,并override FeatureActiveated和FeatureDeactivating方法.
1. 创建一个 Class Library DLL project, 命名HelloHello
2. 为便于部署添加目录TEMPLAGE/FEATURES/ HelloHello
3. 添加Microsoft.SharePoint.dll 到References, 该DLL文件位于C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/ISAPI
4. 将缺省的Class1.cs文件更名为FeatureReceive.cs,并添加代码如下
using Microsoft.SharePoint;
namespace HelloWorld
{
public class FeatureReceiver:SPFeatureReceiver{
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb site = (SPWeb)properties.Feature.Parent;
site.Properties["Originaltitle"] = site.Title;
site.Properties.Update();
site.Title = "Hello World";
site.Update();
}
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPWeb site = (SPWeb)properties.Feature.Parent;
string str = site.Properties["OriginalTitle"].Trim();
if (str.Length > 0)
{
site.Title = site.Properties["OriginalTitle"];
}
site.Update();
}
}
}
Ø 基于SPFeatureReceiverProperties的参数properties用于获取当前站点的引用
Ø 当active 时assign一个新值给site Title, 并调用update方法实现更新。
Ø 为了找回原来站点title,将它保存在属性包中。
Ø 当deactive时从OriginalTitle属性中取出原来的字符串写回站点Title
5. 添加密钥文件以强命名编译输出的DLL(右键Project-)Properies->Signing, 新建并添加一个Key.pfx文件)
6. 部署
Ø 部署HelloHello.dll到GAC。 Visual Studio 2010->Visual Studio Tools->Visual Studio Command Prompt(2010), run as administrator
gacutil.exe –if <targetpath>/ HelloHello.dll
Ø 更新feature.xml以便WSS知道当active或deactive Feature时触发Event Handle
<?xml version="1.0" encoding="utf-8" ?>
<Feature
Id=" 5B86EE99-7B3B-4167-974D-0046D5BC4EB2"
Title="Hello World Feature"
Description="This is my very first custome feature"
Scope="Web"
Hidden="FALSE"
ImageUrl="menuprofile.gif"
ReceiverAssembly="HelloWorld,Version=1.0.0.0,Culture=neutral,PublicKeyToken= b6e2f365f22d68f5"
ReceiverClass="HelloWorld.FeatureReceiver"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="elements.xml"/>
</ElementManifests>
</Feature>
² ReceriverAssembly属性应该包括注册到GAC中DLL的名称,版本,culture,PublicKeyToken
² ReceiverClass应包含命名空间信息
Ø 将包含feature.xml 和 element.xml文件的HelloHello目录下的拷贝到C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/TEMPLATE/FEATURES
Ø STSADM命令安装feature。STSADM -o InstallFeature -filename HelloHello/feature.xml –force
Ø 运行 iisreset命令重启IIS
Site Actions->Site Settings->Manage Site Features, 可见当激活feature时站点的Title变成了Hello World, 而停用该feature时,站点title恢复为原来的DepartmentOne