Поделиться через


Практическое руководство. затаврите VSPackage (C# и Visual Basic)

Появляться в О программе диалоговое окно и экран-заставку, VSPackages, должны реализовывать IVsInstalledProduct интерфейс. Это обеспечивает следующие сведения Visual Studio.

  • Имя

  • Идентификатор, как серия или номер версии

  • Сведения

  • Значок эмблемы

В следующем коде из Примеры расширения Visual Studio.

Реализовать интерфейс IVsInstalledProduct

  1. Добавление InstalledProductRegistrationAttribute атрибут к классу, реализующему VSPackage. Этот класс должен наследоваться от обоих Package и IVsInstalledProduct.

    <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
    

    Первый аргумент, UseInterface" InstalledProductRegistrationAttribute атрибут сообщает Visual Studio использование IVsInstalledProduct получить сведения о продукте, вместо этого раздела реестра InstalledProducts. Остальные аргументы выберите строковые ресурсы для отображения имени продукта, подробностей и идентификатор соответственно. Однако поскольку первый аргумент true, оставшиеся аргументы null.

  2. Щелкните правой кнопкой мыши IVsInstalledProductвыберите Реализовать интерфейс, а затем нажмите кнопку Реализовать интерфейс.

  3. Реализация IVsInstalledProduct с помощью следующего кода.

    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 вызывает эти методы для получения сведений для затаврить VSPackage. Метод GetResourceString используется, чтобы локализовать эти сведения.

    Примечание

    Комментарии к коду удалены для краткости.Можно искать их in Примеры расширения Visual Studio.

Поддержка строки информации о продукте

  1. Дважды щелкните файл ресурсов .resx, связанный с VSPackage.

    Открытие редактора ресурсов.

  2. Найдите и добавьте название продукта, сведения, и идентификатор.

    Следующие строки из ресурса Примеры расширения Visual Studio.

    • @101
      Экран-заставка и Справка пакета о официальном имен (c#).

    • @102
      Этот пакет показано, как отобразить текст и изображение в экран-заставке и справке о программе.

    • @104
      8.0

  3. Выберите правка и эти сведения.

Создавать значки и растровые изображения продукта

  1. Добавление растровых изображений и значки в проект как ресурсы проекта.

    Дополнительные сведения см. в разделе Adding and Editing Resources.

  2. Закройте редактор ресурсов и снова откройте файл .resx в формате XML или текстовом редакторе.

    Примечание

    Редактор ресурсов не поддерживает присвоить идентификаторы ресурсов к элементам за исключением строк.

  3. Найдите и добавьте ресурсы значков и растрового изображения к файлу .resx. Следующие ресурсы Примеры расширения Visual Studio.

    <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>
    

Тестирование диалоговое окно о программе и экран-заставки

См. также

Другие ресурсы

фирменная символика VSPackage