Freigeben über


Gewusst wie: Definieren eines SharePoint-Projektelementtyps

Definieren Sie einen Projektelementtyp, wenn Sie ein benutzerdefiniertes SharePoint-Projektelement erstellen möchten.Weitere Informationen finden Sie unter Definieren von benutzerdefinierten SharePoint-Projektelementtypen.

So definieren Sie einen Projektelementtyp

  1. Erstellen Sie ein Klassenbibliotheksprojekt.

  2. Fügen Sie Verweise auf die folgenden Assemblys hinzu:

    • Microsoft.VisualStudio.SharePoint

    • System.ComponentModel.Composition

  3. Erstellen Sie eine Klasse, die die ISharePointProjectItemTypeProvider-Schnittstelle implementiert.

  4. Fügen Sie der Klasse die folgenden Attribute hinzu:

    • System.ComponentModel.Composition.ExportAttribute.Anhand dieses Attributs kann Visual Studio Ihre ISharePointProjectItemTypeProvider-Implementierung erkennen und laden.Übergeben Sie den Typ ISharePointProjectItemTypeProvider an den Attributkonstruktor.

    • SharePointProjectItemTypeAttribute.In einer Projektelementtypdefinition gibt dieses Attribut den Zeichenfolgenbezeichner für das neue Projektelement an.Es wird empfohlen, das Format Unternehmensname.Funktionsname zu verwenden, um sicherzustellen, dass alle Projektelemente einen eindeutigen Namen haben.

    • SharePointProjectItemIconAttribute.Dieses Attribut gibt das Symbol an, das im Projektmappen-Explorer für dieses Projektelement angezeigt wird.Dieses Attribut ist optional. Wenn Sie es nicht auf die Klasse anwenden, zeigt Visual Studio ein Standardsymbol für das Projektelement an.Wenn Sie dieses Attribut festlegen, übergeben Sie den vollqualifizierten Namen eines Symbols oder einer Bitmap, die in die Assembly eingebettet ist.

  5. Verwenden Sie in der Implementierung der InitializeType-Methode Member des projectItemTypeDefinition-Parameters, um das Verhalten des Projektelementtyps zu definieren.Dieser Parameter ist ein ISharePointProjectItemTypeDefinition-Objekt, das Zugriff auf die in den ISharePointProjectItemEvents- und ISharePointProjectItemFileEvents-Schnittstellen definierten Ereignisse bietet.Wenn Sie auf eine bestimmte Instanz des Projektelementtyps zugreifen möchten, behandeln Sie ISharePointProjectItemEvents-Ereignisse wie ProjectItemAdded und ProjectItemInitialized.

Beispiel

Im folgenden Codebeispiel wird das Definieren eines einfachen Projektelementtyps veranschaulicht.Dieser Projektelementtyp schreibt eine Meldung in die Fenster Ausgabe und Fehlerliste, wenn einem Projekt von einem Benutzer ein Projektelement dieses Typs hinzugefügt wird.

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);
        }
    }
}

In diesem Beispiel wird der SharePoint-Projektdienst verwendet, um die Meldung in die Fenster Ausgabe und Fehlerliste zu schreiben.Weitere Informationen finden Sie unter Verwenden des SharePoint-Projektdiensts.

Kompilieren des Codes

Für dieses Beispiel sind Verweise auf die folgenden Assemblys erforderlich:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Bereitstellen des Projektelements

Um Ihr Projektelement anderen Entwicklern zur Verfügung zu stellen, können Sie eine Projektvorlage oder eine Projektelementvorlage erstellen.Weitere Informationen finden Sie unter Erstellen von Elementvorlagen und Projektvorlagen für SharePoint-Projektelemente.

Erstellen Sie zum Bereitstellen des Projektelements ein Visual Studio-Erweiterungspaket (VSIX) für die Assembly, die Vorlage und alle weiteren Dateien, die Sie mit dem Projektelement verteilen möchten.Weitere Informationen finden Sie unter Bereitstellen von Erweiterungen für die SharePoint-Tools in Visual Studio.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen eines Projektelements "Benutzerdefinierte Aktion" mit einer Elementvorlage, Teil 1

Exemplarische Vorgehensweise: Erstellen eines Projektelements "Websitespalte" mit einer Projektvorlage, Teil 1

Konzepte

Definieren von benutzerdefinierten SharePoint-Projektelementtypen

Erstellen von Elementvorlagen und Projektvorlagen für SharePoint-Projektelemente

Vorgehensweise: Hinzufügen einer Eigenschaft zu einem benutzerdefinierten SharePoint-Projektelementtyp

Vorgehensweise: Hinzufügen eines Kontextmenüelements zu einem benutzerdefinierten SharePoint-Projektelementtyp