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,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
人工智能 算法 搜索推荐
人工智能技术对未来就业的影响
人工智能大模型技术正在重塑全球就业市场,但其核心是"增强"而非"取代"人类工作。虽然AI在数据处理、模式识别等标准化任务上表现出色,但在创造力、情感交互和复杂决策等人类专属领域仍存在明显局限。各行业呈现差异化转型:IT领域人机协同编程成为常态,金融业基础分析岗位减少但复合型人才需求激增,医疗行业AI辅助诊断普及但治疗决策仍依赖医生,制造业工人转向技术管理,创意产业中人类聚焦高端设计。未来就业市场将形成人机协作新生态,要求个人培养创造力、情商等AI难以替代的核心能力,企业重构工作流程。AI时代将推动人类向更高价值的认知活动跃升,实现人机优势互补的协同发展。
730 2
|
机器学习/深度学习 算法 安全
【SSA-LSTM】基于麻雀算法优化LSTM 模型预测研究(Matlab代码实现)
【SSA-LSTM】基于麻雀算法优化LSTM 模型预测研究(Matlab代码实现)
766 0
|
存储 Java 应用服务中间件
七牛云和阿里云OSS存储图片服务器使用
七牛云和阿里云OSS存储图片服务器使用
2300 0
|
MySQL 关系型数据库 数据安全/隐私保护
|
20小时前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1048 0
|
9天前
|
人工智能 运维 安全
|
20小时前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
238 0
|
7天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
8天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
701 23