在 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 项目。

  • 一个实现扩展的类库项目。

您还可以使用特定类型的扩展的其他项目:

如果同一个 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 文件中添加针对以下每个项的条目。

包括扩展程序集

  1. 在 VSIX 项目中,双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。

  2. 在编辑器的**“内容”部分中,单击“添加内容”**按钮。

  3. 在**“添加内容”对话框的“选择内容类型”列表框中,选择“MEF 组件”**。

  4. 在**“选择源”**下,执行下列步骤之一:

    • 如果生成扩展程序集的源项目与 VSIX 项目处于同一解决方案中,请单击**“项目”**单选按钮并在其旁边的列表框中选择项目的名称。

    • 如果扩展程序集作为一个文件包含在项目中,请单击**“项目中的文件”**单选按钮并在其旁边的列表框中选择程序集。

    • 如果扩展程序集位于其他某个位置,请单击**“文件”单选按钮,然后使用“选择文件”**对话框查找并选择该程序集。

  5. 单击**“确定”**。

包括 SharePoint 命令程序集

  1. 在 VSIX 项目中,双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。

  2. 在编辑器的**“内容”部分中,单击“添加内容”**按钮。

  3. 在**“添加内容”对话框的“选择内容类型”列表框中,选择“自定义扩展类型”**。

  4. 在**“类型”**文本框中,键入 SharePoint.Commands.v4。 包含 SharePoint 命令的所有程序集都需要此值。

  5. 在**“选择源”**下,执行下列步骤之一:

    • 如果生成命令程序集的源项目与 VSIX 项目处于同一解决方案中,请单击**“项目”**单选按钮并在其旁边的列表框中选择命令项目的名称。

    • 如果命令程序集作为一个文件包含在项目中,请单击**“项目中的文件”**单选按钮并在其旁边的列表框中选择程序集。

    • 如果命令程序集位于其他某个位置,请单击**“文件”单选按钮,然后使用“选择文件”**对话框查找并选择该程序集。

  6. 单击**“确定”**。

包含使用 Visual Studio SDK 中的项目模板或项模板项目创建的模板

  1. 在 VSIX 项目中,双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。

  2. 在编辑器的**“内容”部分中,单击“添加内容”**按钮。

  3. 在**“添加内容”对话框中的“选择内容类型”列表框中,选择“项目模板”“项模板”**。

  4. 在**“选择源”下,单击“项目”**单选按钮,然后在该按钮旁边的列表框中选择项目的名称。

  5. 单击**“确定”**。

  6. 在**“解决方案资源管理器”中,右击项目模板或项模板项目的节点,然后单击“卸载项目”**。

  7. 再次右击该项目节点,然后单击**“编辑 YourTemplateProjectName.csproj”“编辑 YourTemplateProjectName.vbproj”**。

  8. 定位到项目文件中的以下 VSTemplate 元素。

    <VSTemplate Include="YourTemplateName.vstemplate">
    
  9. 用下面的 XML 替换此 VSTemplate 元素。

    <VSTemplate Include="YourTemplateName.vstemplate">
      <OutputSubPath>SharePoint\SharePoint14</OutputSubPath>
    </VSTemplate>
    

    OutputSubPath 元素指定路径中的其他文件夹,在生成项目时将在这些文件夹中创建项目模板。 此处指定的文件夹可确保项模板仅在客户单击**“添加新项目”对话框的“SharePoint”节点下的“2010”**节点时可用。

  10. 保存并关闭文件。

  11. 在**“解决方案资源管理器”中,右击项目模板或项模板项目,然后单击“重新加载项目”**。

包含手动创建的模板

  1. 在 VSIX 项目中,向项目中添加一个用于包含模板的新文件夹。

  2. 在此新文件夹下,创建以下子文件夹,然后将模板 (.zip) 文件添加到区域设置 ID 文件夹。

         YourTemplateFolder

              SharePoint

                   SharePoint14

                        Locale ID

                             YourTemplateName.zip

    例如,如果有一个名为 ContosoCustomAction.zip 的项模板,并且该模板支持英语(美国)区域设置,则完整路径可能为 ItemTemplates\SharePoint\SharePoint14\1033\ContosoCustomAction.zip。

  3. 在**“解决方案资源管理器”**中,单击模板文件 (YourTemplateName.zip)。

  4. 在**“属性”窗口中,将“生成操作”属性设置为“内容”**。

  5. 双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。

  6. 在编辑器的**“内容”部分中,单击“添加内容”**按钮。

  7. 在**“添加内容”对话框的“选择内容类型”列表框中,选择“项模板”“项目模板”**。

  8. 在**“选择源”下,单击“项目中的文件”单选按钮,然后在该按钮旁边的列表框中选择模板的完整路径。 例如“ItemTemplates\SharePoint\SharePoint14\1033\ContosoCustomAction.zip”**。

  9. 单击**“确定”**。

包含项目模板或项模板的向导

  1. 在 VSIX 项目中,双击 source.extension.vsixmanifest 文件以在设计器中打开该文件。

  2. 在编辑器的**“内容”部分中,单击“添加内容”**按钮。

  3. 在**“添加内容”对话框的“选择内容类型”列表框中,选择“模板向导”**。

  4. 在**“选择源”**下,执行下列步骤之一:

    • 如果生成向导程序集的源项目与 VSIX 项目处于同一解决方案中,请单击**“项目”**单选按钮并在其旁边的列表框中选择项目的名称。

    • 如果向导程序集作为一个文件包含在项目中,请单击**“项目中的文件”**单选按钮并在其旁边的列表框中选择程序集。

    • 如果向导程序集位于其他某个位置,请单击**“文件”单选按钮,然后使用“选择文件”**对话框查找并选择该程序集。

  5. 单击**“确定”**。

相关演练

下表列出了一些演练,这些演练演示如何使用 VSIX 项目部署不同类型的 SharePoint 工具扩展。

扩展类型

相关演练

只包含扩展程序集的扩展

演练:扩展 SharePoint 项目项类型

演练:创建 SharePoint 项目扩展

演练:在服务器资源管理器扩展中调入 SharePoint 客户端对象模型

包含 SharePoint 命令的扩展

演练:为 SharePoint 项目创建自定义部署步骤

演练:扩展服务器资源管理器以显示 Web 部件

演练:使用项目模板创建网站栏项目项(第 2 部分)

包含 Visual Studio 模板的扩展

演练:使用项模板创建自定义操作项目项(第 1 部分)

演练:使用项目模板创建网站栏项目项(第 1 部分)

包含模板向导的扩展

演练:使用项模板创建自定义操作项目项(第 2 部分)

演练:使用项目模板创建网站栏项目项(第 2 部分)

手动创建 VSIX 包

如果要为 SharePoint 工具扩展手动创建 VSIX 包,请执行以下步骤:

  1. 创建 extension.vsixmanifest 文件、[Content_Types].xml 和 VSIX 包文件(.vsix 文件)。 有关更多信息,请参见 Anatomy of a VSIX PackageHow to: Manually Package an Extension (VSIX Deployment)

  2. 将扩展程序集添加到 VSIX 包中。 如果扩展中包括某个 SharePoint 命令,则也将实现该 SharePoint 命令的程序集添加到 VSIX 包中。

  3. 修改 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>

请参见

概念

扩展 SharePoint 项目系统

调入 SharePoint 对象模型

其他资源

扩展服务器资源管理器中的“SharePoint 连接”节点

在 Visual Studio 中调试 SharePoint 工具扩展