Gewusst wie: Erstellen einer SharePoint-Projekterweiterung
Erstellen Sie eine Projekterweiterung, wenn Sie Funktionalität zu einem SharePoint-Projekt hinzufügen möchten, das in Visual Studio geöffnet ist.Weitere Informationen finden Sie unter Erweitern des SharePoint-Projektsystems.
So erstellen Sie eine Projekterweiterung
Erstellen Sie ein Klassenbibliotheksprojekt.
Fügen Sie Verweise auf die folgenden Assemblys hinzu:
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
Erstellen Sie eine Klasse, die die ISharePointProjectExtension-Schnittstelle implementiert.
Fügen Sie der Klasse System.ComponentModel.Composition.ExportAttribute hinzu.Anhand dieses Attributs kann Visual Studio Ihre ISharePointProjectExtension-Implementierung erkennen und laden.Übergeben Sie den ISharePointProjectExtension-Typ an den Attributkonstruktor.
Verwenden Sie in der Implementierung der Initialize-Methode Member des projectService-Parameters, um das Verhalten der Erweiterung zu definieren.Dieser Parameter ist ein ISharePointProjectService-Objekt, das Zugriff auf die in der ISharePointProjectEvents-Schnittstelle definierten Ereignisse bietet.
Beispiel
Im folgenden Codebeispiel wird das Erstellen einer einfachen Projekterweiterung veranschaulicht, die den Großteil der von der ISharePointProjectEvents-Schnittstelle definierten SharePoint-Projektereignisse behandelt.Zum Testen des Codes erstellen Sie in Visual Studio ein SharePoint-Projekt, und fügen Sie der Lösung weitere Projekte hinzu, ändern Sie Projekteigenschaftswerte oder löschen Sie ein Projekt bzw. schließen Sie ein Projekt aus.Die Erweiterung benachrichtigt Sie über Ereignisse mit Meldungen in den Fenstern Ausgabe und Fehlerliste.
Imports Microsoft.VisualStudio.SharePoint
Imports System.ComponentModel
Imports System.ComponentModel.Composition
Namespace Contoso.ExampleProjectExtension
<Export(GetType(ISharePointProjectExtension))> _
Class ExampleProjectExtension
Implements ISharePointProjectExtension
Private WithEvents projectService As ISharePointProjectService
Public Sub Initialize(ByVal projectService As ISharePointProjectService) _
Implements ISharePointProjectExtension.Initialize
Me.projectService = projectService
End Sub
' A project was added.
Private Sub projectService_ProjectAdded(ByVal sender As Object, ByVal e As SharePointProjectEventArgs) _
Handles projectService.ProjectAdded
Dim project As ISharePointProject = CType(sender, ISharePointProject)
Dim message As String = String.Format("The following project was added: {0}", e.Project.Name)
project.ProjectService.Logger.WriteLine(message, LogCategory.Message)
End Sub
' A project was loaded in the IDE.
Private Sub projectService_ProjectInitialized(ByVal sender As Object, ByVal e As SharePointProjectEventArgs) _
Handles projectService.ProjectInitialized
Dim project As ISharePointProject = CType(sender, ISharePointProject)
Dim message As String = String.Format("The following project is being initialized: {0}", e.Project.Name)
project.ProjectService.Logger.WriteLine(message, LogCategory.Message)
End Sub
' The name of a property was changed.
Private Sub projectService_ProjectNameChanged(ByVal sender As Object, ByVal e As NameChangedEventArgs) _
Handles projectService.ProjectNameChanged
Dim project As ISharePointProject = CType(sender, ISharePointProject)
Dim message As String = String.Format("The project named {0} was changed to {1}.", e.OldName, project.Name)
project.ProjectService.Logger.WriteLine(message, LogCategory.Message)
End Sub
' A project property value was changed.
Private Sub ProjectPropertyChanged(ByVal sender As Object, ByVal e As PropertyChangedEventArgs) _
Handles projectService.ProjectPropertyChanged
Dim project As ISharePointProject = CType(sender, ISharePointProject)
Dim message As String = String.Format("The following property of the {0} project was changed: {1}",
project.Name, e.PropertyName)
project.ProjectService.Logger.WriteLine(message, LogCategory.Message)
End Sub
' A project is being removed or unloaded.
Private Sub projectService_ProjectRemoved(ByVal sender As Object, ByVal e As SharePointProjectEventArgs) _
Handles projectService.ProjectRemoved
Dim project As ISharePointProject = CType(sender, ISharePointProject)
Dim message As String = String.Format("The following project is being removed or unloaded: {0}", e.Project.Name)
project.ProjectService.Logger.WriteLine(message, LogCategory.Message)
End Sub
' A project was removed or unloaded.
Private Sub projectService_ProjectDisposing(ByVal sender As Object, ByVal e As SharePointProjectEventArgs) _
Handles projectService.ProjectDisposing
Dim project As ISharePointProject = CType(sender, ISharePointProject)
Dim message As String = String.Format("The following project was removed or unloaded: {0}", e.Project.Name)
project.ProjectService.Logger.WriteLine(message, LogCategory.Message)
End Sub
End Class
End Namespace
using Microsoft.VisualStudio.SharePoint;
using System;
using System.ComponentModel;
using System.ComponentModel.Composition;
namespace Contoso.ExampleProjectExtension
{
[Export(typeof(ISharePointProjectExtension))]
internal class ExampleProjectExtension : ISharePointProjectExtension
{
public void Initialize(ISharePointProjectService projectService)
{
projectService.ProjectAdded += projectService_ProjectAdded;
projectService.ProjectInitialized += projectService_ProjectInitialized;
projectService.ProjectNameChanged += projectService_ProjectNameChanged;
projectService.ProjectPropertyChanged += projectService_ProjectPropertyChanged;
projectService.ProjectRemoved += projectService_ProjectRemoved;
projectService.ProjectDisposing += projectService_ProjectDisposing;
}
// A project was added.
void projectService_ProjectAdded(object sender, SharePointProjectEventArgs e)
{
ISharePointProject project = (ISharePointProject)sender;
string message = String.Format("The following project was added: {0}", e.Project.Name);
project.ProjectService.Logger.WriteLine(message, LogCategory.Message);
}
// A project is loaded in the IDE.
void projectService_ProjectInitialized(object sender, SharePointProjectEventArgs e)
{
ISharePointProject project = (ISharePointProject)sender;
string message = String.Format("The following project is being initialized: {0}", e.Project.Name);
project.ProjectService.Logger.WriteLine(message, LogCategory.Message);
}
// The name of a project was changed.
void projectService_ProjectNameChanged(object sender, NameChangedEventArgs e)
{
ISharePointProject project = (ISharePointProject)sender;
string message = String.Format("The project named {0} was changed to {1}.", e.OldName, project.Name);
project.ProjectService.Logger.WriteLine(message, LogCategory.Message);
}
// A project property value was changed.
private void projectService_ProjectPropertyChanged(object sender, PropertyChangedEventArgs e)
{
ISharePointProject project = (ISharePointProject)sender;
string message = String.Format("The following property of the {0} project was changed: {1}",
project.Name, e.PropertyName);
project.ProjectService.Logger.WriteLine(message, LogCategory.Message);
}
// A project is being removed or unloaded.
void projectService_ProjectRemoved(object sender, SharePointProjectEventArgs e)
{
ISharePointProject project = (ISharePointProject)sender;
string message = String.Format("The following project is being removed or unloaded: {0}", e.Project.Name);
project.ProjectService.Logger.WriteLine(message, LogCategory.Message);
}
// A project was removed or unloaded.
void projectService_ProjectDisposing(object sender, SharePointProjectEventArgs e)
{
ISharePointProject project = (ISharePointProject)sender;
string message = String.Format("The following project was removed or unloaded: {0}", e.Project.Name);
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.
Beispiele, in denen die Behandlung der ProjectMenuItemsRequested- und ProjectPropertiesRequested-Ereignisse veranschaulicht wird, finden Sie unter Gewusst wie: Hinzufügen eines Kontextmenüelements zu SharePoint-Projekten und Gewusst wie: Hinzufügen einer Eigenschaft zu SharePoint-Projekten.
Kompilieren des Codes
Für dieses Beispiel sind Verweise auf die folgenden Assemblys erforderlich:
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
Bereitstellen der Erweiterung
Erstellen Sie ein Visual Studio-Erweiterungspaket (VSIX) für die Assembly und alle weiteren Dateien, die Sie mit der Erweiterung verteilen möchten, um die Erweiterung bereitzustellen.Weitere Informationen erhalten Sie unter Bereitstellen von Erweiterungen für die SharePoint-Tools in Visual Studio.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Erstellen einer SharePoint-Projekterweiterung
Konzepte
Erweitern des SharePoint-Projektsystems
Gewusst wie: Hinzufügen eines Kontextmenüelements zu SharePoint-Projekten
Gewusst wie: Hinzufügen einer Eigenschaft zu SharePoint-Projekten