moss web part 开发部署详解

废话不多说,我将我在项目中使用的方法记录一下,一方面总结总结,另一方面从最基本的写起博客。

大家知道,开发webpart的方法是先开发自定义控件,而自定义控件只能在webapplication或者winform application中创建。这里我选择创建web application。当创建好user control 后,接下来就是创建web part了。

在同一个solution下添加一个 console library 项目,这个主要用来发布webpart。为了便于管理,我们先创建一个名为webpart的文件夹,里面再包含各自webpar的子文件夹。同时不要忘记添加user control代码中用到的逻辑层,数据访问层和sharepoint dll referencemoss web part 开发部署详解

以上就是一个截图,我们将创建一个名为LoblevelTracker的web part.接下来我们将web application中的user control 引用进来。注意这里只是加一个引用,而非copy。这样你在web application 中修改了user control ,而这边也会跟着修改。接下来我们必须创建三个文件。如图所示.首先解释一下wpLOBLevelTracker.cs

代码如下

代码
 1  namespace  PMO.MetLifeSecurity
 2  {
 3      [Guid( " 277D4B01-E98C-44c2-867B-EB70A44188D6 " )]/*一个唯一的guid*/
 4       public   class  wpLOBLevelTracker : System.Web.UI.WebControls.WebParts.WebPart
 5      {
 6           private  UserControl objUserControl;
 7 
 8           protected   override   void  CreateChildControls()
 9          {
10               base .CreateChildControls();
11               this .Controls.Clear();
12 
13               try
14              {
15                  objUserControl  =  (UserControl)Page.LoadControl(Constants.WEBPART_PATH  +   " LOBLevelTracker/LOBLevelTracker.ascx " );/*load 这个user control,注意这里的Constants.WEBPART_PATH的值为"/_CONTROLTEMPLATES/",其实它指向moss的系统文件夹的目录。全称为”C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES".*/
16                   this .Controls.Add(objUserControl);
17              }
18               catch  (Exception ex)
19              {
24                   throw   new  SPException(ex.Message);
25              }
26          }
27 /*将usercontro显示到页面*/
28           protected   override   void  Render(HtmlTextWriter writer)
29          {
30              EnsureChildControls();
31               base .Render(writer);
32          }
33      }
34  }

 接下来我们看一下wpLOBLevelTracker.webpart文件中的内容,这是一个纯xml文件。

 

代码
<? xml version="1.0" encoding="utf-8" ?>
< webParts >
  
< webPart  xmlns ="http://schemas.microsoft.com/WebPart/v3" >
    
< metaData >
      
<!--
      The following Guid is used as a reference to the web part class, 
      and it will be automatically replaced with actual type name at deployment time.
      
-->
      
< type  name ="PMO.MetLifeSecurity.WebParts.LOBLevelTracker.wpLOBLevelTracker,PMO.MetLifeSecurity,Version=1.0.0.0,Culture=neutral,PublicKey=93c5433da928d5eb"   />
      
< importErrorMessage > Cannot import LOB Level Tracker Web Part. </ importErrorMessage >
    
</ metaData >
    
< data >
      
< properties >
        
< property  name ="Title"  type ="string" > LOB Level Tracker </ property >
        
< property  name ="Description"  type ="string" > LOB Level Tracker </ property >
      
</ properties >
    
</ data >
  
</ webPart >
</ webParts >

 

这里最重要的就是type节点。PMO.MetLifeSecurity.WebParts.LOBLevelTracker.wpLOBLevelTracker是指向了该wpLOBLevelTracker.cs的路径。后面则为该solution的dll。

接下来看看第三个文件内容

 

代码
<? xml version="1.0" encoding="utf-8" ?>
< Elements  Id ="277D4B01-E98C-44c2-867B-EB70A44188D6"  xmlns ="http://schemas.microsoft.com/sharepoint/"   >
  
< Module  Name ="WebParts"  List ="113"  Url ="_catalogs/wp" >
    
< File  Path ="wpLOBLevelTracker.webpart"  Url ="wpLOBLevelTracker.webpart"  Type ="GhostableInLibrary"   />
  
</ Module >
</ Elements >

 

这里的guid必须和cs文件中一样。module结点不需变化,filepath就是该webpart的名称。到目前为止,我们的webpar创建已经结束了,接下来就是部署了。部署一般分为两类,一个就是在端口的bin下面,一个就是gac中。不管在哪个下面,我们首先必须将端口下面的web.config文件修改。路径一般为C:\Inetpub\wwwroot\wss\VirtualDirectories\8096(端口号是你用的端口)。首先必须再safecontrols结点下,将我们的webpart项目添加进去。如果发布在gac中的话,我们必须将引用的项目也加入进去。

< SafeControl  Assembly ="PMO.MetLifeSecurity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=93c5433da928d5eb"  Namespace ="PMO.MetLifeSecurity"  TypeName ="*"  Safe ="True"   />

其次在compilation结点中加入

< add  assembly ="PMO.MetLifeSecurity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=93c5433da928d5eb"   />

 

如果项目中使用了application.config文件,我们必须将application.config加入到根目录中。同时在appSettings 节点中加入文件名。

  < appSettings  file ="Application.config" >

 

trust level 必须设为full

< trust  level ="Full"  originUrl =""   />
最后不要忘记把connectionstring放入connectionStrings结点中。 最后我们可以发布了,如果发布在端口的bin下面,直接将build后的dll进去,如果在gac中,则将dll直接拖入gac的目录下即可。

你可能感兴趣的:(part)