Erstellen einer Erweiterung mit einem VSPackage
In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie ein VSIX-Projekt erstellen und ein VSPackage-Projektelement hinzufügen. Wir verwenden vsPackage, um den UI-Shell-Dienst abzurufen, um ein Meldungsfeld anzuzeigen.
Erstellen eines VSPackage-Pakets
Erstellen Sie ein VSIX-Projekt mit dem Namen FirstPackage. Sie finden die VSIX-Projektvorlage im Dialogfeld "Neues Projekt ", indem Sie nach "vsix" suchen.
Wenn das Projekt geöffnet wird, fügen Sie eine Visual Studio-Paketelementvorlage mit dem Namen "FirstPackage" hinzu. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Hinzufügen>Neues Element aus. Wechseln Sie im Dialogfeld "Neues Element hinzufügen" zu Visual C#>Extensibility, und wählen Sie "Visual Studio-Paket" aus. Ändern Sie im Feld "Name " unten im Fenster den Befehlsdateinamen in "FirstPackage.cs".
Erstellen Sie das Projekt, und starten Sie das Debugging.
Die experimentelle Instanz von Visual Studio wird angezeigt. Weitere Informationen zur experimentellen Instanz finden Sie in der experimentellen Instanz.
Öffnen Sie in der experimentellen Instanz das Fenster "Extras>Erweiterungen und Updates". Hier sollte die FirstPackage-Erweiterung angezeigt werden. (Wenn Sie öffnen Erweiterungen und Updates in Ihrer arbeitsfähigen Instanz von Visual Studio werden "FirstPackage" nicht angezeigt.
Laden des VSPackage
An diesem Punkt wird die Erweiterung nicht geladen, da nichts vorhanden ist, das dazu führt, dass sie geladen wird. Sie können eine Erweiterung in der Regel laden, wenn Sie mit der Benutzeroberfläche interagieren (durch Klicken auf einen Menübefehl, öffnen eines Toolfensters), oder indem Sie angeben, dass das VSPackage in einem bestimmten Ui-Kontext geladen werden soll. Weitere Informationen zum Laden von VSPackages und UI-Kontexten finden Sie unter Laden von VSPackages. Für dieses Verfahren zeigen wir Ihnen, wie Sie ein VSPackage laden, wenn eine Lösung geöffnet ist.
Öffnen Sie die Datei "FirstPackage.cs ". Suchen Sie nach der Deklaration der
FirstPackage
Klasse. Ersetzen Sie die vorhandenen Attribute durch die folgenden Attribute:[PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [ProvideAutoLoad(UIContextGuids80.SolutionExists)] [Guid(FirstPackage.PackageGuidString)] public sealed class FirstPackage : Package
Fügen wir eine Nachricht hinzu, die uns darüber informiert, dass das VSPackage geladen wurde. Dazu verwenden wir die VSPackage-Methode
Initialize()
, da Sie Visual Studio-Dienste erst abrufen können, nachdem die VSPackage websiteiert wurde. (Weitere Informationen zum Abrufen von Diensten finden Sie unter Gewusst wie: Abrufen eines Diensts.) Ersetzen Sie dieInitialize()
Methode durchFirstPackage
Code, der den SVsUIShell Dienst abruft, die IVsUIShell Schnittstelle abruft und die ShowMessageBox Methode aufruft.protected override void Initialize() { base.Initialize(); 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}.Initialize()", this.GetType().FullName), string.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, out result)); }
Erstellen Sie das Projekt, und starten Sie das Debugging. Die experimentelle Instanz wird geöffnet.
Öffnen Sie eine Lösung in der experimentellen Instanz. Es sollte ein Meldungsfeld mit der Meldung "First Package Inside Initialize()" angezeigt werden.