From 56d93f62f1a37256de5979dbdb14eae22b172056 Mon Sep 17 00:00:00 2001 From: Kir-Antipov Date: Tue, 30 Jul 2019 18:33:24 +0300 Subject: [PATCH] VisualDump 2.1 - Now all my extensions work on the basis of a single API, which made it possible to simplify some things --- VisualDump/Commands/BaseCommand.cs | 65 ------------------ VisualDump/Commands/ShowDumpWindowCommand.cs | 13 +--- .../Controls/Options/OptionContainer.cs | 10 +-- VisualDump/Images/VSPackageIcon128x128.png | Bin 0 -> 65807 bytes VisualDump/Images/VSPackageIcon256x256.png | Bin 0 -> 11976 bytes VisualDump/Properties/AssemblyInfo.cs | 30 ++------ VisualDump/VSHelpers/NuGetListener.cs | 2 +- VisualDump/VSPackage.cs | 13 +--- VisualDump/VisualDump.csproj | 17 ++++- VisualDump/app.config | 6 +- VisualDump/packages.config | 3 +- VisualDump/source.extension.vsixmanifest | 6 +- 12 files changed, 40 insertions(+), 125 deletions(-) delete mode 100644 VisualDump/Commands/BaseCommand.cs create mode 100644 VisualDump/Images/VSPackageIcon128x128.png create mode 100644 VisualDump/Images/VSPackageIcon256x256.png diff --git a/VisualDump/Commands/BaseCommand.cs b/VisualDump/Commands/BaseCommand.cs deleted file mode 100644 index df902cb..0000000 --- a/VisualDump/Commands/BaseCommand.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using Microsoft.VisualStudio.Shell; -using System.ComponentModel.Design; -using Task = System.Threading.Tasks.Task; - -namespace VisualDump.Commands -{ - public abstract class BaseCommand where T : BaseCommand, new() - { - #region Var - public string Text - { - get => Command.Text; - set => ChangeText(value); - } - public static T Instance { get; private set; } - public AsyncPackage Package { get; private set; } - public static int CommandID { get; internal set; } - public static Guid CommandSet { get; internal set; } - protected IServiceProvider ServiceProvider => Package; - protected OleMenuCommand Command { get; private set; } - protected OleMenuCommandService Service { get; private set; } - protected IAsyncServiceProvider AsyncServiceProvider => Package; - #endregion - - #region Init - public static async Task InitializeAsync(AsyncPackage Package) - { - Instance = new T(); - Instance.Init(Package, await Package.GetServiceAsync((typeof(IMenuCommandService))) as OleMenuCommandService); - } - protected virtual void BeforeInit() { } - private void Init(AsyncPackage Package, OleMenuCommandService CommandService) - { - BeforeInit(); - this.Package = Package ?? throw new ArgumentNullException(nameof(Package)); - Service = CommandService ?? throw new ArgumentNullException(nameof(CommandService)); - Command = new OleMenuCommand((sender, e) => { ThreadHelper.ThrowIfNotOnUIThread(); Execute((OleMenuCommand)sender); }, new CommandID(CommandSet, CommandID)); - Service.AddCommand(Command); - AfterInit(); - } - protected virtual void AfterInit() { } - #endregion - - #region Functions - protected abstract void Execute(OleMenuCommand Button); - - private void ChangeText(string NewText) - { - if (ServiceProvider.GetService(typeof(IMenuCommandService)) is OleMenuCommandService commandService) - { - commandService.RemoveCommand(Command); - void change(object sender, EventArgs e) - { - OleMenuCommand command = (OleMenuCommand)sender; - command.Text = NewText; - command.BeforeQueryStatus -= change; - } - Command.BeforeQueryStatus += change; - commandService.AddCommand(Command); - } - } - #endregion - } -} diff --git a/VisualDump/Commands/ShowDumpWindowCommand.cs b/VisualDump/Commands/ShowDumpWindowCommand.cs index 381b3c9..8ec25b2 100644 --- a/VisualDump/Commands/ShowDumpWindowCommand.cs +++ b/VisualDump/Commands/ShowDumpWindowCommand.cs @@ -1,20 +1,11 @@ -using System; +using KE.VSIX.Commands; using Microsoft.VisualStudio.Shell; namespace VisualDump.Commands { + [CommandID("e3161eb3-4aec-49de-bfe6-2eb5a01a0c34", 0x0100)] public sealed class ShowDumpWindowCommand : BaseCommand { - #region Init - static ShowDumpWindowCommand() - { - CommandID = 0x0100; - CommandSet = new Guid("e3161eb3-4aec-49de-bfe6-2eb5a01a0c34"); - } - #endregion - - #region Functions protected override void Execute(OleMenuCommand Button) => VSPackage.ShowToolWindow(typeof(Controls.VisualDump)); - #endregion } } diff --git a/VisualDump/Controls/Options/OptionContainer.cs b/VisualDump/Controls/Options/OptionContainer.cs index b530ca1..fd05c1a 100644 --- a/VisualDump/Controls/Options/OptionContainer.cs +++ b/VisualDump/Controls/Options/OptionContainer.cs @@ -19,11 +19,11 @@ public class OptionContainer #region Init public static async Task InitializeAsync() => await Task.Run(() => { - ThemesPath = Path.Combine(VSPackage.Path, "Themes\\"); + ThemesPath = VSPackage.PathData.MapPath("Themes"); if (!Directory.Exists(ThemesPath)) Directory.CreateDirectory(ThemesPath); - DefaultThemesPath = Path.Combine(VSPackage.AssemblyPath, "DefaultThemes\\"); - Settings = Settings.Read(SettingsPath = Path.Combine(VSPackage.Path, "settings.xml")); + DefaultThemesPath = Path.Combine(VSPackage.PathData.DllLocation, "DefaultThemes"); + Settings = Settings.Read(SettingsPath = VSPackage.PathData.MapPath("settings.xml")); LoadThemes(); }); #endregion @@ -34,10 +34,10 @@ public static Theme[] LoadThemes() Theme[] themes = Theme.LoadThemes(ThemesPath).ToArray(); if (themes.Length == 0) { - foreach (string dirPath in Directory.GetDirectories(DefaultThemesPath, "*", SearchOption.AllDirectories)) + foreach (string dirPath in Directory.EnumerateDirectories(DefaultThemesPath, "*", SearchOption.AllDirectories)) Directory.CreateDirectory(dirPath.Replace(DefaultThemesPath, ThemesPath)); - foreach (string newPath in Directory.GetFiles(DefaultThemesPath, "*.*", SearchOption.AllDirectories)) + foreach (string newPath in Directory.EnumerateFiles(DefaultThemesPath, "*.*", SearchOption.AllDirectories)) File.Copy(newPath, newPath.Replace(DefaultThemesPath, ThemesPath), true); themes = Theme.LoadThemes(ThemesPath).ToArray(); diff --git a/VisualDump/Images/VSPackageIcon128x128.png b/VisualDump/Images/VSPackageIcon128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..d46a9d14239ec3c1ed40ef59b889f70ddd487efa GIT binary patch literal 65807 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 literal 0 HcmV?d00001 diff --git a/VisualDump/Images/VSPackageIcon256x256.png b/VisualDump/Images/VSPackageIcon256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6d98a70d11c1b39ac4053e221fa3e674ef3fca GIT binary patch literal 11976 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
F(vTzc;Yn(^RLr?qkklq$A^!=OY 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 VSPackage.PackageInstaller.InstallPackage(NuGetAPI, Project, NuGet, NuGetVersionString, false); - private static void AddOfflineReferece(Project Project) => VSPackage.PackageInstaller.InstallPackage(VSPackage.AssemblyPath, Project, NuGet, NuGetVersionString, false); + private static void AddOfflineReferece(Project Project) => VSPackage.PackageInstaller.InstallPackage(VSPackage.PathData.DllLocation, Project, NuGet, NuGetVersionString, false); #endregion } } diff --git a/VisualDump/VSPackage.cs b/VisualDump/VSPackage.cs index 61f6aac..d1cbfb6 100644 --- a/VisualDump/VSPackage.cs +++ b/VisualDump/VSPackage.cs @@ -1,5 +1,6 @@ using EnvDTE; using System; +using KE.VSIX; using System.Threading; using NuGet.VisualStudio; using VisualDump.Controls; @@ -28,25 +29,15 @@ namespace VisualDump public sealed partial class VSPackage : AsyncPackage { #region Var - public static string Path { get; } - public static string AssemblyPath { get; } public static DTE DTE { get; private set; } public static VSPackage Instance { get; private set; } public static IVsPackageInstaller PackageInstaller { get; private set; } - public static Guid Guid { get; } = new Guid(PackageGuidString); public const string PackageGuidString = "bf22b5f8-9ec7-4810-880d-8d2bec2b68af"; + public static PathContainer PathData { get; } = PackageHelper.Initialize(); public static OptionControl OptionPage => (Instance.GetDialogPage(typeof(OptionPageGrid)) as OptionPageGrid)?.OptionControl; #endregion #region Init - static VSPackage() - { - Path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "VisualDump\\"); - if (!System.IO.Directory.Exists(Path)) - System.IO.Directory.CreateDirectory(Path); - AssemblyPath = System.IO.Path.GetDirectoryName(new Uri(typeof(VSPackage).Assembly.CodeBase, UriKind.Absolute).LocalPath); - } - protected override async Task InitializeAsync(CancellationToken CancellationToken, IProgress Progress) { await JoinableTaskFactory.SwitchToMainThreadAsync(CancellationToken); diff --git a/VisualDump/VisualDump.csproj b/VisualDump/VisualDump.csproj index 46acaa1..6ff85a7 100644 --- a/VisualDump/VisualDump.csproj +++ b/VisualDump/VisualDump.csproj @@ -58,7 +58,6 @@ 7.3 - UserControl @@ -146,6 +145,14 @@ Always true + + Always + true + + + Always + true + Always true @@ -173,6 +180,9 @@ False + + ..\packages\KE.VSIX.1.2.0\lib\net47\KE.VSIX.dll + @@ -180,7 +190,9 @@ - + + ..\packages\Microsoft.VisualStudio.Shell.15.0.15.9.28307\lib\net45\Microsoft.VisualStudio.Shell.15.0.dll + @@ -228,6 +240,7 @@ True True + ..\packages\System.Net.Http.4.3.3\lib\net46\System.Net.Http.dll True diff --git a/VisualDump/app.config b/VisualDump/app.config index c9e4df7..dbd6e12 100644 --- a/VisualDump/app.config +++ b/VisualDump/app.config @@ -12,7 +12,7 @@ - + @@ -50,6 +50,10 @@ + + + + diff --git a/VisualDump/packages.config b/VisualDump/packages.config index 0d36ca7..78a5f24 100644 --- a/VisualDump/packages.config +++ b/VisualDump/packages.config @@ -2,6 +2,7 @@ + @@ -10,7 +11,7 @@ - + diff --git a/VisualDump/source.extension.vsixmanifest b/VisualDump/source.extension.vsixmanifest index 2d4926c..5ab858f 100644 --- a/VisualDump/source.extension.vsixmanifest +++ b/VisualDump/source.extension.vsixmanifest @@ -1,11 +1,11 @@ - + Visual Dump This extension allows you to view a visual dump of your objects during the debugging of the program in Visual Studio - Images\VSPackageIcon.ico - Images\VSPackageIcon.ico + Images\VSPackageIcon256x256.png + Images\VSPackageIcon128x128.png Visual Dump, VisualDump, Dump, Dumping, LINQPad