From 0a450d2f53a65691fb180f7660ed47e39650e20d Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Thu, 22 Mar 2018 14:54:20 -0700 Subject: [PATCH] Add a version to the Razor about dialog entry --- .../AboutDialogInfoAttribute.cs | 64 +++++++++++++++++++ ...crosoft.VisualStudio.RazorExtension.csproj | 39 ++++++++++- .../RazorPackage.cs | 4 +- 3 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 tooling/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs diff --git a/tooling/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs b/tooling/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs new file mode 100644 index 0000000000..3d97da5190 --- /dev/null +++ b/tooling/Microsoft.VisualStudio.RazorExtension/AboutDialogInfoAttribute.cs @@ -0,0 +1,64 @@ +// 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.Reflection; +using Microsoft.VisualStudio.Shell; + +namespace Microsoft.VisualStudio.RazorExtension +{ + 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; + } + + // This is a resource ID it should start with # + public string IconResourceID { get; set; } + + private string GetKeyName() + { + return "InstalledProducts\\" + _name; + } + + public override void Register(RegistrationContext context) + { + var attribute = typeof(AboutDialogInfoAttribute).Assembly.GetCustomAttribute(); + var version = attribute?.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); + } + + if (IconResourceID != null) + { + key.SetValue("LogoID", IconResourceID); + } + } + } + + public override void Unregister(RegistrationContext context) + { + context.RemoveKey(GetKeyName()); + } + } +} \ No newline at end of file diff --git a/tooling/Microsoft.VisualStudio.RazorExtension/Microsoft.VisualStudio.RazorExtension.csproj b/tooling/Microsoft.VisualStudio.RazorExtension/Microsoft.VisualStudio.RazorExtension.csproj index e5ac2eaea6..cb70e6627c 100644 --- a/tooling/Microsoft.VisualStudio.RazorExtension/Microsoft.VisualStudio.RazorExtension.csproj +++ b/tooling/Microsoft.VisualStudio.RazorExtension/Microsoft.VisualStudio.RazorExtension.csproj @@ -24,6 +24,7 @@ false false + Debug @@ -65,6 +66,7 @@ 4 + @@ -265,11 +267,9 @@ - - + + <_GeneratedVSIXAssemblyInfoInputsCacheFile>$(IntermediateOutputPath)$(MSBuildProjectName).VSIXAssemblyInfo.cache.txt + <_GeneratedVSIXAssemblyInfoFile>$(IntermediateOutputPath)$(MSBuildProjectName).VSIXAssemblyInfo.cs + + + + <_VSIXAssemblyAttribute Include="System.Reflection.AssemblyInformationalVersionAttribute"> + <_Parameter1>$(VsixVersion) + + + + + + + + + + + + + + + + false + + + + + + + \ No newline at end of file diff --git a/tooling/Microsoft.VisualStudio.RazorExtension/RazorPackage.cs b/tooling/Microsoft.VisualStudio.RazorExtension/RazorPackage.cs index dd5fc52bca..ed2f86b717 100644 --- a/tooling/Microsoft.VisualStudio.RazorExtension/RazorPackage.cs +++ b/tooling/Microsoft.VisualStudio.RazorExtension/RazorPackage.cs @@ -9,8 +9,8 @@ using Microsoft.VisualStudio.Shell.Interop; namespace Microsoft.VisualStudio.RazorExtension { [PackageRegistration(UseManagedResourcesOnly = true)] - [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] - [Guid(RazorPackage.PackageGuidString)] + [AboutDialogInfo(PackageGuidString, "ASP.NET Core Razor Language Services", "#110", "#112", IconResourceID = "#400")] + [Guid(PackageGuidString)] [ProvideMenuResource("Menus.ctmenu", 1)] #if RAZOR_EXTENSION_DEVELOPER_MODE [ProvideToolWindow(typeof(Microsoft.VisualStudio.RazorExtension.RazorInfo.RazorInfoToolWindow))]