Практическое руководство. Определение типа элементов проектов 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) для сборки, шаблона и всех остальных файлов, которые предполагается распространять с элементом проекта.Дополнительные сведения см. в разделе Разработка расширений для средств SharePoint в Visual Studio.
См. также
Задачи
Пошаговое руководство. Создание элемента проекта столбца сайта с помощью шаблона элемента, часть 1
Основные понятия
Определение пользовательских типов элементов проектов SharePoint
Создание шаблонов элементов и проектов для элементов проектов SharePoint
Практическое руководство. Добавление свойства в пользовательский тип элемента проекта SharePoint