MOSS点滴(1):如何开发和部署feature

转自:http://www.cnblogs.com/carysun/archive/2008/04/16/feature.html

 

 

Features 是MOSS 2007以开箱即用的一套新功能,Features 存储在SharePoint服务器的如下路径下:C:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/FEATURES。每个Featrue在此路径下有自己的子目录,在每一个Feature子目录下会发现名字为Feature.xml的文件,它存储一些关于Featrue的metadata信息。

下面我就利用feature来实现一个小功能,在"网站操作"中添加自定义的菜单,首先使用VS2005建立一个HelloWorld的类库项目,然后添加文件夹Helloworld,在文件夹中添加feature.xml文件代码如下:

 

 

< Feature  Id ="B2CB42E2-4F0A-4380-AABA-1EF9CD526F20"  Title ="Hello World Feature"  Description ="这是我的第一个Feature"  Scope ="Web"  Hidden ="FALSE"  ImageUrl ="TPG/canteen.gif"  ReceiverAssembly ="HelloWorld, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b38a04419cc857d9"  ReceiverClass ="HelloWorld.FeatureReceiver"  xmlns ="http://schemas.microsoft.com/sharepoint/" >

< ElementManifests >
< ElementManifest  Location ="elements.xml"   />
</ ElementManifests >

</ Feature >

 

下面我们来说明下包含在Featrue 元素中的metadata 信息。

ID: 一个GUID,用于唯一标识这个Feature,这个可以使用GUID的生成工具得到;

Scope:其值可以是Web或Site,它指明了这个Feature是应用于整个的Site Collection还是仅仅用于单独的一个子站点。如果Scope="Web",则在[网站操作—网站设置—网站管理—网站功能]下激活,如果Scope="Site"则要在[网站操作—网站设置—网站管理—网站集功能]下激活。

Hidden:值可以是True或False.该设置指定了这个Feature是否在Site Feature页面上显示。

DefaultResourceFile: 资源文件名字,Feature依赖它提供其它附加的配置信息。

<ElementManifests>元素:这个元素包含了另一个XML文件的位置,而这个文件包含的<Elemnets>的内容是Feature要实现的。

然后我们在添加elements.xml文件,代码如下:

 

 

< Elements  xmlns ="http://schemas.microsoft.com/sharepoint/" >

< CustomAction  Id ="SiteActionsToolbar"  GroupId ="SiteActions"  Location ="Microsoft.SharePoint.StandardMenu"  Sequence ="100"  Title ="Hello World"  Description ="使用feature方式自定义菜单"  ImageUrl ="_layouts/images/crtsite.gif" >
< UrlAction  Url ="http://msdn.microsoft.com"   />
</ CustomAction >

</ Elements >

 

这个就是我们自定义的菜单项了。

在增加一个类文件FeatureReceiver.cs,代码如下:

 

 

 

   using  System; 
using  Microsoft.SharePoint; 

namespace  HelloWorld 

   public   class  FeatureReceiver : SPFeatureReceiver 
   { 
        public   override   void  FeatureInstalled(SPFeatureReceiverProperties properties) { } 
        public   override   void  FeatureUninstalling(SPFeatureReceiverProperties properties) { } 
        public   override   void  FeatureActivated(SPFeatureReceiverProperties properties) 
      { 
           SPWeb site  =  (SPWeb)properties.Feature.Parent; 
            site.Properties[ " OriginalTitle " ]  =  site.Title; 
           site.Properties.Update(); 
            site.Title  =   " Hello World Modify " ; 
           site.Update(); 
      } 

     public   override   void  FeatureDeactivating(SPFeatureReceiverProperties properties) 
   { 
        SPWeb site  =  (SPWeb)properties.Feature.Parent; 
       site.Title  =  site.Properties[ " OriginalTitle " ]; 
       site.Update(); 
    } 
  } 
}

 

SPFeatureReceiver 类中定义当安装、激活、停用或卸载 Web 部件 Feature 时,MOSS会触发这些事件,在此我们要设置feature.xml中的ReceiverAssembly 和 ReceiverClass 的属性。 这些属性指向一个功能接收器的托管类。PublicKeyToken是HelloWorld的key可以在VS2005命令行下使用"sn -t HelloWorld"来得到。

基本上我们的任务就完成了,现在我们就要开始部署了,需要通过以下步骤

1.将HelloWorl文件夹(其中包含feature.xml和elements.xml文件)拷贝到C:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/FEATURES文件夹下。

2.STSADM -o InstallFeature -filename HelloWorld/feature.xml -force

feature1

3.使用"gacutil -if 程序集名"将HelloWorld.dll注册到GAC中

feature3

4.重启IIS:iisreset

现在我们去网站集功能中查看,你可以激活该feature,激活的时候会执行FeatureActivated中的代码

feature2

当然这一部署过程我们可以使用一个批处理来完成,注意路径的更改:

 

@SET TEMPLATEDIR = " c:/program files/common files/microsoft shared/web server extensions/12/Template "  
@SET STSADM = " c:/program files/common files/microsoft shared/web server extensions/12/bin/stsadm "  
@SET GACUTIL = " d:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin/gacutil.exe "  

Echo Installing HelloWorld.dll in GAC 
%GACUTIL% -if bin/debug/HelloWorld.dll 

Echo Copying files to TEMPLATE directory 
xcopy /e /y TEMPLATE/* %TEMPLATEDIR% 

Echo Installing feature 
%STSADM% -o installfeature -filename  HelloWorld/feature.xml -force 

IISRESET 
REM cscript c:/windows/system32/iisapp.vbs /a  " SharePointDefaultAppPool "  /r

 

下面就是我们最终要实现的效果了

feature4

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值