Практическое руководство. затаврите VSPackage (C# и Visual Basic)
Появляться в О программе диалоговое окно и экран-заставку, VSPackages, должны реализовывать IVsInstalledProduct интерфейс. Это обеспечивает следующие сведения Visual Studio.
Имя
Идентификатор, как серия или номер версии
Сведения
Значок эмблемы
В следующем коде из Примеры расширения Visual Studio.
Реализовать интерфейс IVsInstalledProduct
Добавление 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.
Щелкните правой кнопкой мыши IVsInstalledProductвыберите Реализовать интерфейс, а затем нажмите кнопку Реализовать интерфейс.
Реализация 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.
Поддержка строки информации о продукте
Дважды щелкните файл ресурсов .resx, связанный с VSPackage.
Открытие редактора ресурсов.
Найдите и добавьте название продукта, сведения, и идентификатор.
Следующие строки из ресурса Примеры расширения Visual Studio.
@101
Экран-заставка и Справка пакета о официальном имен (c#).@102
Этот пакет показано, как отобразить текст и изображение в экран-заставке и справке о программе.@104
8.0
Выберите правка и эти сведения.
Создавать значки и растровые изображения продукта
Добавление растровых изображений и значки в проект как ресурсы проекта.
Дополнительные сведения см. в разделе Adding and Editing Resources.
Закройте редактор ресурсов и снова откройте файл .resx в формате XML или текстовом редакторе.
Примечание
Редактор ресурсов не поддерживает присвоить идентификаторы ресурсов к элементам за исключением строк.
Найдите и добавьте ресурсы значков и растрового изображения к файлу .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 см. в разделе Практическое руководство. Тестирование является справка и экраны-заставки.