如何:定义 SharePoint 项目项类型
当您希望创建自定义 SharePoint 项目项时,请定义项目项类型。 有关更多信息,请参见定义自定义 SharePoint 项目项类型。
定义项目项类型
创建一个类库项目。
添加对下列程序集的引用:
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
创建一个实现 ISharePointProjectItemTypeProvider 接口的类。
向该类添加下列特性:
System.ComponentModel.Composition.ExportAttribute. 此特性使 Visual Studio 能够发现和加载您的 ISharePointProjectItemTypeProvider 实现。 将 ISharePointProjectItemTypeProvider 类型传递给特性构造函数。
SharePointProjectItemTypeAttribute. 在项目项类型定义中,此特性指定新项目项的字符串标识符。 建议您使用“公司名称.功能名称”格式,以帮助确保所有项目项的名称都是唯一的。
SharePointProjectItemIconAttribute. 此特性指定要在**“解决方案资源管理器”**中为此项目项显示的图标。 此特性是可选的;如果未向类应用此特性,则 Visual Studio 将显示项目项的默认图标。 如果设置此特性,则应传递程序集中嵌入的图标或位图的完全限定名称。
在 InitializeType 方法的实现中,使用 projectItemTypeDefinition 参数的成员来定义项目项类型的行为。 此参数是一个 ISharePointProjectItemTypeDefinition 对象,它提供对 ISharePointProjectItemEvents 和 ISharePointProjectItemFileEvents 接口中定义的事件的访问。 若要访问项目项类型的特定实例,请处理 ISharePointProjectItemEvents 事件(如 ProjectItemAdded 和 ProjectItemInitialized)。
示例
下面的代码示例演示如何定义一个简单的项目项类型。 当用户向项目中添加此类型的项目项时,此项目项类型就会向**“输出”窗口和“错误列表”**窗口中写入一条消息。
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 工具扩展。