HOW TO:定義 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 Extension (VSIX) 套件。如需詳細資訊,請參閱部署 Visual Studio 中 SharePoint 工具的擴充功能。
請參閱
工作
逐步解說:使用項目範本建立自訂動作專案項目 (第 1 部分)