如何:定义 SharePoint 项目项类型

当您希望创建自定义 SharePoint 项目项时,请定义项目项类型。 有关更多信息,请参见定义自定义 SharePoint 项目项类型

定义项目项类型

  1. 创建一个类库项目。

  2. 添加对下列程序集的引用:

    • Microsoft.VisualStudio.SharePoint

    • System.ComponentModel.Composition

  3. 创建一个实现 ISharePointProjectItemTypeProvider 接口的类。

  4. 向该类添加下列特性:

  5. InitializeType 方法的实现中,使用 projectItemTypeDefinition 参数的成员来定义项目项类型的行为。 此参数是一个 ISharePointProjectItemTypeDefinition 对象,它提供对 ISharePointProjectItemEventsISharePointProjectItemFileEvents 接口中定义的事件的访问。 若要访问项目项类型的特定实例,请处理 ISharePointProjectItemEvents 事件(如 ProjectItemAddedProjectItemInitialized)。

示例

下面的代码示例演示如何定义一个简单的项目项类型。 当用户向项目中添加此类型的项目项时,此项目项类型就会向**“输出”窗口和“错误列表”**窗口中写入一条消息。

Imports System
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint

Namespace Contoso.ExampleProjectItemType

    <Export(GetType(ISharePointProjectItemTypeProvider))> _
    <SharePointProjectItemType("Contoso.ExampleProjectItemType")> _
    <SharePointProjectItemIcon("ExampleProjectItemType.ProjectItemIcon.ico")> _
    Friend Class ExampleProjectItemType
        Implements ISharePointProjectItemTypeProvider

        Private Sub InitializeType(ByVal projectItemTypeDefinition As ISharePointProjectItemTypeDefinition) _
            Implements ISharePointProjectItemTypeProvider.InitializeType
            projectItemTypeDefinition.Name = "ExampleProjectItemType"
            projectItemTypeDefinition.SupportedDeploymentScopes = _
                SupportedDeploymentScopes.Site Or SupportedDeploymentScopes.Web
            projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All
            AddHandler projectItemTypeDefinition.ProjectItemAdded, AddressOf ProjectItemAdded
        End Sub

        Private Sub ProjectItemAdded(ByVal Sender As Object, ByVal e As SharePointProjectItemEventArgs)
            Dim Message As String = String.Format("An example project item named {0} was added to the {1} project.", _
                e.ProjectItem.Name, e.ProjectItem.Project.Name)
            e.ProjectItem.Project.ProjectService.Logger.WriteLine(Message, LogCategory.Message)
        End Sub
    End Class
End Namespace
using System;
using Microsoft.VisualStudio.SharePoint;
using System.ComponentModel.Composition;

namespace Contoso.ExampleProjectItemType
{
    [Export(typeof(ISharePointProjectItemTypeProvider))]
    [SharePointProjectItemType("Contoso.ExampleProjectItemType")]
    [SharePointProjectItemIcon("ExampleProjectItemType.ProjectItemIcon.ico")]
    internal class ExampleProjectItemType : ISharePointProjectItemTypeProvider
    {
        public void InitializeType(ISharePointProjectItemTypeDefinition projectItemTypeDefinition)
        {
            projectItemTypeDefinition.Name = "ExampleProjectItemType";
            projectItemTypeDefinition.SupportedDeploymentScopes =
                SupportedDeploymentScopes.Site | SupportedDeploymentScopes.Web;
            projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All;
            projectItemTypeDefinition.ProjectItemAdded += projectItemTypeDefinition_ProjectItemAdded;
        }

        void projectItemTypeDefinition_ProjectItemAdded(object sender, SharePointProjectItemEventArgs e)
        {
            string message = String.Format("An example project item named {0} was added to the {1} project.",
                e.ProjectItem.Name, e.ProjectItem.Project.Name);
            e.ProjectItem.Project.ProjectService.Logger.WriteLine(message, LogCategory.Message);
        }
    }
}

此示例使用 SharePoint 项目服务将消息写入到**“输出”窗口和“错误列表”**窗口。 有关更多信息,请参见使用 SharePoint 项目服务

编译代码

此示例需要对以下程序集的引用:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

部署项目项

若要使其他开发人员能够使用您的项目项,请创建一个项目模板或项目项模板。 有关更多信息,请参见为 SharePoint 项目项创建项模板和项目模板

若要部署项目项,请为要随此项目项分发的程序集、模板及任何其他文件创建 Visual Studio 扩展 (VSIX) 包。 有关更多信息,请参见在 Visual Studio 中部署 SharePoint 工具扩展

请参见

任务

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

其他资源

定义自定义 SharePoint 项目项类型

为 SharePoint 项目项创建项模板和项目模板

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

如何:向自定义 SharePoint 项目项类型中添加属性

如何:向自定义 SharePoint 项目项类型中添加快捷菜单项