diff --git a/tooling/Microsoft.VisualStudio.BlazorExtension/AboutDialogInfoAttribute.cs b/tooling/Microsoft.VisualStudio.BlazorExtension/AboutDialogInfoAttribute.cs new file mode 100644 index 0000000000..9882351f76 --- /dev/null +++ b/tooling/Microsoft.VisualStudio.BlazorExtension/AboutDialogInfoAttribute.cs @@ -0,0 +1,56 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Diagnostics; +using System.Reflection; +using Microsoft.VisualStudio.Shell; + +namespace Microsoft.VisualStudio.BlazorExtension +{ + public class AboutDialogInfoAttribute : RegistrationAttribute + { + private readonly string _detailsId; + private readonly string _name; + private readonly string _nameId; + private readonly string _packageGuid; + + // nameId and detailsId are resource IDs, they should start with # + public AboutDialogInfoAttribute(string packageGuid, string name, string nameId, string detailsId) + { + _packageGuid = packageGuid; + _name = name; + _nameId = nameId; + _detailsId = detailsId; + } + + private string GetKeyName() + { + return "InstalledProducts\\" + _name; + } + + public override void Register(RegistrationContext context) + { + var version = typeof(AboutDialogInfoAttribute).Assembly.GetCustomAttribute()?.InformationalVersion; + + using (var key = context.CreateKey(GetKeyName())) + { + key.SetValue(null, _nameId); + key.SetValue("Package", Guid.Parse(_packageGuid).ToString("B")); + key.SetValue("ProductDetails", _detailsId); + key.SetValue("UseInterface", false); + key.SetValue("UseVSProductID", false); + + if (version != null) + { + key.SetValue("PID", version); + } + } + } + + public override void Unregister(RegistrationContext context) + { + context.RemoveKey(GetKeyName()); + } + } +} diff --git a/tooling/Microsoft.VisualStudio.BlazorExtension/BlazorPackage.cs b/tooling/Microsoft.VisualStudio.BlazorExtension/BlazorPackage.cs index e7496849a8..1d93fb5164 100644 --- a/tooling/Microsoft.VisualStudio.BlazorExtension/BlazorPackage.cs +++ b/tooling/Microsoft.VisualStudio.BlazorExtension/BlazorPackage.cs @@ -7,9 +7,9 @@ using Microsoft.VisualStudio.Shell; namespace Microsoft.VisualStudio.BlazorExtension { - // We mainly have a package so we can have an "About" dialog entry. + // We mainly have a package so we can have an "About" dialog entry. [PackageRegistration(UseManagedResourcesOnly = true)] - [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] + [AboutDialogInfo(PackageGuidString, "ASP.NET Core Blazor Language Services", "#110", "112")] [Guid(BlazorPackage.PackageGuidString)] public sealed class BlazorPackage : Package { diff --git a/tooling/Microsoft.VisualStudio.BlazorExtension/Microsoft.VisualStudio.BlazorExtension.csproj b/tooling/Microsoft.VisualStudio.BlazorExtension/Microsoft.VisualStudio.BlazorExtension.csproj index b623a0a2d3..001a10373f 100644 --- a/tooling/Microsoft.VisualStudio.BlazorExtension/Microsoft.VisualStudio.BlazorExtension.csproj +++ b/tooling/Microsoft.VisualStudio.BlazorExtension/Microsoft.VisualStudio.BlazorExtension.csproj @@ -4,8 +4,13 @@ 15.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) true + + + false + false + true ..\..\build\Key.snk - - - false - false + + <_VSIXAssemblyAttribute Include="System.Reflection.AssemblyInformationalVersionAttribute"> + <_Parameter1>$(VersionPrefix)-$(VersionSuffix) + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + <_GeneratedVSIXAssemblyInfoInputsCacheFile>$(IntermediateOutputPath)$(MSBuildProjectName).VSIXAssemblyInfo.cache.txt + <_GeneratedVSIXAssemblyInfoFile>$(IntermediateOutputPath)$(MSBuildProjectName).VSIXAssemblyInfo.cs + \ No newline at end of file