Gewusst wie: Brennen Sie ein VSPackage (C# und Visual Basic)
Um Informationen im Dialogfeld und im Begrüßungsbildschirm angezeigt wird, muss die VSPackages IVsInstalledProduct-Schnittstelle implementieren. Dadurch werden die folgenden Informationen zu Visual Studiobereit:
Name
ID, wie Serie oder Versionsnummer
Information
Symbol für das Logo
Der folgende Code besteht aus Visual Studio-Erweiterbarkeits-Beispiele.
So implementieren IVsInstalledProduct-Schnittstelle
Fügen Sie das InstalledProductRegistrationAttribute-Attribut der Klasse hinzu, die einem VSPackage implementieren. Diese Klasse muss von Package und IVsInstalledProductberechnen.
<InstalledProductRegistration(True, Nothing, Nothing, Nothing)> _ <DefaultRegistryRoot("Software\Microsoft\VisualStudio\8.0")> _ <PackageRegistration(UseManagedResourcesOnly:=True)> _ <Guid("EEE474A0-083B-4e9c-B453-F6FCCEDA2577")> _ Public NotInheritable Class PackageSplashHelpAboutLoadKey Inherits Package Implements IVsInstalledProduct
[InstalledProductRegistration(true, null, null, null)] [DefaultRegistryRoot("Software\\Microsoft\\VisualStudio\\8.0")] [PackageRegistration(UseManagedResourcesOnly = true)] [Guid("EEE474A0-083B-4e9c-B453-F6FCCEDA2577")] public sealed class PackageSplashHelpAboutLoadKey : Package, IVsInstalledProduct
Das erste Argument, UseInterface, InstalledProductRegistrationAttribute des Attributs wird Visual Studio an, IVsInstalledProduct verwenden, um Produktinformationen, anstatt des InstalledProducts-Registrierungsschlüssels abzurufen. Die übrigen Argumente Zeichenfolgenressourcen Option aus, um den Produktnamen, die ID und den Details anzuzeigen. Da das erste Argument trueist, sind die übrigen Argumente null.
Klicken Sie mit der rechten Maustaste auf IVsInstalledProduct, zeigen Sie auf Schnittstelle implementieren, und klicken Sie dann auf Schnittstelle implementieren.
Implementieren IVsInstalledProduct mithilfe des folgenden Codes.
Public Function IdBmpSplash(ByRef pIdBmp As UInteger) As Integer _ Implements IVsInstalledProduct.IdBmpSplash pIdBmp = 300 Return VSConstants.S_OK End Function Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) As Integer _ Implements IVsInstalledProduct.IdIcoLogoForAboutbox pIdIco = 400 Return VSConstants.S_OK End Function Public Function OfficialName(ByRef pbstrName As String) As Integer _ Implements IVsInstalledProduct.OfficialName pbstrName = GetResourceString("@101") Return VSConstants.S_OK End Function Public Function ProductDetails(ByRef pbstrProductDetails As String) As Integer _ Implements IVsInstalledProduct.ProductDetails pbstrProductDetails = GetResourceString("@102") Return VSConstants.S_OK End Function Public Function ProductID(ByRef pbstrPID As String) As Integer _ Implements IVsInstalledProduct.ProductID pbstrPID = GetResourceString("@104") Return VSConstants.S_OK End Function Public Function GetResourceString(ByVal resourceName As String) As String Dim resourceValue As String Dim resourceManager As IVsResourceManager = DirectCast(GetService(GetType(SVsResourceManager)), IVsResourceManager) If resourceManager Is Nothing Then Throw New InvalidOperationException("Could not get SVsResourceManager service. Make sure that the package is sited before calling this method") End If Dim packageGuid As Guid = Me.[GetType]().GUID Dim hr As Integer = resourceManager.LoadResourceString(packageGuid, -1, resourceName, resourceValue) Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr) Return resourceValue End Function
public int IdBmpSplash(out uint pIdBmp) { pIdBmp = 300; return VSConstants.S_OK; } public int IdIcoLogoForAboutbox(out uint pIdIco) { pIdIco = 400; return VSConstants.S_OK; } public int OfficialName(out string pbstrName) { pbstrName = GetResourceString("@101"); return VSConstants.S_OK; } public int ProductDetails(out string pbstrProductDetails) { pbstrProductDetails = GetResourceString("@102"); return VSConstants.S_OK; } public int ProductID(out string pbstrPID) { pbstrPID = GetResourceString("@104"); return VSConstants.S_OK; } public string GetResourceString(string resourceName) { string resourceValue; IVsResourceManager resourceManager = (IVsResourceManager)GetService(typeof(SVsResourceManager)); if (resourceManager == null) { throw new InvalidOperationException( "Could not get SVsResourceManager service. Make sure that the package is sited before calling this method"); } Guid packageGuid = this.GetType().GUID; int hr = resourceManager.LoadResourceString( ref packageGuid, -1, resourceName, out resourceValue); Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr); return resourceValue; }
Visual Studio ruft diese Methode auf, um Einbrennen Informationen zum Abrufen von VSPackages. Die GetResourceString-Methode wird verwendet, um diese Informationen zu isolieren.
Hinweis
Codekommentare werden der Kürze halber gelöscht.Sie können sie in Visual Studio-Erweiterbarkeits-Beispielesuchen.
Um die Produktinformations Beibehalten von Zeichenfolgen
Doppelklicken Sie auf die .resx-Ressourcendatei, die mit einem VSPackage zugeordnet ist.
Der Ressourcen-Editor wird geöffnet.
Suchen, oder fügen Sie den Produktnamen, die Informationen und die ID hinzu
Die folgenden Ressourcenzeichenfolgen sind von Visual Studio-Erweiterbarkeits-Beispiele.
@101
Paket-Begrüßungsbildschirm und Hilfe zu den offiziellen Namen (C#).@102
Dieses Paket wird veranschaulicht, wie Text und Bild im Begrüßungsbildschirm und ungefähr in der Hilfe angezeigt wird.@104
8.0
Wählen Sie aus, und bearbeiten Sie diese Informationen, wie Sie möchten.
Um die Produkt Bitmaps und Symbole beibehalten
Fügen Sie die Bitmaps und Symbole als Projektressourcen dem Projekt hinzu.
Weitere Informationen finden Sie unter Adding and Editing Resources.
Schließen Sie den Ressourcen-Editor, und öffnen Sie die RESX-Datei in einem XML- oder in einem Texteditor.
Hinweis
Der Ressourcen-Editor unterstützt das Zuweisen von Ressource ID auf die Elemente nichts anderes als Zeichenfolgen.
Suchen oder fügen Sie das Symbol und die Bitmapressourcen der RESX-Datei hinzu. Die folgenden Ressourcen sind von Visual Studio-Erweiterbarkeits-Beispiele.
<data name="300" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>GenericPackage.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data> <data name="400" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>GenericPackage.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data>
Um das Dialogfeld Info Begrüßungsbildschirme und testen
- Um ein VSPackage zu testen, finden Sie unter Gewusst wie: Testen Sie die Hilfe und die Begrüßungsbildschirme Info.