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

简介:

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


本文转自生鱼片博客园博客,原文链接:http://www.cnblogs.com/carysun/archive/2008/04/16/feature.html,如需转载请自行联系原作者

目录
相关文章
|
8月前
|
人工智能 算法 搜索推荐
人工智能技术对未来就业的影响
人工智能大模型技术正在重塑全球就业市场,但其核心是"增强"而非"取代"人类工作。虽然AI在数据处理、模式识别等标准化任务上表现出色,但在创造力、情感交互和复杂决策等人类专属领域仍存在明显局限。各行业呈现差异化转型:IT领域人机协同编程成为常态,金融业基础分析岗位减少但复合型人才需求激增,医疗行业AI辅助诊断普及但治疗决策仍依赖医生,制造业工人转向技术管理,创意产业中人类聚焦高端设计。未来就业市场将形成人机协作新生态,要求个人培养创造力、情商等AI难以替代的核心能力,企业重构工作流程。AI时代将推动人类向更高价值的认知活动跃升,实现人机优势互补的协同发展。
986 2
|
机器学习/深度学习 算法 安全
【SSA-LSTM】基于麻雀算法优化LSTM 模型预测研究(Matlab代码实现)
【SSA-LSTM】基于麻雀算法优化LSTM 模型预测研究(Matlab代码实现)
836 0
|
存储 Java 应用服务中间件
七牛云和阿里云OSS存储图片服务器使用
七牛云和阿里云OSS存储图片服务器使用
2408 0
|
5天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用
|
8天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
7天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
448 93
|
1天前
|
开发者
「玩透ESA」ESA启用和加速-ER在加速场景中的应用
本文介绍三种配置方法:通过“A鉴权”模板创建函数并设置触发器路由;在ESA上配置回源302跟随;以及自定义响应头。每步均配有详细截图指引,帮助开发者快速完成相关功能设置,提升服务安全性与灵活性。
287 2