Exemplarische Vorgehensweise: VSPackage erstellen (Teil 1 von 4)
Sie können Funktionen hinzufügen, indem Sie in Visual Studio ein VSPackage erstellen. Da ein VSPackage Software-Modul ist, kann es zu anderen Personen verteilt werden, dass sie auf ihren eigenen Computern Visual Studio erweitern können.
Indem Sie die Visual Studio-Paket-Vorlage verwenden, können Sie ein Projekt erstellen, das bereits die Quelldateien und Konfigurationsdateien verfügt, die erforderlich sind, um ein VSPackage erstellen. Das Projekt enthält eine Datei, die eine Klasse definiert, die Sie beim Benennen Sie das Projekt erstellen. Diese Klasse, die von einer Klasse des verwalteten Paketframeworks (MPF) abgeleitet ist, benannte Package, enthält Attribute, die bestimmen, wie ein VSPackage in Visual Studio soll. Die Paket Klasse enthält auch den Initialisierungscode und anderen Code wie Menübefehls Ereignishandler. Diese Klasse stellt die Grundlage VSPackages.
In dieser exemplarischen Vorgehensweise unterrichtet, wie ein VSPackage erstellt und anpassen können wie folgt:
Erstellen Sie ein VSPackage, indem Sie die Vorlage Paket verwenden.
Implementieren eines Menübefehls Ereignishandler.
Fügen Sie eine Zugriffstaste hinzu.
Fügen Sie benutzerdefinierte Informationen zum Visual Studio-Begrüßungsbildschirm und dem Dialogfeld Informationen hinzu.
Diese exemplarische Vorgehensweise ist Teil einer Zeile, der unterrichtet, wie die integrierte Entwicklungsumgebung (IDE) von Visual Studio erweitert. Weitere Informationen finden Sie unter Exemplarische Vorgehensweisen zum Anpassen von Visual Studio mithilfe von VSPackages.
Vorbereitungsmaßnahmen
Zum Abschließen dieser exemplarischen Vorgehensweise müssen Sie Visual Studio 2010 SDKinstallieren.
Hinweis
Weitere Informationen über das Visual Studio-SDK finden Sie unter Erweitern von Visual Studio Overview.Um herauszufinden finden Sie unter wie das Visual Studio-SDK, auf Visual Studio Extensibility Developer Center der MSDN-Website herunterlädt.
Vorlagen-Speicherorte für die Visual Studio-Paket-Vorlage
Die Visual Studio-Paket-Vorlage kann in diesen Positionen im Dialogfeld Neues Projekt gefunden werden:
Klicken Sie unter Von Visual Basic-Erweiterbarkeit. Die Standardsprache des Projekts ist Visual Basic.
Die C#-Erweiterbarkeit. Die Standardsprache ist C# des Projekts.
Verwenden anderer Projekttyp-Erweiterbarkeit. Die Standardsprache des Projekts ist C++.
VSPackage über die Paket-Vorlage erstellen
In diesem Abschnitt wird erläutert, wie eine VSPackage-Projektmappe in Visual Studio.
So erstellen Sie eine grundlegende VSPackage-Projektmappe
Erstellen Sie ein VSPackage mithilfe der Visual Studio-Paket importieren.
Wählen Sie auf der Seite Willkommen auf Weiter.
Wählen Sie auf der Seite Wählen Sie eine Programmiersprache aus.Visual Basicoder Visual C# die Option Neue Schlüsseldatei für die Assemblysignierung generieren, und klicken Sie dann auf Weiter.
Auf der Seite Grundlegende Informationen zum VSPackage im Feld VSPackage-Name FirstPackageTyp akzeptieren, und die verbleibenden Standards. Der Firmenname und Projektname kombiniert werden, um den Namespace für das Paket zu erstellen.
Klicken Sie auf Next.
Wählen Sie auf der Seite Optionen für das VSPackage auswählenMenübefehl, und klicken Sie dann auf Weiter.
Auf der Seite BefehlsoptionenBefehlsname im Feld Typ Erster Befehl. (Dieser Text wird im Menü in Visual Studio). Im Befehls-ID Feld Typ cmdidFirstCommand. (Dieser Bezeichner wird in Code verwendet werden, um den Befehl zu identifizieren.)
Klicken Sie auf Next.
Auf der Seite Testoptionen aktivieren auf Fertig stellen.
Die Vorlage erstellt ein Visual Studio-Projekt, das grundlegende Funktionalität verfügt. Sie können sie versuchen, indem Sie F5 drücken, in der das Projekt erstellt und es dann in einer anderen Instanz von Visual Studio im Debugmodus wird (auch als die experimentelle Build from Visual Studio).
Hinweis
Wenn Sie das Projekt erstmals erstellen, scheint möglicherweise Visual Studio nicht mehr reagiert und Sie erhalten möglicherweise eine Meldung angezeigt, dass Visual Studio ausgelastet ist.Ignorieren Sie einfach die Nachricht und den Wartevorgang erfüllt hat, bis Visual Studio geöffnet und das Paket geladen wird.
In der experimentellen Build auf dem Extras Menü, sollte ein Befehl, der Erster Befehl bezeichnete angezeigt werden. Beachten Sie, dass der erste Name dieser Befehl die Befehlsoptionen erhalten Sie auf der Seite Vorlage basiert.
Klicken Sie auf Erster Befehl. Eine Meldung mit folgendem ähnelt, sollte angezeigt werden.
Untersuchen des Menübefehls-Handlers
Die Meldung, die angezeigt wird, wenn Sie auf Erster Befehl im Menü Extras stammen aus dem Code im Handler für den Menübefehl. Dieser Handler wird in der FirstPackage.cs- oder FirstPackage.vb-Datei.
So fügen Sie dem Menüelement Ereignishandler überprüfen
In Projektmappen-Exploreröffnen Sie FirstPackage.cs oder FirstPackage.vb.
Suchen Sie die FirstPackage-Klasse. Die FirstPackage-Klasse wird folgendermaßen definiert.
Public NotInheritable Class FirstPackage Inherits Package
public sealed class FirstPackage : Package
Beachten Sie, dass die Klasse von der MPF-Klasse abgeleitet Package ist.
Suchen Sie den Code für den Handler Menü durch die MenuItemCallback-Methode implementiert wird. Das Menü handlerfunktion wird eine typische Windows Form-Ereignishandler Methode.
Private Sub MenuItemCallback(ByVal sender As Object, ByVal e As EventArgs) ' Show a Message Box to prove we were here Dim uiShell As IVsUIShell = TryCast(GetService(GetType(SVsUIShell)), IVsUIShell) Dim clsid As Guid = Guid.Empty Dim result As Integer Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(0, clsid, "FirstPackage", String.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", Me.GetType().Name), String.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, result)) End Sub
private void MenuItemCallback(object sender, EventArgs e) { IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell)); Guid clsid = Guid.Empty; int result; Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure( uiShell.ShowMessageBox( 0, ref clsid, "FirstPackage", string.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", this.ToString()), string.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, out result)); }
Eine Zugriffstaste hinzu
Standardmäßig verfügen über Menübefehle, die von der Vorlage erstellten Paket keine Tastenkombination. Sie können ein ersten Befehl hinzufügen.
So erstellen Sie eine Zugriffstaste hinzu
In Projektmappen-Exploreröffnen Sie First.vsct.
Die Datei wird im XML-Editor in Visual Studio geöffnet.
Suchen Sie das Ende des Elements, das durch das </Commands>-Tag angegeben wird.
Fügen Sie die folgenden Zeilen zwischen dem </Commands>-Tag und dem <Symbols>-Tag hinzu.
<KeyBindings> <KeyBinding guid="guidFirstCmdSet" id="cmdidFirstCommand" editor="guidVSStd97" key1="M" mod1="(control shift)"/> </KeyBindings>
Dieses Tastenzuordnungs Element verfügt über mehrere Attribute. Die guid und id-Attribute bestimmen, welcher Befehl die Tastenkombination empfängt. Die GUID ist die GUID und ID VSPackages ist das Befehlsbezeichner Sie eingegeben hat, als Sie die Vorlage ausgeführt haben. Beide Symbole werden im Abschnitt Symbol wie folgt definiert.
<Symbols> <GuidSymbol name="guidFirstCmdSet" value="{600efde8-1f5e-4df5-bc22-06074a411975}"> <IDSymbol name="cmdidFirstCommand" value="0x0100" /> </GuidSymbol>
Der Wert des editor-Attributs ist eine GUID, die den Kontext darstellt, in dem die Tastenkombination verfügbar ist. In Visual Studio kann die Bindung einer Tastenkombination für einen Befehl zu bestimmten Fenstern ausgewertet werden oder global festgelegt werden (das heißt überall in Visual Studio verfügbar.) Beispielsweise kann in einen Text-Editor, STRG+I den inkrementellen Suche, aber in Projektmappen-ExplorerBefehl verfügt über keine Tastenzuordnung, STRG+I Deshalb ist nur im Text-Editor STRG+I zur Verfügung. In dieser exemplarischen Vorgehensweise ist die Tastenkombination für global sein. Deshalb ist der Wert des Editors guidVSStd97Attributs für das der Wert ist, der über eine Tastenkombination globalen macht.
Die key1 und mod1-Attribute legen die Taste ab, die mit dem Modifizierer gedrückt werden müssen, um die Zugriffstaste zu aktivieren. Bei dem Wert key1, sind alle Tasten auf der Tastatur in der symbolischen Form, z. B. „M“ für den Buchstaben M „und“ VK_F5 für die Funktionstaste F5 verfügbar. Der Wert von mod1“ Alt „kann „sein, fügen Sie“ oder „verschieben Sie“, die durch Leerzeichen getrennt sind, in beliebiger Kombination.
In dieser exemplarischen Vorgehensweise ist der Wert von key1 M und der Wert von mod1 ist (Control Shift). Daher ist die Tastenkombination STRG+UMSCHALT+M.
Klicken Sie im Menü Debuggen auf Starten ohne Debuggen.
Klicken Sie in der experimentellen Build von Visual Studio im Menü Extras sollte STRG+UMSCHALT+M neben Erster Befehlangezeigt werden.
Sie die Tastenkombination STRG+UMSCHALT+M. Sie sollten die gleiche Meldung angezeigt, die angezeigt wird, wenn Sie auf Erster Befehl im Menü Extras .
Weitere Informationen zu .vsct-Dateien finden Sie unter VSCT-XML-Schemaverweis.
Benutzerdefinierte Informationen zum Dialogfeld hinzufügen Info
Sie können ein Symbol und Informationen zu dem Paket im Dialogfeld Informationen enthalten. Hierzu müssen Sie die folgenden Änderungen an der Projektmappe vornehmen:
Ändern Sie die InstalledProductRegistrationAttribute-Argumente für die zentrale VSPackage-Klasse.
Implementieren Sie die IVsInstalledProduct-Schnittstelle für die zentrale VSPackage-Klasse.
Fügen Sie dem Ordner Ressourcen ein Symbol hinzu.
Verweisen Sie auf das Symbol in der VSPackage.resx-Datei.
Die wichtigste VSPackage-Klasse verwendet das InstalledProductRegistrations-Attribut, um anzugeben, wohin Informationen zum Dialogfeld Informationen sucht. In dieser exemplarischen Vorgehensweise ist die Hauptklasse FirstPackage benannt und kann geändert werden, indem FirstPackage.cs oder FirstPackage.vb öffnet.
Die neue Projektvorlage generiert die folgende InstalledProductRegistrations-Attribut.
<InstalledProductRegistration( false, "#110", "#112", "1.0", IconResourceID := 400)>
[InstalledProductRegistration( false, "#110", "#112", "1.0", IconResourceID = 400)]
Die Ressource #110“ und „Id „verweist auf“ #112 Zeichenfolgenressourcen, die in der VSPackage.resx-Datei definiert werden, wie nachfolgend veranschaulicht:
110 gibt an FirstPackage
112 gibt Informationen über My in einem VSPackage
IconResourceID 400 steht für die Package.ico-Datei im Ressourcenordner an, der in der VSPackage.resx-Datei wie folgt definiert ist.
<data name="400" type="System.Resources.ResXFileRef,
System.Windows.Forms">
<value>Resources\Package.ico;System.Drawing.Icon, System.Drawing,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a
</value>
</data>
Um das Dialogfeld Informationen anzupassen, ändern Sie das erste Argument des InstalledProductRegistrations-Attributs zu true, damit ein VSPackage über die entsprechende Informationen IVsInstalledProduct-Schnittstelle bereitstellen kann.
So fügen Sie benutzerdefinierte Informationen und dem Begrüßungsbildschirm hinzufügen das Dialogfeld Info
Öffnen Sie FirstPackage.cs oder FirstPackage.vb, suchen Sie das InstalledProductRegistrations-Attribut, und ändern Sie seine Argumente wie folgt.
InstalledProductRegistration(True, Nothing, Nothing, Nothing)
[InstalledProductRegistration(true, null, null, null)]
Berechnen Sie die FirstPackage-Klasse vom Paket und IVsInstalledProduct.
Public NotInheritable Class FirstPackage Inherits Package Implements IVsInstalledProduct
public sealed class FirstPackage : Package, IVsInstalledProduct
Implementieren Sie die implizit IVsInstalledProduct-Schnittstelle. Dieser Schritt unterscheidet sich bei C# und Visual Basic.
In C# IVsInstalledProduct-Schnittstelle implementieren Sie die implizit mit der Maus auf IVsInstalledProductveranschaulichen. Wenn das IntelliSense-Menü angezeigt wird, klicken Sie auf den ersten Punkt.
Das zu, fügt die folgenden Methoden der FirstPackage-Klasse Stub hinzu. In einem späteren Schritt füllen Sie die Methoden aus.
public int IdBmpSplash(out uint pIdBmp) { throw new NotImplementedException(); } public int IdIcoLogoForAboutbox(out uint pIdIco) { throw new NotImplementedException(); } public int OfficialName(out string pbstrName) { throw new NotImplementedException(); } public int ProductDetails(out string pbstrProductDetails) { throw new NotImplementedException(); } public int ProductID(out string pbstrPID) { throw new NotImplementedException(); }
In Visual Basic fügen Sie den folgenden Code dem unteren Rand der FirstPackage-Klasse hinzu. In einem späteren Schritt füllen Sie die Methoden aus.
Function ProductDetails( _ <OutAttribute()> ByRef pbstrProductDetails As String) _ As Integer End Function Public Function IdBmpSplash(ByRef pIdBmp As UInteger) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.IdBmpSplash End Function Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.IdIcoLogoForAboutbox End Function Public Function OfficialName(ByRef pbstrName As String) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.OfficialName End Function Public Function ProductID(ByRef pbstrPID As String) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.ProductID End Function
Kopieren Sie Icon.ico von <Visual Studio SDK installation path> \ Common7 \ IDE \ NewFileItems , und fügen Sie ihn im Ordner Ressourcen in der Projektmappe Paket ein.
In Projektmappen-Explorermit der rechten Maustaste auf die Ressourcen Ordner, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Vorhandenes Element. Legen Sie den Dateityp zu Alle Dateien (*.*) Filter fest, und fügen Sie dann Icon.ico hinzu.
In Projektmappen-Explorermit der rechten Maustaste auf VSPackage.resx, und klicken Sie dann auf Öffnen mit. Wählen Sie XML-Editor , und klicken Sie auf OK , um die Datei im XML-Editor geöffnet werden soll.
Fügen Sie die folgenden Zeilen direkt vor dem endgültigen </root>-Tag hinzu.
<data name="500" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>Resources\GenericPackage.ico; System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a </value> </data>
Dieses Markup deklariert Icon.ico als Ressourcen-ID 500.
In FirstPackage.cs oder FirstPackage.vb ersetzen Sie die Implementierung der IVsInstalledProduct-Schnittstelle durch den folgenden Code.
Public Function ProductDetails(ByRef pbstrProductDetails As String) As Integer Implements IVsInstalledProduct.ProductDetails pbstrProductDetails = "This is my package" Return Microsoft.VisualStudio.VSConstants.S_OK End Function Public Function IdBmpSplash(ByRef pIdBmp As UInteger) _ As Integer Implements IVsInstalledProduct.IdBmpSplash Return Microsoft.VisualStudio.VSConstants.S_OK End Function Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) _ As Integer Implements IVsInstalledProduct.IdIcoLogoForAboutbox pIdIco = 600 Return Microsoft.VisualStudio.VSConstants.S_OK End Function Public Function OfficialName(ByRef pbstrName As String) _ As Integer Implements IVsInstalledProduct.OfficialName pbstrName = "My Package" Return Microsoft.VisualStudio.VSConstants.S_OK End Function Public Function ProductID(ByRef pbstrPID As String) _ As Integer Implements IVsInstalledProduct.ProductID pbstrPID = "My Package ID" Return Microsoft.VisualStudio.VSConstants.S_OK End Function
public int IdBmpSplash(out uint pIdBmp) { return Microsoft.VisualStudio.VSConstants.S_OK; } public int IdIcoLogoForAboutbox(out uint pIdIco) { pIdIco = 500; return Microsoft.VisualStudio.VSConstants.S_OK; } public int OfficialName(out string pbstrName) { pbstrName = "My Package"; return Microsoft.VisualStudio.VSConstants.S_OK; } public int ProductDetails(out string pbstrProductDetails) { pbstrProductDetails = "This is my package"; return Microsoft.VisualStudio.VSConstants.S_OK; } public int ProductID(out string pbstrPID) { pbstrPID = "My Package ID"; return Microsoft.VisualStudio.VSConstants.S_OK; }
Die zweite Methode gibt die Ressourcen-ID für das Symbol zurück. Die restlichen drei Funktionen geben den Namen und die Produktdetails und die Produkt-ID zurück, sodass sie im Dialogfeld Informationen angezeigt werden.
Sie können die Änderungen testen, indem Sie die folgenden Schritte ausführen.
Um den Begrüßungsbildschirm und zur Anpassung des Dialogfelds testen
In Projektmappen-Explorererste rechten Maustaste auf den Projektknoten, und klicken Sie anschließend auf Eigenschaften. Der Anwendungs-Designer angezeigt wird.
Klicken Sie auf Debuggen. Der Bereich Optionen Debuggen wird angezeigt.
Im Befehlszeilenargumente Feld fügen Sie den Schalter /splash hinzu.
Drücken Sie F5, um Visual Studio in der experimentellen Build zu öffnen.
Zeigen Sie im Menü Hilfe Informationen.
Das spezifische Informationen hinzufügen wird angezeigt und zeigt das Symbol und Text für ein VSPackage an.
Weitere Informationen
Projektmappen-Explorer und Aufgabenliste sind Beispiele von Toolfenstern. In Exemplarische Vorgehensweise: Ein Toolfenster erstellen (Teil 2 von 4)können Sie ein Toolfenster erstellen, das Docks in Visual Studio und Musik Sie Dateien ausgeführt werden können.
Siehe auch
Konzepte
Visual Studio-Erweiterbarkeits-Beispiele