手动创建解决方案
上次修改时间: 2011年4月13日
适用范围: SharePoint Foundation 2010
本主题提供有关解决方案包和如何手动创建解决方案包的一些背景信息。
重要信息 |
---|
Visual Studio 包括简化(以及在很大程度上自动化)解决方案包的创建和配置过程的工具。建议您使用这些工具。本主题仅提供背景信息,针对可能需要在 Visual Studio 工具以外编辑文件之一的极少数情况,以及针对不具有 Visual Studio 的开发人员。 |
解决方案包
解决方案包是文件扩展名为 .wsp 的 cabinet 文件。它始终包含一个清单文件,并且还可能包含下面一些或所有组件:
网站定义(onet.xml、webtemp*.xml,可能为 default.aspx)
代码访问安全策略
对 web.config 的修改
模板文件和根文件,二者可包括:
应用程序页面 (*.aspx)
资源 (*.resx)
资源文件(例如,*.doc 或 *.xls)
用户控件 (*.ascx)
非 SharePoint 程序集,如自定义托管类库。它们可与以下项一起部署:
安全控制项
资源
功能定义及其相应的元素定义和文件。可能位于功能中的一些内容包括:
Web 部件文件(*.webpart、*.dwp)
列表实例和列表模板
内容类型和自定义字段类型
BCS/BDC 模型
事件接收器
网站页面 (*.aspx)
Web 部件或其他自定义 SharePoint Foundation 类的程序集。它们可与以下项一起部署:
安全控件项
资源
解决方案文件具有这样的层次结构:清单文件位于根部,而功能、资源或网站定义目录包含在子目录中。
应将特定功能或网站定义的文件放在该功能或网站定义的子目录中。
备注
.wsp 文件中的目录结构确定前端 Web 服务器文件系统上的最终目录结构。但是,Visual Studio 的工具生成的"解决方案资源管理器"中的目录结构通常不完全匹配前端 Web 服务器的目录结构。
若要手动创建解决方案包,请执行以下步骤:
创建解决方案 manifest.xml 文件。
解决方案清单(通常称为 manifest.xml)存储在解决方案文件的根位置。此文件定义要处理的功能、网站定义、资源文件、Web 部件文件和程序集的列表。它不定义文件结构(如果文件包含在解决方案中,但未在清单 XML 文件中列出,则不会以任何方式处理这些文件)。
以下为 manifest.xml 文件的结构。
<Solution SolutionId="4AFC1350-F354-4439-B941-51377E845F2B" xmlns="https://schemas.microsoft.com/sharepoint/"> <FeatureManifests> <FeatureManifest Location="FeatureLibrary\feature.xml"/> </FeatureManifests> <TemplateFiles> <TemplateFile Location="ControlTemplates\Featurelibraryform.ascx"/> </TemplateFiles> <RootFiles> <!-- These files go into the 12\ directory and can be used for Web services and global resources --> <RootFile Location="ISAPI\MyWebService.asmx"> </RootFiles> <Assemblies> <Assembly DeploymentTarget="GlobalAssemblyCache" Location="ms.samples.sharepoint.myFeature.dll"/> </Assemblies> </Solution>
此外,可以添加 DwpFiles 元素以指定 .webpart 或 .dwp 文件,也可以添加 ResourceFiles 元素以指定资源文件、网站定义、应用程序资源和代码访问安全策略。
如果包中存在功能,则每个功能都具有一个 feature.xml 文件。对于功能中的每个功能元素清单文件 (elements.xml),请添加指向功能元素清单的 ElementFile 标记。
创建解决方案包(.wsp 文件)。
由于解决方案文件实质上是一个 .cab 文件,因此可使用 makecab.exe 工具来创建解决方案包。makecab.exe 工具采用指向 .ddf 文件 (Diamond Directive File) 的指针,该指针描述了 .cab 文件的结构。.ddf 文件的格式基本上与 .inf 文件的样式相同,即声明一个标准头,然后按照文件集在磁盘上的位置(一行对应一个文件)进行枚举,并按照其在 .cab 文件中的所在位置分隔它们。
; .OPTION EXPLICIT ; Generate errors .Set CabinetNameTemplate=MySolutionFile.wsp .set DiskDirectoryTemplate=CDROM ; All cabinets go in a single directory .Set CompressionType=MSZIP;** All files are compressed in cabinet files .Set UniqueFiles="ON" .Set Cabinet=on .Set DiskDirectory1=Package build\manifest.xml manifest.xml build\ MySolutionFile \feature.xml MySolutionFile \feature.xml ...