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

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

4.重启IIS:iisreset

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

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

@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

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

转载于:https://www.cnblogs.com/Areas/archive/2012/05/22/2513648.html

MOSS点滴(1):如何开发和部署feature相关推荐

  1. PPT | 云客堂——云服务助力Java 应用程序开发及部署

    这里将最近录的视频课程的PPT分享给大家,课程内容主要围绕 IBM Bluemix 云平台的学习与应用.这是一个课程系列,最初命名为"步云之道--课间10分钟",现在改为" ...

  2. MathWorks的AI之路:面向工业场景,打通开发到部署的全链路

    作者 | 阿司匹林 AI正在快速发展,并在更多的领域落地.对于MATLAB和Simulink的开发商MathWorks来说,把握AI的机会,显得尤为重要. 不少人对MATLAB等的印象依然停留在学校期 ...

  3. 用对方法,开发与部署深度学习原来如此简单……

    相信大部分人都会谈癌色变,正如我们所知的一样,晚期癌症患者的生存率低于 20%,而尽管早期患者可以被治愈,且治愈率高达 90% 以上,但因为大部分癌症早期起病隐匿,更重要的原因在于受限于现有医疗水平, ...

  4. 【Smobiler企业APP开发之一】开发环境部署

    最近研究了下Smobiler-.net移动开发,对于做企业APP开发Smobiler还是够用的,况且是完全使用C#进行编程,对于使用C#进行程序设计的程序员来说还是很容易上手的. 本章节主要介绍Smo ...

  5. 为ML开发、部署提供靠谱的系统工程方法,NASA、牛津、微软等多家机构提出MLTRL框架

    MLTRL 框架具备鲁棒性好.可靠性强等优点,并定义了一种通用语言,支持不同团队和组织的人员协同工作. 选自arXiv,作者:Alexander Lavin等,机器之心编译,编辑:陈萍 使用现代工具可 ...

  6. 基础、数据、开发、部署,AI 时代企业的全方位升级

    当"AI+"的趋势无可回避,企业领导者们需要比过往更认真地思考,如何适应全新的AI时代和其所代表的未来发展趋势. 头图来源 | 视觉中国 当AI成为基础设施 眼下,已经没有企业的领 ...

  7. 笔记合并_.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)学习笔记(上)...

    23 | 静态文件中间件:前后端分离开发合并部署骚操作 我们先来看一下静态文件中间件有哪些能力 1.支持指定相对路径 2.支持目录的浏览 3.支持设置默认文档 4.支持多目录映射 源码链接: http ...

  8. 告别繁琐提升效率,Docker 帮您降低从开发到部署的复杂性

    出品丨Docker公司(ID:docker-cn) 编译丨小东 每周一.三.五晚6点10分 与您不见不散! 在 Mobelux,开发项目永远不会停止.我们一直在研究新的和现有的代码库.无论何时,都有多 ...

  9. 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一 ...

最新文章

  1. 干货丨一文看懂人工智能、机器学习和深度学习的区别与联系
  2. 如何快速搭建云原生企业级数据湖架构及实践分享
  3. 无法远程连接Oracle
  4. cherokee php,CentOS安装最快Web服务器Cherokee+MySQL+PHP
  5. 美国3月通胀见顶了吗?
  6. Linux 下修改数据库密码
  7. 小程序常用ui库 组件库
  8. Cfree-5各种抽风解决办法
  9. linux网络之哪些你不了解的DNS篇
  10. 十九个国内外主流的三维GIS软件
  11. Python实现批量自动发工资条
  12. 我是如何让公司后台管理系统焕然一新的(上) -性能优化
  13. 计算机专业专科可以进的国企,专科毕业生想进国企?这三大专业不要错过,成功率高达60%...
  14. 用flex布局实现携程网首页的制作
  15. C语言程序设计--商品信息管理系统
  16. 淘宝信誉查询软件 官网免费版
  17. 用于穿戴脑机接口的脑电EEG传感芯片KS1092
  18. Hi3519内核配置USB2.0
  19. 51单片机——软件延时实现跑马灯仿真
  20. 基于Qt5的图片浏览器QHImageViewer

热门文章

  1. tpp letter
  2. FetchAI Case Study
  3. 如果你的船不进来,就游出去迎接它 乔纳森温特斯
  4. 我的性格是外向型,解决问题导向的
  5. jira+mysql配置
  6. 21_异常_第21天(异常、企业面试题,思维导图下载)
  7. Fescar TC-rollback流程
  8. PIX 几个配置注意的地方
  9. c++11 常量表达式
  10. HDU 2955 Robberies