在 Visual Studio 中部署 SharePoint 工具扩展
若要部署 SharePoint 工具扩展,请创建一个包含要随此扩展分发的扩展程序集和任何其他文件的 Visual Studio 扩展 (VSIX) 包。 VSIX 包是一个遵循开放式打包约定 (OPC) 标准的压缩文件。 VSIX 包的扩展名为 .vsix。
创建 VSIX 包之后,其他用户可以运行 .vsix 文件安装您的扩展。 当用户安装您的扩展时,所有文件都会安装到 %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0\Extensions 文件夹。 若要部署扩展,可将 VSIX 包上载到 Visual Studio Gallery(Visual Studio 库)网站,也可以通过其他方法将该包分发给客户(如在网络共享或其他一些网站上承载该包)。
有关创建 VSIX 包和将其部署到 Visual Studio 库的更多信息,请参见VSIX Deployment。
可以使用 Visual Studio 中的**“VSIX 项目”**模板创建 VSIX 包,也可以手动创建 VSIX 包。
使用 VSIX 项目创建 VSIX 包
可以使用 Visual Studio 2010 SDK 提供的**“VSIX 项目”**模板为 SharePoint 工具扩展创建 VSIX 包。 与手动创建 VSIX 包相比,使用 VSIX 项目有以下几个好处:
当您生成项目时,Visual Studio 会自动生成 VSIX 包。 并为您完成向包中添加部署文件和为包创建 [Content_Types].xml 文件等任务。
可以将 VSIX 项目配置为将扩展项目的生成输出和其他文件(例如,项目模板和项模板)包含在 VSIX 包中。
有关使用 VSIX 项目的更多信息,请参见VSIX Project Template。
组织项目
默认情况下,VSIX 项目只生成 VSIX 包而非程序集。 因此,您通常不会在 VSIX 项目中实现 SharePoint 工具扩展。 一般来说,您至少会使用两个项目:
一个 VSIX 项目。
一个实现扩展的类库项目。
您还可以使用特定类型的扩展的其他项目:
一个实现扩展使用的任何 SharePoint 命令的类库项目。 有关演示此方案的演练,请参见演练:扩展服务器资源管理器以显示 Web 部件。
一个用于创建项模板或项目模板的项模板项目或项目模板项目(如果扩展定义了 SharePoint 项目项的新类型)。 有关演示此方案的演练,请参见演练:使用项模板创建自定义操作项目项(第 1 部分)。
一个为项模板或项目模板实现自定义向导的类库项目(如果扩展包含一个模板)。 有关演示此方案的演练,请参见演练:使用项模板创建自定义操作项目项(第 2 部分)。
如果同一个 Visual Studio 解决方案中包括所有项目,则可修改 VSIX 项目中的 source.extension.vsixmanifest 文件,以包括类库项目的生成输出。
编辑 VSIX 清单
您必须在 VSIX 项目中编辑 source.extension.vsixmanifest 文件,以包括要包含在扩展中的所有项的条目。 在编辑 source.extension.vsixmanifest 文件时,Visual Studio 将在一个设计器中打开该文件,此设计器提供了用于编辑文件中的 XML 的 UI。 有关更多信息,请参见 VSIX Manifest Designer。
必须在 source.extension.vsixmanifest 文件中添加针对以下项的条目:
扩展程序集。
用于实现扩展使用的任何 SharePoint 命令的程序集。
与扩展关联的任何项目模板或项模板。
与扩展关联的模板的自定义向导。
以下过程介绍如何在 .vsixmanifest 文件中添加针对以下每个项的条目。
包括扩展程序集
在 VSIX 项目中,双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。
在编辑器的**“内容”部分中,单击“添加内容”**按钮。
在**“添加内容”对话框的“选择内容类型”列表框中,选择“MEF 组件”**。
在**“选择源”**下,执行下列步骤之一:
如果生成扩展程序集的源项目与 VSIX 项目处于同一解决方案中,请单击**“项目”**单选按钮并在其旁边的列表框中选择项目的名称。
如果扩展程序集作为一个文件包含在项目中,请单击**“项目中的文件”**单选按钮并在其旁边的列表框中选择程序集。
如果扩展程序集位于其他某个位置,请单击**“文件”单选按钮,然后使用“选择文件”**对话框查找并选择该程序集。
单击**“确定”**。
包括 SharePoint 命令程序集
在 VSIX 项目中,双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。
在编辑器的**“内容”部分中,单击“添加内容”**按钮。
在**“添加内容”对话框的“选择内容类型”列表框中,选择“自定义扩展类型”**。
在**“类型”**文本框中,键入 SharePoint.Commands.v4。 包含 SharePoint 命令的所有程序集都需要此值。
在**“选择源”**下,执行下列步骤之一:
如果生成命令程序集的源项目与 VSIX 项目处于同一解决方案中,请单击**“项目”**单选按钮并在其旁边的列表框中选择命令项目的名称。
如果命令程序集作为一个文件包含在项目中,请单击**“项目中的文件”**单选按钮并在其旁边的列表框中选择程序集。
如果命令程序集位于其他某个位置,请单击**“文件”单选按钮,然后使用“选择文件”**对话框查找并选择该程序集。
单击**“确定”**。
包含使用 Visual Studio SDK 中的项目模板或项模板项目创建的模板
在 VSIX 项目中,双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。
在编辑器的**“内容”部分中,单击“添加内容”**按钮。
在**“添加内容”对话框中的“选择内容类型”列表框中,选择“项目模板”或“项模板”**。
在**“选择源”下,单击“项目”**单选按钮,然后在该按钮旁边的列表框中选择项目的名称。
单击**“确定”**。
在**“解决方案资源管理器”中,右击项目模板或项模板项目的节点,然后单击“卸载项目”**。
再次右击该项目节点,然后单击**“编辑 YourTemplateProjectName.csproj”或“编辑 YourTemplateProjectName.vbproj”**。
定位到项目文件中的以下 VSTemplate 元素。
<VSTemplate Include="YourTemplateName.vstemplate">
用下面的 XML 替换此 VSTemplate 元素。
<VSTemplate Include="YourTemplateName.vstemplate"> <OutputSubPath>SharePoint\SharePoint14</OutputSubPath> </VSTemplate>
OutputSubPath 元素指定路径中的其他文件夹,在生成项目时将在这些文件夹中创建项目模板。 此处指定的文件夹可确保项模板仅在客户单击**“添加新项目”对话框的“SharePoint”节点下的“2010”**节点时可用。
保存并关闭文件。
在**“解决方案资源管理器”中,右击项目模板或项模板项目,然后单击“重新加载项目”**。
包含手动创建的模板
在 VSIX 项目中,向项目中添加一个用于包含模板的新文件夹。
在此新文件夹下,创建以下子文件夹,然后将模板 (.zip) 文件添加到区域设置 ID 文件夹。
YourTemplateFolder
SharePoint
SharePoint14
Locale ID
YourTemplateName.zip
例如,如果有一个名为 ContosoCustomAction.zip 的项模板,并且该模板支持英语(美国)区域设置,则完整路径可能为 ItemTemplates\SharePoint\SharePoint14\1033\ContosoCustomAction.zip。
在**“解决方案资源管理器”**中,单击模板文件 (YourTemplateName.zip)。
在**“属性”窗口中,将“生成操作”属性设置为“内容”**。
双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。
在编辑器的**“内容”部分中,单击“添加内容”**按钮。
在**“添加内容”对话框的“选择内容类型”列表框中,选择“项模板”或“项目模板”**。
在**“选择源”下,单击“项目中的文件”单选按钮,然后在该按钮旁边的列表框中选择模板的完整路径。 例如“ItemTemplates\SharePoint\SharePoint14\1033\ContosoCustomAction.zip”**。
单击**“确定”**。
包含项目模板或项模板的向导
在 VSIX 项目中,双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。
在编辑器的**“内容”部分中,单击“添加内容”**按钮。
在**“添加内容”对话框的“选择内容类型”列表框中,选择“模板向导”**。
在**“选择源”**下,执行下列步骤之一:
如果生成向导程序集的源项目与 VSIX 项目处于同一解决方案中,请单击**“项目”**单选按钮并在其旁边的列表框中选择项目的名称。
如果向导程序集作为一个文件包含在项目中,请单击**“项目中的文件”**单选按钮并在其旁边的列表框中选择程序集。
如果向导程序集位于其他某个位置,请单击**“文件”单选按钮,然后使用“选择文件”**对话框查找并选择该程序集。
单击**“确定”**。
相关演练
下表列出了一些演练,这些演练演示如何使用 VSIX 项目部署不同类型的 SharePoint 工具扩展。
扩展类型 |
相关演练 |
---|---|
只包含扩展程序集的扩展 |
|
包含 SharePoint 命令的扩展 |
|
包含 Visual Studio 模板的扩展 |
|
包含模板向导的扩展 |
手动创建 VSIX 包
如果要为 SharePoint 工具扩展手动创建 VSIX 包,请执行以下步骤:
创建 extension.vsixmanifest 文件、[Content_Types].xml 和 VSIX 包文件(.vsix 文件)。 有关更多信息,请参见 Anatomy of a VSIX Package和How to: Manually Package an Extension (VSIX Deployment)。
将扩展程序集添加到 VSIX 包中。 如果扩展中包括某个 SharePoint 命令,则也将实现该 SharePoint 命令的程序集添加到 VSIX 包中。
修改 extension.vsixmanifest 文件:
在 Content 元素下添加一个 MefComponent 元素。 将元素值设置为实现 VSIX 包中的扩展的程序集的相对路径。 有关更多信息,请参见 MEFComponent Element (VSX Schema)。
如果您的扩展中包括调入 SharePoint 服务器对象模型的 SharePoint 命令,请在 Content 元素下添加一个新的 CustomExtension 元素。 将元素值设置为实现 VSIX 包中的 SharePoint 命令的程序集的相对路径,并将 Type 特性设置为值 SharePoint.Commands.v4。 有关更多信息,请参见 CustomExtension Element (VSX Schema)。
如果扩展包含项目模板或项模板,则在 Content 元素下添加新的 ProjectTemplate 或 ItemTemplate 元素。 将元素值设置为包含 VSIX 包中的模板的文件夹的相对路径。 有关更多信息,请参见 ProjectTemplate Element (VSX Schema)和 ItemTemplate Element (VSX Schema)。
如果扩展包含项目模板或项模板的自定义向导,则在 Content 元素下添加新的 Assembly 元素。 将元素值设置为 VSIX 包中的程序集的相对路径,并将 AssemblyName 特性设置为完整程序集名称(包括版本、区域性和公钥标记)。 有关更多信息,请参见 Assembly Element (VSX Schema)。
示例
下面的示例演示 SharePoint 工具扩展的 extension.vsixmanifest 文件的内容。 在名为 Contoso.ProjectExtension.dll 的程序集中实现该扩展。 该扩展包含一个名为 Contoso.ExtensionCommands.dll 的 SharePoint 命令程序集和一个位于 VSIX 包中的名为**“ItemTemplates”**的文件夹下的项模板。 此示例假定这两个程序集都与 VSIX 包中的 extension.vsixmanifest 文件位于同一文件夹中。
<?xml version="1.0" encoding="utf-8"?>
<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
Version="1.0.0" xmlns="https://schemas.microsoft.com/developer/vsx-schema/2010">
<Identifier Id="CustomActionProjectItem.Contoso.b1d75407-01bd-459d-9d04-d12e9113af49">
<Name>Custom Action Project Item</Name>
<Author>Contoso</Author>
<Version>1.0</Version>
<Description xml:space="preserve">A SharePoint project item that represents a custom action.</Description>
<Locale>1033</Locale>
<SupportedProducts>
<VisualStudio Version="10.0">
<Edition>Pro</Edition>
</VisualStudio>
</SupportedProducts>
<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.0" />
</Identifier>
<References />
<Content>
<MefComponent>Contoso.ProjectExtension.dll</MefComponent>
<CustomExtension Type="SharePoint.Commands.v4">Contoso.ExtensionCommands.dll</CustomExtension>
<ItemTemplate>ItemTemplates</ItemTemplate>
</Content>
</Vsix>