• MOSS2007开发,部署,feature Virus



    本文摘自:
    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

     

    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
    下面就是我们最终要实现的效果了




    【Blog】http://virusswb.cnblogs.com/

    【MSN】jorden008@hotmail.com

    【说明】转载请标明出处,谢谢

    反馈文章质量,你可以通过快速通道评论:

  • 相关阅读:
    discuz 帖子模块用到的表及自动发帖函数
    【转】php json_encode中文为空的解决办法
    linux自定义脚本添加到rc.local脚本无法正常运行的问题
    【转】实战 SSH 端口转发
    linux shell脚本守护进程监控svn服务
    解决ecshop登陆自动退出的莫名现象
    windows下不打开浏览器访问网页的方法
    【转】windows下安装和调用curl的方法
    调用discuz编辑器发布帖子显示html代码的解决办法
    linux下搭建svn版本控制软件
  • 原文地址:https://www.cnblogs.com/virusswb/p/1321535.html
Copyright © 2020-2023  润新知