若要显示 有关 对话框和初始屏幕, Vspackage 必须实现 IVsInstalledProduct 接口。 这提供下列信息。 Visual Studio:
名称
ID,例如序列化的或版本号
信息
徽标图标
下面的代码是从 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 注册表项。 其余的参数选择字符串资源显示产品名称、详细信息和 ID,分别。 但是,在中,因为第一个参数是 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 方法可用于本地化此信息。
备注
代码注释简洁起见被删除。可以找到它们在 Visual Studio 扩展性示例。
维护产品信息字符串
双击 .resx 资源文件与 VSPackage。
资源编辑器中打开。
查找或添加产品名称、信息和 ID.
下面的资源字符串来自 Visual Studio 扩展性示例。
@101
包初始屏幕和帮助涉及正式名称 (c# 中)。@102
此包演示如何显示文本和图像在初始屏幕和帮助。@104
8.0
选择和编辑此信息,您希望。
维护产品图标和位图
添加位图和图标添加到项目用作项目资源。
有关更多信息,请参见 Adding and Editing Resources。
关闭资源编辑器并重新打开在 XML 或文本编辑器的 .resx 文件。
备注
除了字符串之外,资源编辑器不支持分配资源 ID 到项目中。
查找或添加图标和位图资源。 .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,请参见 如何:测试帮助和初始屏幕。