在前面一篇文章(Sharepoint Solution 一:创建一个简单的Sharepoint Solution)中介绍了如何创建一个自定义list的Solution。本文中,将介绍如何将一个webpart打包成一个Solution并发布到Production Server中。
一. 创建Webpart
首先我们使用Microsoft Visual Studio创建一个Webpart,在这之前请先安装Windows SharePoint Services 3.0 Tools: Visual Studio 2008 Extensions, Version 1.2。安装之后在Visual Studio的Sharepoint项目类型下会有一个Web Part模版。使用它就可以直接创建web part项目了。详细过程可以查看Creating a Windows SharePoint Services 3.0 Web Part Using Visual Studio 2005 Extensions。
假设我们创建了一个名为TestSP的项目,然后生成一个名为SuhuaTestP1的web part。如下图所示:
编译后在bin目录下有一个TestSP.dll文件。在SuhuaTestWP1文件夹下有一个SuhuaTestWP1.webpart文件和一个SuhuaTestWP1.xml文件。在后面的部署中我们需要这三个文件。
二. 创建Web Part solution
接下来我们就可以按照前一篇文章中介绍的步骤来创建solution文件了。这里只说明一下不一样的地方:
1. 文件夹的机构(这个结构并不是必须的,可以根据需要修改)
MyTestSolution (Solution文件夹)
Bin (放置生成的Solution文件)
Source (webpart等文件)
SuhuaTestWP1 (自定义的webpart)
SuhuaTestWP1
其中Source文件夹下存放的文件有manifest.xml,TestSP.dll,wsp.ddf。第一个SuhuaTestWP1文件夹下是一个Feature.xml文件,第二个SuhuaTestWP1文件夹下是SuhuaTestWP1.webpart和SuhuaTestWP1.xml。
2. feature.xml
<?xml version="1.0" encoding="utf-8"?>
<Feature Id="1a5f0f6b-d095-448c-86fb-0a116ae48852" Title="SuhuaTestWP1" Scope="Site" Version="1.0.0.0" Hidden="FALSE" DefaultResourceFile="core" xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="SuhuaTestWP1/SuhuaTestWP1.xml" />
<ElementFile Location="SuhuaTestWP1/SuhuaTestWP1.webpart" />
</ElementManifests>
</Feature>
3. Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<Solution SolutionId="fa8c5873-c73c-4490-85d4-c17068362e56" xmlns="http://schemas.microsoft.com/sharepoint/">
<FeatureManifests>
<FeatureManifest Location="SuhuaTestWP1/feature.xml" />
</FeatureManifests>
<Assemblies>
<Assembly Location="TestSP.dll" DeploymentTarget="WebApplication">
<SafeControls>
<SafeControl Assembly="TestSP.SuhuaTestWP1" Namespace="TestSP" TypeName="SuhuaTestWP1" Safe="True" />
</SafeControls>
</Assembly>
</Assemblies>
</Solution>
4. wsp.ddf
.OPTION Explicit
.Set DiskDirectory1="../bin"
.Set CabinetNameTemplate="TestSP.wsp"
manifest.xml
TestSP.dll
.Set DestinationDir="SuhuaTestWP1"
SuhuaTestWP1/Feature.xml
.Set DestinationDir="SuhuaTestWP1/SuhuaTestWP1"
SuhuaTestWP1/SuhuaTestWP1/SuhuaTestWP1.xml
SuhuaTestWP1/SuhuaTestWP1/SuhuaTestWP1.webpart
5. 最后就是使用makecab.exe创建wsp文件,然后使用stsadm部署此wsp文件。
创建wsp文件:
makecab /f wsp.ddf
部署:
stsadm.exe -o addsolution -filename e:/MyTestSolution/bin/TestSP.wsp
stsadm.exe -o deploysolution -name TestSP.wsp –url http://mossserver:8080 -immediate –force
(http://mossserver:8080 就是服务器地址如:http://suhuaserver)
现在到目录%system root%:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/FEATURES下可以找到名为SuhuaTestWP1的文件夹,查看里面的文件。再到目录%system root%:/Inetpub/wwwroot/wss/VirtualDirectories/80下查看web.config文件,TestSP已经添加到SafeControl标签内。在
%system root%:/Inetpub/wwwroot/wss/VirtualDirectories/80/bin目录下可以找到TestSP.dll文件。
注意此时在页面中添加webpart时并没有SuhuaTestWP1这个Web Part,因为还没有激活这个Feature。
激活Web Part Feature :
stsadm.exe –o installfeature –filename SuhuaTestWP1/Feature.xml –force
stsadm.exe –o activatefeature –filename SuhuaTestWP1/Feature.xml –url http://mossserver:8080 –force