From c60fca1715c84404ae556061abbf50f139e495c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Leh=C3=B3czky?= Date: Sun, 5 Apr 2020 00:04:53 +0200 Subject: [PATCH 1/9] Adding clarifications on the log watcher feature --- Lombiq.Vsix.Orchard/Readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lombiq.Vsix.Orchard/Readme.md b/Lombiq.Vsix.Orchard/Readme.md index a9e4391..8c227f6 100644 --- a/Lombiq.Vsix.Orchard/Readme.md +++ b/Lombiq.Vsix.Orchard/Readme.md @@ -17,9 +17,9 @@ Can be invoked from under Tools > Inject Dependency. You can also bind a hotk ### (Orchard) Error Log Watcher Watches the Orchard error log (or any other error log) and lights up an icon when a new entry was logged. And wait, there's more! This feature also supports [BlinkStick](https://www.blinkstick.com/) USB LED sticks that can blink or light up when an error happens. Check out [this video](https://www.youtube.com/watch?v=MQx5WpJqGi8) for a demo of the whole feature. -If the log file exists, was recently updated and is not empty then this features notifies you by making a button in the Orchard Log Watcher toolbar light up in red. Clicking this button will open the error log using the default application for that file type. You can add this button anywhere in the Visual Studio toolbar from under View > Toolbars > Orchard Log Watcher. +If the log file exists, was recently updated and is not empty then this features notifies you by making a button in the Orchard Log Watcher toolbar light up in red. Clicking this button will open the error log using the default application for that file type and turn off the notification (the same will happen if you delete the contents of the log file). You can add this button anywhere in the Visual Studio toolbar from under View > Toolbars > Orchard Log Watcher. -If you have any [BlinkStick](https://www.blinkstick.com/) USB LED stick (all of them should be compatible but only tested with the [Nano](https://www.blinkstick.com/products/blinkstick-nano) and the [Strip](https://www.blinkstick.com/products/blinkstick-strip)) then just plug it in and it'll light up too. +If you have any [BlinkStick](https://www.blinkstick.com/) USB LED stick (all of them should be compatible but only tested with the [Nano](https://www.blinkstick.com/products/blinkstick-nano) and the [Strip](https://www.blinkstick.com/products/blinkstick-strip)) then just plug it in and it'll light up too. This will also work if the button is not placed onto the toolbar. Settings: - The feature can be turned on or off on the Options > Orchard Log Watcher page. This also makes the related toolbar visible or hidden on the toolbar strip. From 2bb76569a37b6b0336f4f31ee341da07f75875c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Leh=C3=B3czky?= Date: Mon, 6 Apr 2020 22:56:47 +0200 Subject: [PATCH 2/9] Clarifying root Readme --- Lombiq.Vsix.Orchard/Readme.md | 2 +- Readme.md | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Lombiq.Vsix.Orchard/Readme.md b/Lombiq.Vsix.Orchard/Readme.md index 8c227f6..77bbb0e 100644 --- a/Lombiq.Vsix.Orchard/Readme.md +++ b/Lombiq.Vsix.Orchard/Readme.md @@ -4,7 +4,7 @@ Visual Studio extension with many features frequently used by [Lombiq](https://lombiq.com/) developers. Contains [Orchard CMS](https://www.orchardcore.net/)-related (including Orchard Core and Orchard 1.x) as well as generic goodies. For Orchard developers and for other .NET developers alike! -The extension can also be installed from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=LombiqVisualStudioExtension.LombiqOrchardVisualStudioExtension), including installing directly from inside Visual Studio from under Extensions > Manage Extensions. +The extension can be installed from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=LombiqVisualStudioExtension.LombiqOrchardVisualStudioExtension), including installing directly from inside Visual Studio from under Extensions > Manage Extensions. ## Tools diff --git a/Readme.md b/Readme.md index a222aec..c469fc3 100644 --- a/Readme.md +++ b/Readme.md @@ -4,7 +4,9 @@ ![image.png](Logos/Logo.png) -Visual Studio extension with many features and templates frequently used by [Lombiq](https://lombiq.com/) developers. Contains [Orchard](https://orchardproject.net/)-related (including Orchard Core) as well as generic goodies. +Visual Studio extension with many features frequently used by [Lombiq](https://lombiq.com/) developers. Contains [Orchard CMS](https://www.orchardcore.net/)-related (including Orchard Core and Orchard 1.x) as well as generic goodies. For Orchard developers and for other .NET developers alike! + +The extension can be installed from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=LombiqVisualStudioExtension.LombiqOrchardVisualStudioExtension), including installing directly from inside Visual Studio from under Extensions > Manage Extensions. Check out the [extension's Readme](Lombiq.Vsix.Orchard/Readme.md) for more info (it's there and not in the root of the repository so it's also accessible from inside VS). From 7a0489b4d5df2f8faa531c99f73012d91bbe2752 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Leh=C3=B3czky?= Date: Fri, 17 Apr 2020 16:21:36 +0200 Subject: [PATCH 3/9] Making all service resolutions lazy --- .../Extensions/ServiceContainerExtensions.cs | 15 ----- .../Lombiq.Vsix.Orchard.csproj | 1 - ...mbiqOrchardVisualStudioExtensionPackage.cs | 65 +++++++++++++------ .../Services/LogWatcher/LogFileWatcherBase.cs | 8 +-- .../LogWatcher/OrchardCoreLogFileWatcher.cs | 4 +- .../LogWatcher/OrchardErrorLogFileWatcher.cs | 4 +- .../LogWatcher/WildcardLogFileWatcher.cs | 7 +- 7 files changed, 58 insertions(+), 46 deletions(-) delete mode 100644 Lombiq.Vsix.Orchard/Extensions/ServiceContainerExtensions.cs diff --git a/Lombiq.Vsix.Orchard/Extensions/ServiceContainerExtensions.cs b/Lombiq.Vsix.Orchard/Extensions/ServiceContainerExtensions.cs deleted file mode 100644 index d8a2e4b..0000000 --- a/Lombiq.Vsix.Orchard/Extensions/ServiceContainerExtensions.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections.Generic; - -namespace System.ComponentModel.Design -{ - public static class ServiceContainerExtensions - { - public static void AddService(this IServiceContainer container, T implementation) - where T : class => - container.AddService(typeof(T), implementation); - - public static void AddServices(this IServiceContainer container, params T[] implementations) - where T : class => - container.AddService(typeof(T), implementations); - } -} diff --git a/Lombiq.Vsix.Orchard/Lombiq.Vsix.Orchard.csproj b/Lombiq.Vsix.Orchard/Lombiq.Vsix.Orchard.csproj index 9093619..96f5bb2 100644 --- a/Lombiq.Vsix.Orchard/Lombiq.Vsix.Orchard.csproj +++ b/Lombiq.Vsix.Orchard/Lombiq.Vsix.Orchard.csproj @@ -228,7 +228,6 @@ - diff --git a/Lombiq.Vsix.Orchard/LombiqOrchardVisualStudioExtensionPackage.cs b/Lombiq.Vsix.Orchard/LombiqOrchardVisualStudioExtensionPackage.cs index 32c48ab..88dceec 100644 --- a/Lombiq.Vsix.Orchard/LombiqOrchardVisualStudioExtensionPackage.cs +++ b/Lombiq.Vsix.Orchard/LombiqOrchardVisualStudioExtensionPackage.cs @@ -10,14 +10,16 @@ using System.ComponentModel.Design; using System.Runtime.InteropServices; using System.Threading; +using System.Threading.Tasks; using Task = System.Threading.Tasks.Task; namespace Lombiq.Vsix.Orchard { [ProvideService(typeof(IDependencyInjector), IsAsyncQueryable = true)] [ProvideService(typeof(IFieldNameFromDependencyGenerator), IsAsyncQueryable = true)] - [ProvideService(typeof(ILogWatcherSettingsAccessor), IsAsyncQueryable = true)] + [ProvideService(typeof(IDependencyNameProvider), IsAsyncQueryable = true)] [ProvideService(typeof(ILogFileWatcher), IsAsyncQueryable = true)] + [ProvideService(typeof(IBlinkStickManager), IsAsyncQueryable = true)] [ProvideAutoLoad(VSConstants.UICONTEXT.SolutionExists_string, PackageAutoLoadFlags.BackgroundLoad)] [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)] [InstalledProductRegistration( @@ -33,12 +35,16 @@ namespace Lombiq.Vsix.Orchard [Guid(PackageGuids.LombiqOrchardVisualStudioExtensionPackageGuidString)] public sealed class LombiqOrchardVisualStudioExtensionPackage : AsyncPackage, ILogWatcherSettingsAccessor { + ILogWatcherSettings ILogWatcherSettingsAccessor.GetSettings() => + (ILogWatcherSettings)GetDialogPage(typeof(LogWatcherOptionsPage)); + + protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) { - await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); - RegisterServices(); + await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); + InjectDependencyCommand.Initialize(this); OpenErrorLogCommand.Initialize(this); } @@ -53,34 +59,53 @@ protected override void Dispose(bool disposing) base.Dispose(disposing); } - private void RegisterServices() { - var serviceContainer = (IServiceContainer)this; + // Note that all dependencies need to be added with IsAsyncQueryable = true above in attributes. + // The current object can't be registered as an ILogWatcherSettingsAccessor dependency because it can't be + // resolved in an async manner. So just using it directly. + + AddService(); - serviceContainer.AddService(new DependencyInjector()); - serviceContainer.AddServices( + AddService(() => Task.FromResult((object)new IFieldNameFromDependencyGenerator[] + { new DefaultFieldNameFromDependencyGenerator(), new DefaultFieldNameFromGenericTypeGenerator(), new FieldNameFromIEnumerableGenerator(), new FieldNameFromLocalizerGenerator(), - new SimplifiedFieldNameFromGenericTypeGenerator()); - serviceContainer.AddServices( - new CommonDependencyNamesProvider()); - serviceContainer.AddService(this); - serviceContainer.AddServices( - new OrchardErrorLogFileWatcher(this), - new OrchardCoreLogFileWatcher(this), - new WildcardLogFileWatcher(this)); - serviceContainer.AddService(new BlinkStickManager()); + new SimplifiedFieldNameFromGenericTypeGenerator() + })); + + AddService(() => Task.FromResult((object)new IDependencyNameProvider[] + { + new CommonDependencyNamesProvider() + })); + + AddService(this); + + AddService(() => + { + var dte = GetGlobalService(typeof(Microsoft.VisualStudio.Shell.Interop.SDTE)) as EnvDTE.DTE; + + return Task.FromResult((object)new ILogFileWatcher[] + { + new OrchardErrorLogFileWatcher(this, dte), + new OrchardCoreLogFileWatcher(this, dte), + new WildcardLogFileWatcher(this, dte) + }); + }); + + AddService(); } + private void AddService(Func> resolver) => + AddService(typeof(T), (container, cancellationToken, serviceType) => resolver()); - #region ILogWatcherSettings Members + private void AddService() where TImplementation : new() => + AddService(() => Task.FromResult((object)new TImplementation())); - ILogWatcherSettings ILogWatcherSettingsAccessor.GetSettings() => - (ILogWatcherSettings)GetDialogPage(typeof(LogWatcherOptionsPage)); + private void AddService(T instance) => ((IServiceContainer)this).AddService(typeof(T), instance); - #endregion + private async Task GetServiceAsync() => (T)(await GetServiceAsync(typeof(T))); } } diff --git a/Lombiq.Vsix.Orchard/Services/LogWatcher/LogFileWatcherBase.cs b/Lombiq.Vsix.Orchard/Services/LogWatcher/LogFileWatcherBase.cs index 02ebff2..8129801 100644 --- a/Lombiq.Vsix.Orchard/Services/LogWatcher/LogFileWatcherBase.cs +++ b/Lombiq.Vsix.Orchard/Services/LogWatcher/LogFileWatcherBase.cs @@ -1,7 +1,5 @@ using EnvDTE; using Lombiq.Vsix.Orchard.Models; -using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.Shell.Interop; using System; using System.Collections.Generic; using System.IO; @@ -25,10 +23,10 @@ public abstract class LogFileWatcherBase : ILogFileWatcher public event EventHandler LogUpdated; - protected LogFileWatcherBase(IServiceProvider serviceProvider) + protected LogFileWatcherBase(ILogWatcherSettingsAccessor logWatcherSettingsAccessor, DTE dte) { - _logWatcherSettingsAccessor = serviceProvider.GetService(); - _dte = Package.GetGlobalService(typeof(SDTE)) as DTE; + _logWatcherSettingsAccessor = logWatcherSettingsAccessor; + _dte = dte; _timer = new Timer(); } diff --git a/Lombiq.Vsix.Orchard/Services/LogWatcher/OrchardCoreLogFileWatcher.cs b/Lombiq.Vsix.Orchard/Services/LogWatcher/OrchardCoreLogFileWatcher.cs index 39c63eb..32a4c36 100644 --- a/Lombiq.Vsix.Orchard/Services/LogWatcher/OrchardCoreLogFileWatcher.cs +++ b/Lombiq.Vsix.Orchard/Services/LogWatcher/OrchardCoreLogFileWatcher.cs @@ -7,6 +7,8 @@ public sealed class OrchardCoreLogFileWatcher : LogFileWatcherBase protected override string GetLogFileName() => "orchard-log-" + DateTime.Today.ToString("yyyy-MM-dd") + ".log"; - public OrchardCoreLogFileWatcher(IServiceProvider serviceProvider) : base(serviceProvider) { } + public OrchardCoreLogFileWatcher(ILogWatcherSettingsAccessor logWatcherSettingsAccessor, EnvDTE.DTE dte) : + base(logWatcherSettingsAccessor, dte) + { } } } diff --git a/Lombiq.Vsix.Orchard/Services/LogWatcher/OrchardErrorLogFileWatcher.cs b/Lombiq.Vsix.Orchard/Services/LogWatcher/OrchardErrorLogFileWatcher.cs index 091e4b5..5238988 100644 --- a/Lombiq.Vsix.Orchard/Services/LogWatcher/OrchardErrorLogFileWatcher.cs +++ b/Lombiq.Vsix.Orchard/Services/LogWatcher/OrchardErrorLogFileWatcher.cs @@ -7,6 +7,8 @@ public sealed class OrchardErrorLogFileWatcher : LogFileWatcherBase protected override string GetLogFileName() => "orchard-error-" + DateTime.Today.ToString("yyyy.MM.dd") + ".log"; - public OrchardErrorLogFileWatcher(IServiceProvider serviceProvider) : base(serviceProvider) { } + public OrchardErrorLogFileWatcher(ILogWatcherSettingsAccessor logWatcherSettingsAccessor, EnvDTE.DTE dte) : + base(logWatcherSettingsAccessor, dte) + { } } } diff --git a/Lombiq.Vsix.Orchard/Services/LogWatcher/WildcardLogFileWatcher.cs b/Lombiq.Vsix.Orchard/Services/LogWatcher/WildcardLogFileWatcher.cs index 594fa44..3755613 100644 --- a/Lombiq.Vsix.Orchard/Services/LogWatcher/WildcardLogFileWatcher.cs +++ b/Lombiq.Vsix.Orchard/Services/LogWatcher/WildcardLogFileWatcher.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Linq; @@ -10,7 +9,9 @@ public sealed class WildcardLogFileWatcher : LogFileWatcherBase protected override string GetLogFileName() => _logWatcherSettingsAccessor.GetSettings().LogFileNameSearchPattern.Trim(); - public WildcardLogFileWatcher(IServiceProvider serviceProvider) : base(serviceProvider) { } + public WildcardLogFileWatcher(ILogWatcherSettingsAccessor logWatcherSettingsAccessor, EnvDTE.DTE dte) : + base(logWatcherSettingsAccessor, dte) + { } protected override IEnumerable GetAllMatchingPaths(string root, IEnumerable patterns, string logFileName) From d65d56758fd4367a0c999e51348e53778e702331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Leh=C3=B3czky?= Date: Fri, 17 Apr 2020 21:45:27 +0200 Subject: [PATCH 4/9] Making blink config text less confusing --- Lombiq.Vsix.Orchard/Options/LogWatcherOptionsPage.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lombiq.Vsix.Orchard/Options/LogWatcherOptionsPage.cs b/Lombiq.Vsix.Orchard/Options/LogWatcherOptionsPage.cs index 41ede62..e2bc3bc 100644 --- a/Lombiq.Vsix.Orchard/Options/LogWatcherOptionsPage.cs +++ b/Lombiq.Vsix.Orchard/Options/LogWatcherOptionsPage.cs @@ -37,7 +37,7 @@ public class LogWatcherOptionsPage : DialogPage, ILogWatcherSettings [Description("Set the color for the BlinkStick USB LED stick here. Use either a hex value or one of the names listed here: https://github.com/arvydas/BlinkStickDotNet/blob/master/BlinkStickDotNet/RgbColor.cs#L30.")] public string BlinkStickColor { get; set; } = "red"; - [DisplayName("Blink BlinkStick LED stick")] + [DisplayName("Blink BlinkStick LED stick instead of continuous light")] [Category("Log Watcher BlinkStick Options")] [Description("You can use your BlinkStick USB LED stick (see the Readme) so it lights up when a new log entry is detected. Enable/disable whether to make it blink when a new long entry is detected. When disabled the BlinkStick will light up continuously.")] public bool BlinkBlinkStick { get; set; } = false; From 60a70340614cc135dd1690374fe07e8ca3786315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Leh=C3=B3czky?= Date: Fri, 17 Apr 2020 21:51:04 +0200 Subject: [PATCH 5/9] Moving all not UI-related initialization logic out of the UI thread --- .../Commands/InjectDependencyCommand.cs | 55 +++++++------- .../Commands/OpenErrorLogCommand.cs | 73 +++++++++++-------- .../Extensions/AsyncPackageExtensions.cs | 28 +++++++ .../Extensions/ServiceProviderExtensions.cs | 13 ---- .../Lombiq.Vsix.Orchard.csproj | 2 +- ...mbiqOrchardVisualStudioExtensionPackage.cs | 37 ++++------ .../Services/LogWatcher/BlinkStickManager.cs | 40 +++++++--- 7 files changed, 145 insertions(+), 103 deletions(-) create mode 100644 Lombiq.Vsix.Orchard/Extensions/AsyncPackageExtensions.cs delete mode 100644 Lombiq.Vsix.Orchard/Extensions/ServiceProviderExtensions.cs diff --git a/Lombiq.Vsix.Orchard/Commands/InjectDependencyCommand.cs b/Lombiq.Vsix.Orchard/Commands/InjectDependencyCommand.cs index fe4c541..42809fe 100644 --- a/Lombiq.Vsix.Orchard/Commands/InjectDependencyCommand.cs +++ b/Lombiq.Vsix.Orchard/Commands/InjectDependencyCommand.cs @@ -2,15 +2,13 @@ using Lombiq.Vsix.Orchard.Constants; using Lombiq.Vsix.Orchard.Forms; using Lombiq.Vsix.Orchard.Helpers; -using Lombiq.Vsix.Orchard.Services; using Lombiq.Vsix.Orchard.Services.DependencyInjector; using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.Shell.Interop; using System; using System.Collections.Generic; using System.ComponentModel.Design; -using System.Linq; using System.Windows.Forms; +using Task = System.Threading.Tasks.Task; namespace Lombiq.Vsix.Orchard.Commands { @@ -19,45 +17,50 @@ internal sealed class InjectDependencyCommand public const int CommandId = CommandIds.InjectDependencyCommandId; public static readonly Guid CommandSet = PackageGuids.LombiqOrchardVisualStudioExtensionCommandSetGuid; - - private readonly IServiceProvider _serviceProvider; - private readonly IMenuCommandService _menuCommandService; + private readonly AsyncPackage _package; + private readonly DTE _dte; private readonly IDependencyInjector _dependencyInjector; private readonly IEnumerable _fieldNameGenerators; private readonly IEnumerable _dependencyNameProviders; - private readonly DTE _dte; - - private InjectDependencyCommand(Package package) - { - _serviceProvider = package; + public static InjectDependencyCommand Instance { get; private set; } - _dte = Package.GetGlobalService(typeof(SDTE)) as DTE; - _dependencyInjector = _serviceProvider.GetService(); - _fieldNameGenerators = _serviceProvider.GetServices(); - _dependencyNameProviders = _serviceProvider.GetServices(); - _menuCommandService = _serviceProvider.GetService(); - Initialize(); + private InjectDependencyCommand( + AsyncPackage package, + DTE dte, + IDependencyInjector dependencyInjector, + IEnumerable fieldNameGenerators, + IEnumerable dependencyNameProviders) + { + _package = package; + _dte = dte; + _dependencyInjector = dependencyInjector; + _fieldNameGenerators = fieldNameGenerators; + _dependencyNameProviders = dependencyNameProviders; } - public static InjectDependencyCommand Instance { get; private set; } - - public static void Initialize(Package package) + public static async Task Create(AsyncPackage package) { - Instance = Instance ?? new InjectDependencyCommand(package); + Instance = Instance ?? new InjectDependencyCommand( + package, + package.GetDte(), + await package.GetServiceAsync(), + await package.GetServicesAsync(), + await package.GetServicesAsync()); } - private void Initialize() + public async Task InitializeUI() { - _menuCommandService.AddCommand( + (await _package.GetServiceAsync()).AddCommand( new MenuCommand( MenuItemCallback, new CommandID(CommandSet, CommandId))); } + private void MenuItemCallback(object sender, EventArgs e) { var injectDependencyCaption = "Inject Dependency"; @@ -70,7 +73,7 @@ private void MenuItemCallback(object sender, EventArgs e) } using (var injectDependencyDialog = new InjectDependencyDialog( - _fieldNameGenerators, + _fieldNameGenerators, _dependencyNameProviders, _dependencyInjector.GetExpectedClassName(_dte.ActiveDocument))) { @@ -89,7 +92,7 @@ private void MenuItemCallback(object sender, EventArgs e) } var result = _dependencyInjector.Inject( - _dte.ActiveDocument, + _dte.ActiveDocument, injectDependencyDialog.GetDependencyInjectionData()); if (!result.Success) @@ -98,7 +101,7 @@ private void MenuItemCallback(object sender, EventArgs e) { case DependencyInjectorErrorCodes.ClassNotFound: DialogHelpers.Warning( - "Could not inject dependency because the class was not found in this file.", + "Could not inject dependency because the class was not found in this file.", injectDependencyCaption); break; default: diff --git a/Lombiq.Vsix.Orchard/Commands/OpenErrorLogCommand.cs b/Lombiq.Vsix.Orchard/Commands/OpenErrorLogCommand.cs index 1947aae..c6d4385 100644 --- a/Lombiq.Vsix.Orchard/Commands/OpenErrorLogCommand.cs +++ b/Lombiq.Vsix.Orchard/Commands/OpenErrorLogCommand.cs @@ -5,11 +5,11 @@ using Lombiq.Vsix.Orchard.Services.LogWatcher; using Microsoft.VisualStudio.CommandBars; using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.Shell.Interop; using System; using System.Collections.Generic; using System.ComponentModel.Design; using System.IO; +using Task = System.Threading.Tasks.Task; namespace Lombiq.Vsix.Orchard.Commands { @@ -19,12 +19,12 @@ internal sealed class OpenErrorLogCommand : IDisposable public static readonly Guid CommandSet = PackageGuids.LombiqOrchardVisualStudioExtensionCommandSetGuid; - private readonly IServiceProvider _serviceProvider; - private readonly IMenuCommandService _menuCommandService; + private readonly AsyncPackage _package; private readonly DTE _dte; private readonly Lazy _lazyLogWatcherSettings; private readonly IEnumerable _logWatchers; private readonly IBlinkStickManager _blinkStickManager; + private OleMenuCommand _openErrorLogCommand; private CommandBar _orchardLogWatcherToolbar; private bool _hasSeenErrorLogUpdate; @@ -32,26 +32,47 @@ internal sealed class OpenErrorLogCommand : IDisposable private ILogFileStatus _latestUpdatedLogFileStatus; - private OpenErrorLogCommand(Package package) + private OpenErrorLogCommand( + AsyncPackage package, + DTE dte, + Lazy lazyLogWatcherSettings, + IEnumerable logWatchers, + IBlinkStickManager blinkStickManager) { - _serviceProvider = package; - - _dte = Package.GetGlobalService(typeof(SDTE)) as DTE; - _menuCommandService = _serviceProvider.GetService(); - _lazyLogWatcherSettings = new Lazy( - _serviceProvider.GetService().GetSettings); - _logWatchers = _serviceProvider.GetServices(); - _blinkStickManager = _serviceProvider.GetService(); - - Initialize(); + _package = package; + _dte = dte; + _lazyLogWatcherSettings = lazyLogWatcherSettings; + _logWatchers = logWatchers; + _blinkStickManager = blinkStickManager; } public static OpenErrorLogCommand Instance { get; private set; } - public static void Initialize(Package package) + public static async Task Create(AsyncPackage package, ILogWatcherSettingsAccessor logWatcherSettingsAccessor) + { + Instance = Instance ?? new OpenErrorLogCommand( + package, + package.GetDte(), + new Lazy(logWatcherSettingsAccessor.GetSettings), + await package.GetServicesAsync(), + await package.GetServiceAsync()); + + Instance.InitalizeWatchers(); + } + + + public async Task InitializeUI() { - Instance = Instance ?? new OpenErrorLogCommand(package); + _openErrorLogCommand = new OleMenuCommand(OpenErrorLogCallback, new CommandID(CommandSet, CommandId)); + _openErrorLogCommand.BeforeQueryStatus += OpenErrorLogCommandBeforeQueryStatusCallback; + + (await _package.GetServiceAsync()).AddCommand(_openErrorLogCommand); + + // Store Log Watcher toolbar in a variable to be able to show or hide depending on the Log Watcher settings. + _orchardLogWatcherToolbar = ((CommandBars)_dte.CommandBars)[CommandBarNames.OrchardLogWatcherToolbarName]; + + if (_lazyLogWatcherSettings.Value.LogWatcherEnabled) _openErrorLogCommand.Visible = true; } public void Dispose() @@ -68,7 +89,7 @@ public void Dispose() } - private void Initialize() + private void InitalizeWatchers() { _hasSeenErrorLogUpdate = true; _errorIndicatorStateChanged = true; @@ -80,20 +101,7 @@ private void Initialize() _lazyLogWatcherSettings.Value.SettingsUpdated += LogWatcherSettingsUpdatedCallback; - _openErrorLogCommand = new OleMenuCommand(OpenErrorLogCallback, new CommandID(CommandSet, CommandId)); - _openErrorLogCommand.BeforeQueryStatus += OpenErrorLogCommandBeforeQueryStatusCallback; - - _menuCommandService.AddCommand(_openErrorLogCommand); - - // Store Log Watcher toolbar in a variable to be able to show or hide depending on the Log Watcher settings. - _orchardLogWatcherToolbar = ((CommandBars)_dte.CommandBars)[CommandBarNames.OrchardLogWatcherToolbarName]; - - if (_lazyLogWatcherSettings.Value.LogWatcherEnabled) - { - _openErrorLogCommand.Visible = true; - - StartLogFileWatching(); - } + if (_lazyLogWatcherSettings.Value.LogWatcherEnabled) StartLogFileWatching(); } private void OpenErrorLogCommandBeforeQueryStatusCallback(object sender, EventArgs e) => @@ -166,8 +174,9 @@ private void UpdateOpenErrorLogCommandAccessibilityAndText(ILogFileStatus logFil { _openErrorLogCommand.Enabled = false; _openErrorLogCommand.Text = "Orchard error log doesn't exist or hasn't been updated"; - _blinkStickManager.TurnOff(); + if (!_errorIndicatorStateChanged) _blinkStickManager.TurnOff(); _errorIndicatorStateChanged = true; + } } diff --git a/Lombiq.Vsix.Orchard/Extensions/AsyncPackageExtensions.cs b/Lombiq.Vsix.Orchard/Extensions/AsyncPackageExtensions.cs new file mode 100644 index 0000000..f95b606 --- /dev/null +++ b/Lombiq.Vsix.Orchard/Extensions/AsyncPackageExtensions.cs @@ -0,0 +1,28 @@ +using EnvDTE; +using System; +using System.Collections.Generic; +using System.ComponentModel.Design; + +namespace Microsoft.VisualStudio.Shell +{ + public static class AsyncPackageExtensions + { + public static void AddService(this AsyncPackage package, Func> resolver) => + package.AddService(typeof(T), (container, cancellationToken, serviceType) => resolver()); + + public static void AddService(this AsyncPackage package) where TImplementation : new() => + package.AddService(() => System.Threading.Tasks.Task.FromResult((object)new TImplementation())); + + public static void AddService(this AsyncPackage package, T instance) => + ((IServiceContainer)package).AddService(typeof(T), instance); + + public static async System.Threading.Tasks.Task GetServiceAsync(this AsyncPackage package) => + (T)(await package.GetServiceAsync(typeof(T))); + + public static async System.Threading.Tasks.Task> GetServicesAsync(this AsyncPackage package) => + (IEnumerable)(await package.GetServiceAsync(typeof(T))); + + public static DTE GetDte(this AsyncPackage package) => + Package.GetGlobalService(typeof(Microsoft.VisualStudio.Shell.Interop.SDTE)) as DTE; + } +} diff --git a/Lombiq.Vsix.Orchard/Extensions/ServiceProviderExtensions.cs b/Lombiq.Vsix.Orchard/Extensions/ServiceProviderExtensions.cs deleted file mode 100644 index 0f07d83..0000000 --- a/Lombiq.Vsix.Orchard/Extensions/ServiceProviderExtensions.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Collections.Generic; - -namespace System -{ - public static class ServiceProviderExtensions - { - public static T GetService(this IServiceProvider serviceProvider) where T : class => - serviceProvider.GetService(typeof(T)) as T; - - public static IEnumerable GetServices(this IServiceProvider serviceProvider) where T : class => - serviceProvider.GetService(typeof(T)) as IEnumerable; - } -} diff --git a/Lombiq.Vsix.Orchard/Lombiq.Vsix.Orchard.csproj b/Lombiq.Vsix.Orchard/Lombiq.Vsix.Orchard.csproj index 96f5bb2..faf05ea 100644 --- a/Lombiq.Vsix.Orchard/Lombiq.Vsix.Orchard.csproj +++ b/Lombiq.Vsix.Orchard/Lombiq.Vsix.Orchard.csproj @@ -228,7 +228,7 @@ - + Form diff --git a/Lombiq.Vsix.Orchard/LombiqOrchardVisualStudioExtensionPackage.cs b/Lombiq.Vsix.Orchard/LombiqOrchardVisualStudioExtensionPackage.cs index 88dceec..7c69ff8 100644 --- a/Lombiq.Vsix.Orchard/LombiqOrchardVisualStudioExtensionPackage.cs +++ b/Lombiq.Vsix.Orchard/LombiqOrchardVisualStudioExtensionPackage.cs @@ -7,10 +7,8 @@ using Microsoft.VisualStudio; using Microsoft.VisualStudio.Shell; using System; -using System.ComponentModel.Design; using System.Runtime.InteropServices; using System.Threading; -using System.Threading.Tasks; using Task = System.Threading.Tasks.Task; namespace Lombiq.Vsix.Orchard @@ -41,12 +39,19 @@ ILogWatcherSettings ILogWatcherSettingsAccessor.GetSettings() => protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) { + // On using AsyncPackage see: + // https://docs.microsoft.com/en-us/visualstudio/extensibility/how-to-provide-an-asynchronous-visual-studio-service + // https://docs.microsoft.com/en-us/visualstudio/extensibility/how-to-use-asyncpackage-to-load-vspackages-in-the-background + RegisterServices(); + await InjectDependencyCommand.Create(this); + await OpenErrorLogCommand.Create(this, this); + await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); - InjectDependencyCommand.Initialize(this); - OpenErrorLogCommand.Initialize(this); + await InjectDependencyCommand.Instance.InitializeUI(); + await OpenErrorLogCommand.Instance.InitializeUI(); } protected override void Dispose(bool disposing) @@ -65,9 +70,9 @@ private void RegisterServices() // The current object can't be registered as an ILogWatcherSettingsAccessor dependency because it can't be // resolved in an async manner. So just using it directly. - AddService(); + this.AddService(); - AddService(() => Task.FromResult((object)new IFieldNameFromDependencyGenerator[] + this.AddService(() => Task.FromResult((object)new IFieldNameFromDependencyGenerator[] { new DefaultFieldNameFromDependencyGenerator(), new DefaultFieldNameFromGenericTypeGenerator(), @@ -76,16 +81,14 @@ private void RegisterServices() new SimplifiedFieldNameFromGenericTypeGenerator() })); - AddService(() => Task.FromResult((object)new IDependencyNameProvider[] + this.AddService(() => Task.FromResult((object)new IDependencyNameProvider[] { new CommonDependencyNamesProvider() })); - AddService(this); - - AddService(() => + this.AddService(() => { - var dte = GetGlobalService(typeof(Microsoft.VisualStudio.Shell.Interop.SDTE)) as EnvDTE.DTE; + var dte = this.GetDte(); return Task.FromResult((object)new ILogFileWatcher[] { @@ -95,17 +98,7 @@ private void RegisterServices() }); }); - AddService(); + this.AddService(); } - - private void AddService(Func> resolver) => - AddService(typeof(T), (container, cancellationToken, serviceType) => resolver()); - - private void AddService() where TImplementation : new() => - AddService(() => Task.FromResult((object)new TImplementation())); - - private void AddService(T instance) => ((IServiceContainer)this).AddService(typeof(T), instance); - - private async Task GetServiceAsync() => (T)(await GetServiceAsync(typeof(T))); } } diff --git a/Lombiq.Vsix.Orchard/Services/LogWatcher/BlinkStickManager.cs b/Lombiq.Vsix.Orchard/Services/LogWatcher/BlinkStickManager.cs index 8e136e5..ea550be 100644 --- a/Lombiq.Vsix.Orchard/Services/LogWatcher/BlinkStickManager.cs +++ b/Lombiq.Vsix.Orchard/Services/LogWatcher/BlinkStickManager.cs @@ -10,11 +10,30 @@ public sealed class BlinkStickManager : IBlinkStickManager private readonly object _lock = new object(); private BlinkStick _blinkStick = null; private bool _isInitialized = false; - private Task _blinkTask = null; + private Task _backgroundTask = null; private CancellationTokenSource _cancellationTokenSource = null; - public void TurnOn(string color) => RunForBlinkStickIfPresent(() => _blinkStick.SetColor(color)); + public void TurnOn(string color) + { + // It's necessary to start a background thread to keep the light on otherwise it would just go out for some + // reason (possibly due to VS stopping the thread's execution due to it being in an AsyncPackage). + // Doing ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync() in the Task won't help (maybe a bit but + // the light still goes out after a few seconds). + _cancellationTokenSource = new CancellationTokenSource(); + var cancellationToken = _cancellationTokenSource.Token; + _backgroundTask = Task.Run(() => + { + while (!_cancellationTokenSource.Token.IsCancellationRequested) + { + TurnOnWithoutCancellation(color); + // For some reason Thread.Sleep() is better, with Task.Delay() the light will sometimes flicker. + // Possibly because the thread is dispatched to work on something else. + // This 10ms refresh causes no measurable CPU load. + Thread.Sleep(10); + } + }, cancellationToken); + } // Blink if you're not a lamp! https://youtu.be/_zCDvOsdL9Q?t=56 public void Blink(string color) @@ -23,14 +42,15 @@ public void Blink(string color) // safer way. _cancellationTokenSource = new CancellationTokenSource(); var cancellationToken = _cancellationTokenSource.Token; - _blinkTask = Task.Run(async () => + _backgroundTask = Task.Run(() => { while (!cancellationToken.IsCancellationRequested) { - TurnOn(color); - if (!cancellationToken.IsCancellationRequested) await Task.Delay(500); - TurnOffWithoutBlinkCancellation(); - if (!cancellationToken.IsCancellationRequested) await Task.Delay(500); + TurnOnWithoutCancellation(color); + // See the notes on why using Thread.Sleep() instead of Task.Delay() above. + if (!cancellationToken.IsCancellationRequested) Thread.Sleep(500); + TurnOffWithoutCancellation(); + if (!cancellationToken.IsCancellationRequested) Thread.Sleep(500); } }, cancellationToken); } @@ -38,7 +58,7 @@ public void Blink(string color) public void TurnOff() { _cancellationTokenSource?.Cancel(); - TurnOffWithoutBlinkCancellation(); + TurnOffWithoutCancellation(); } public void Dispose() @@ -65,7 +85,9 @@ public static bool IsValidColor(string color) } - private void TurnOffWithoutBlinkCancellation() => RunForBlinkStickIfPresent(() => _blinkStick.TurnOff()); + private void TurnOnWithoutCancellation(string color) => RunForBlinkStickIfPresent(() => _blinkStick.SetColor(color)); + + private void TurnOffWithoutCancellation() => RunForBlinkStickIfPresent(() => _blinkStick.TurnOff()); private void RunForBlinkStickIfPresent(Action proces) { From abd384b75096cad59436dfa8d3aeb7ff8189fb36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Leh=C3=B3czky?= Date: Fri, 17 Apr 2020 21:53:30 +0200 Subject: [PATCH 6/9] Updating Readme --- Lombiq.Vsix.Orchard/Readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lombiq.Vsix.Orchard/Readme.md b/Lombiq.Vsix.Orchard/Readme.md index 77bbb0e..9f83bd6 100644 --- a/Lombiq.Vsix.Orchard/Readme.md +++ b/Lombiq.Vsix.Orchard/Readme.md @@ -41,6 +41,8 @@ This project is developed by [Lombiq Technologies Ltd](http://lombiq.com/). Comm ## Release notes +- 1.5.1 + - Fixing startup performance issues. If you've previously seen a message like "Visual Studio stopped responding for x seconds. Disabling the extension Lombiq Orchard Visual Studio Extension 1.5.0 might help." when launching Visual Studio then that's gone now. - 1.5.0, 04.04.2020 - Support for [BlinkStick](https://www.blinkstick.com/) USB LED sticks so they can light up when the Orchard Error Log Watcher detects a new log entry. - Added support for custom log file name patters for the Orchard Error Log Watcher so files not following Orchard naming conventions will be detected too. From 7de447e0d4fa5d38940a585714d527e73afb18e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Leh=C3=B3czky?= Date: Fri, 24 Apr 2020 14:03:45 +0200 Subject: [PATCH 7/9] Updating version number --- Lombiq.Vsix.Orchard/Constants/ExtensionVersion.cs | 2 +- Lombiq.Vsix.Orchard/Readme.md | 2 +- Lombiq.Vsix.Orchard/source.extension.vsixmanifest | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Lombiq.Vsix.Orchard/Constants/ExtensionVersion.cs b/Lombiq.Vsix.Orchard/Constants/ExtensionVersion.cs index f7f1ad1..bfdee45 100644 --- a/Lombiq.Vsix.Orchard/Constants/ExtensionVersion.cs +++ b/Lombiq.Vsix.Orchard/Constants/ExtensionVersion.cs @@ -2,6 +2,6 @@ { internal static class ExtensionVersion { - public const string Current = "1.5.0"; + public const string Current = "1.5.1"; } } diff --git a/Lombiq.Vsix.Orchard/Readme.md b/Lombiq.Vsix.Orchard/Readme.md index 9f83bd6..829bb23 100644 --- a/Lombiq.Vsix.Orchard/Readme.md +++ b/Lombiq.Vsix.Orchard/Readme.md @@ -41,7 +41,7 @@ This project is developed by [Lombiq Technologies Ltd](http://lombiq.com/). Comm ## Release notes -- 1.5.1 +- 1.5.1, 24.04.2020 - Fixing startup performance issues. If you've previously seen a message like "Visual Studio stopped responding for x seconds. Disabling the extension Lombiq Orchard Visual Studio Extension 1.5.0 might help." when launching Visual Studio then that's gone now. - 1.5.0, 04.04.2020 - Support for [BlinkStick](https://www.blinkstick.com/) USB LED sticks so they can light up when the Orchard Error Log Watcher detects a new log entry. diff --git a/Lombiq.Vsix.Orchard/source.extension.vsixmanifest b/Lombiq.Vsix.Orchard/source.extension.vsixmanifest index de04f2e..a39cddc 100644 --- a/Lombiq.Vsix.Orchard/source.extension.vsixmanifest +++ b/Lombiq.Vsix.Orchard/source.extension.vsixmanifest @@ -1,7 +1,7 @@  - + Lombiq Orchard Visual Studio Extension Visual Studio extension with many features and templates frequently used by Lombiq developers. Contains Orchard-related as well as generic goodies. https://github.com/Lombiq/Lombiq-Visual-Studio-Extension From 88ec3471defd62af6a2c52f7947153425a9d8499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Leh=C3=B3czky?= Date: Fri, 24 Apr 2020 14:33:51 +0200 Subject: [PATCH 8/9] Updating logos --- Lombiq.Vsix.Orchard/Lombiq.png | Bin 47132 -> 23461 bytes Lombiq.Vsix.Orchard/Package.ico | Bin 90022 -> 102502 bytes Lombiq.Vsix.Orchard/Readme.md | 1 + Lombiq.Vsix.Orchard/Resources/Lombiq16x16.png | Bin 1470 -> 696 bytes 4 files changed, 1 insertion(+) diff --git a/Lombiq.Vsix.Orchard/Lombiq.png b/Lombiq.Vsix.Orchard/Lombiq.png index d9893eac0205a75247fa30db089f033fe53581cc..59e7b27ed2955b2499b81eb252f5ba59690b27b4 100644 GIT binary patch literal 23461 zcma%ig;!MH_x2#tDIguv2ojP*cXx@jNP~1qgOt>ef;2;ifOLn1v<%%{LwDEj^7+1h zz{^^*Sof}T&OLXZ9nXIDzTs*rvRLS(=pYaXOI}V&0|Y`ifBvB&19t|emLq_F2re43 z5}@*b3rKqAB2_;Yo|Db%SKY)Lvq4Foc_QLY@{qJuKYaE!?ZD|AKd;evbd7 z6;~g^qeJO;MWnDVKg)FSbWbt~_*Y+|^3Z0hno&46g6?~_RH)*GjQ~9V|L;%ClgoXTtDrq#-C%ekgn{PZ z^A%JNCphifs4Z*x$wqVR_+DsXP5eyw4+=La4}s=4M*6ijH#(NN2Y~_vL(Ci= zu7Xf-9w=Tey6u9J+uec?begGMsgcpx{snrAw-gnJ+*LifVSOI01j;6+ z6$TLKYoZBpS?=i1RMo2uN;hS~9usT|5QyNtA0Yc=rYb;O=%}Z#Gns9$QOq#(>n{rB%o5Y!M2#Of+0WbV(Y?>MlXE8g8 zfNN2qyV%Z{WN#f02&N!JIkLtup*m=$p|o1ZXf-BDMC^MBX5!=0hT%{hhSSy= zX2BjFUw&vn1a+X1gpM+kMqh5J*_NxqB~W=bAd~_iQ2LOz&t&Qzev@^oO&{>8D|AsV z4N#tGMpra*V+7EOR+E&_YF;Df#*4s}B2s}13I1%)M0?a%bAiYL*-q#dLri09a|r>LRp zp9o=kVDd{Rd?6{+K`x#?s1uwc3_|Szf~g2)_H8qWm059wsSG!w0bA1*z-%NseGLM2 zRJ+Q-XTq>Spv*!^3HB`(Ksc6-0#FL@0|N>NVc*C5xre(JCX(jy1yuA9L9A%h@9ZVI z!qu39sXZ9aI-R}(+QylM(ujtoLlM)PurQT0xD9i1Wd_0D#>uVK)XLBVf0xcxr*mcG z!W@lC19rn`MlAD=kx};UEoS`{%!va75PtkVwDjhzdsNQYK1-7QSzSB&yO+F=gwJ6a zLmWlH|INz_UD!lITU>PnRtHUpk#B@f8HjAK{YEDMcCRt4Q`X22B|D|kiaeBkG+*_sO`jz*RU?WTTy zZ17D957Ct)zOF>}^D*#@J$@qWsYM$-QY{iVl!N~#m+=dHjvOLKsAX<48Fkds&`%ZxfEl%W~^@aZ9cwxxIz zRNx57M0^_Nf*=CDpzN}N2nAL0o7sur?4X5-Ocs1EH#avq)WBeD&|IgwZ8XD>&Osw5 z^vfHvEH7X*x7^g2W<4& z%u`VVwGXk0`VyaVKQtj)v8O0$aFed1f_5cPnYRlr4N_r9m)SvSg!9A})6Coxa zQ5uScbr@W;RI~R1o0*V9#gAM|AF7HX|IfH3@PI4UltC;INVvF>(28Ra{cs&vCM`BaMx>bplfrW>xPe(Y>U6+KO0 zUPuSIz}MbUJ6m-KD7(&#GY07e0-&r|rO(C%2u120;n~nci2gQA-w6mrf)c2h{oF6Q za7TxRl+Ixk*e;5o>}pz{5ad|l^RH)H!|%fmKb35-0H!FWUlnFAHw+HGReWdIL?C&n zGTH2L^v)BFJQ}bbl>shkbAoC5^IyMy#rk;l@c#jU92G)WGZLnr@0xLvBoYD63Ir;o z6ZDsZt5~F3g!=4CNB~kLB?d$cb|d`H0c0~w`dqx6rgt4YH6M)B+W}@cGQa-ctu8TN zQ$Ryfa5qwbRf!l}b7KJmoWqmQa>n27=SK2^{|f~?EL_>$K;jgSpH$peH)*vv!rR_} zAbC&+1Y+$EhKw}I#4U7TsXCfUjBEoZ0w^*H?JwYnyKq?>&{ohyvSK7iY+e$Ab~~$H zY%ZKXZ-ttJ0LjR-C=i` zF&QDxC~5c|#-`_j-+`|*E{D||w2j&(@z72GEa5xYA5Eq4yiXuTWN&37`^+BYA|hJA zQbK|cKkbf`+B715#oU6m{@vz!|8D#Z&D$qNr=9or&#qr%c>$0hZb!VST=m=TkM#j{i@=m{=U9L5m+*{e?%y~ z;e)CKv3J7`$@9z8ckaG9PTv|<1fKRe)#7({c85#r&|eyFxc0(1X7UA0+Qt6G*Kf>s zdRkG`9_;aGi}0zkv@FRY+Aa=kmvJtGDal@4_zEjCbbEW-Wdos~PS+bp?aK`#f#1D! z$?bt;am6w1h{pbdcH%;9GSh1G8LycHr&q@8pyswG9|Lu_pS@RTDY_JZd^W5-8+WZ< zX17}mr;bLlw{^s|NxA*}O!X@V9(knc+$)kYqw4HjWD+}D@>9YzRL$zV(QL!)jPLw> zIF-lSp>1c2kX+(GS0roJ`{s0W*>NAueh+HeM5qbGujTp_%b* zquWS-LL<#f-DYgH>p-HNnUqh*X{d%_=-9y;xs4PLnWuYX78W^P8!8P%%VX4*IB`?k_zQpea z)FZ0f%SX!A=*zDC7`9(Lh=R1}dbm*h+xPC0*u4UucJ=H=NXL4F2d(wjFC_}C0Mo(_ zE)~JD>LhO%?MS=$$q!?fiLdcw?i$yss?K>hDL?Nu3so)*9I6BHhSR(&T+40oo&lIB z!=>3bO9P*io`tb6x9lhyf8UJUzeK*KujzU1SLLX-vqW>47#XKsTskl4gTJ#GHchzn zjx;eq2Z`i{X;;swkAubDh~>%}cf>ISX9Jp%P-Nd}a*`*#>Yb%fmN_kNVPSEcYFj?# z5+{a#{8^o(hX=rsn8=%viGQdArv8zMq(^WICel|rvGgn%4y%vL|C*Pne4XW-7ZZ-p zNPrylhd9j92Jn}J=(Tpk`S^@6c1kg=%DrgcOpfmXPP*)g1F9&F<^wd5QjbcZZ^`%}cu z#{CVh7<;RX3_qVxk8g`^kqasd8A-NyZ!=`QSNSox;BO>_@w4nj)u|MO~ z%paU^wozHlmMSUx0}L}R99PLb`$zUSj*>>Tl^Ngmwvc;rt@#*nBrkNu&3Qd~Jc1+H z2p_XiFx3Qb_b3O-X#(00<{8gKxtTT?7En(Nj*Z%gLX@e!ey~%Y)fp&!IPaLvYg^*9yK8c{&qrmCRvb>fKFin2iC@mo+C4AS3 z@l9|?Y;!fq%>oD(k;;|D@FMRmF*ST8}{2mX567p$uWbh z%*>}7J}1R}lmd87)!`Pv(?WNDjHGbsmo}aq8yhpIueLyPzyE#fvplACBt}F6RkQl@ z4e2(6WFEwsQu;dfBf&NhT*7lT#RV<1e0ek6l0+;s8S4-7;4Ca)=S;v_-#*^(k?)vH z6vatX2)K6tVIAVYWQjZWbk1sH!Sjlt6uv)|*4Tz3TG0|?YV6!=_+DlVW;$Fv*hK!U zRu#Z_+94^ctGvmZKWY*FM_q)E7#!HisWMrhoECsf6DbK|HE{fcG;vci4t8$8-mPFd z2|0^wDC+TwOJ3TN!+E$pe@nvgse=-`m5n5Zs(7WYuz?1e{NqP4rB|#ZXnL@}Uw$}a zPeLk3%Qwb*tB}^;m$mk*Dr5bkyMB^&Y9>1xi=aOZ7uR^g9=bss3^6c3)lcP9A4Sc3 z&r>t)&IH=4$hK2#UGD{#szSXQBEJn!$T_UsaK445qGc>Wc-*xApYdrIj%asmvt~a^ zd4S0$b#gdVdvA){Y3(IsVMIVpCa%5lsAvqHR?1Xq%_8gdlix+=gS&fO;Z?z)&+4qe zRk<7-56DDVi9_Y9Er)Y{y;DvKMipO`&09m*c%t{LPELOve_faiX%YS^9RFVXKd&+p7`>%cFa>9R~3pt-Z$ zZoJwNh$x&o6O6I#Pa4Jo_{#`@muS#%cjq0>EF0ymbqwyr*{xO(x;>vS?(uEn$e(v; zXI;6vvlEJ1q6`(!EKA)^l6La+L2}G5)-2SJ4;SfuRYX}AujN;+3lJnVdS zDpbp7h}uE=X$|gn@ZQdC|-#p0w^YtA-6!g z-F%%IOKPcB}aw>fdyL7^e|((SEH6tSFxtEe}ZO% z$KAZVUB62jclg;zoQZx)qD-d<*pc!$l#f){pC9~4T=<

#KW*qrTx#;g}cJ=6kn= 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 diff --git a/Lombiq.Vsix.Orchard/Package.ico b/Lombiq.Vsix.Orchard/Package.ico index 77876e440feb27e64ce427582c3c02cf42159d7e..d6482e917b40ed0b91e674061ca9fee161f9c970 100644 GIT binary patch literal 102502 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 literal 90022 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 diff --git a/Lombiq.Vsix.Orchard/Readme.md b/Lombiq.Vsix.Orchard/Readme.md index 829bb23..ee954d1 100644 --- a/Lombiq.Vsix.Orchard/Readme.md +++ b/Lombiq.Vsix.Orchard/Readme.md @@ -43,6 +43,7 @@ This project is developed by [Lombiq Technologies Ltd](http://lombiq.com/). Comm - 1.5.1, 24.04.2020 - Fixing startup performance issues. If you've previously seen a message like "Visual Studio stopped responding for x seconds. Disabling the extension Lombiq Orchard Visual Studio Extension 1.5.0 might help." when launching Visual Studio then that's gone now. + - Updating Lombiq logo to the current one. - 1.5.0, 04.04.2020 - Support for [BlinkStick](https://www.blinkstick.com/) USB LED sticks so they can light up when the Orchard Error Log Watcher detects a new log entry. - Added support for custom log file name patters for the Orchard Error Log Watcher so files not following Orchard naming conventions will be detected too. diff --git a/Lombiq.Vsix.Orchard/Resources/Lombiq16x16.png b/Lombiq.Vsix.Orchard/Resources/Lombiq16x16.png index 09749837046952d5975fdaeb84ed078add61e9ad..4a0d9cbb456cfd929abed6bd5ef75a9c2677b34e 100644 GIT binary patch delta 667 zcmV;M0%ZNZ3%CW485ITq001BJ|6u?C00DDSM?wIu&K&8HArpTIa7bBm000ic000ic z0Tn1pfB*mjO-V#SR5(wKlFw@sK@`Wovq=-Hp{<9gp_U>>NWefEa!800(m-f(5%E-o zU{6wOtpWc65j=SJqO}JP8t9LM7ttt+1}(Bgg@P1}MFf>%tZCBhuA3caChNMfB7R_) zH*aRX^WK|Bz=(gx<7vad1h?%>PM$$NpEp;)?CcyH*D0lBb$R*uW#*zzzR_-DM3Qid z+jiJV5F*|%VGizLu0$fSST2`WB<_|Z+AsG1fD726)G#eT*L980LV(d{&i}-&XBfsN zpM?O+>8}wC4(097>j{Rhn*AyDVD8Nv1x{CPju>`ta!_3TiUPci<$Bdvm1@;mmkqBCI zOCkjh)qbFLa|z*am}IkKB7BZn16TrXw+qwL=Rg}<(4NYsw}bYq0{XqdqAPR@*lRF8 zeiA;P55#}76TK71L6{(ixO&ig`WTDV1CPgJ35YI<#bOFG-CnO3#o`^vo9}S@{bQUM zK7u3}f?jzG=SToD9C-L)9nrl5_cFtKvizemc->>Jo@|!N?W%sbJ#a_ z{X!paZdMq4YSmC&d(zo4;W@e_M`vL{eizX&9R0am4#8j$cR#*>!M?;v9M%Z!J^+b5 zaA;r`9Bk&pY3l<-qeq9T)oPQs*Z;!W_+sZa@Dn8x1>hh9R)_!q002ovPDHLkV1h}1 BE9n3L literal 1470 zcmaJ=drXs86u&J969W}n=>uw8jI_1=zP3UwVux0#z_5tOoX=XQ6sYo$w%{X+2#O%O zxex{Cbi*uDVw^I>IWVXjW}6#hge^)fEov<)8r>W+ZTo#Yg)H%(?dII`_?^c+_f?;j znHnC(2}1~lr>CW4gPb0iZv_DtVYF2sf(tY{4MJ@nPV?nX0h@13%hn;ZGY+Auy$HPq zsOlj?HaS9%4G1MQBg8EGq;sVjA?o?8tS*G2l|EWRmoHJtzQ8ppwZpMn*>5Zui`|;t7`&!!f7<<^#9;{=Iw9Cxn3uz)6nF z@DYy(T(IIK2uncBEN+b7?eRVs;c;UieG-J8RjT>1yjd?yWn(c z$&BJKqsYDi(moW;VnW*hLdSs~L?Wld@hCanNf$UH`J)-{4Y^zru?So;napCbaM&!r z|JC0+YR4;f`ACw(VcV>hiF651z;iuuZ|!d}40uPLz2FP@(7Z;oIGP*1tM>$|Q=p@F z>IS{hTrPl7tf-zxzXdlasm+eQ=l&=b3$}yHFsI#dYy83KyVu%1KepcQ>3e4XSmf4XV5T3nI*VOCt>wlYi>xUq&q2R$6g zL-w2l2OG3YmkK^#|K$4~PfxF~?a|UDi?3elLVKkpJq-mny{K{UYR3iRMg!U>Mb$!M zyG`Hq938$*IbzS-ur@JKRa&%Vdx^zXysfghyv$r&W;Rt87uvQKY%eY>Da>Dxs3J*n zaM9j2c(PwvvoizF|9=N1tnS#c{b3ZUh$IOil`8gmeLfKtQ89uf#8mhJ@qSVUGU%w! z+X$bEsv-!&rvwC1ulRhO0oQuCM3VHa3!+3g{3PkW6F~{C@sgysCRjK|K;bdbX$bM1 zSx!Lpe}|XI93qI}{mn<;7|r#jUoS6*;*`9M)D*WYZ=o2Bsby(vEeKt%4ophn?(u#A zL#^pLZRqfn>C-4YyQ~v_Erp(*qRC+m7!3wPmLVr6d-ck9joAfNDBPsOp6Zf1r8}o5 zpG`i#r{$xzdT|#!bj>wK^+0+1k&Z)H(}}n1`koH|aR1_s!Tht5^T!wRvaZ#*8n16T z{&io)Cdwks?vRj{s>OFd8|DgH7Jm1wHa1qvK6T2-%B#Hb)Jeap+9Obik7=Y@wQbY7 zoy$zCUlK9(8`5jlt-k7@ecDjk%%&I|Ys3rA9Bx%-+b+Jo{l~}j4&mtLQMQ}IS)o*Z znrwNwA!GE_rHUOPwI577!R*2}c9(Z}*Y%C*Lu$K;sdS<4rjC#=1Gz znxAAW&j*3#$rbZ4xe`;%&rv9n%C#%9l$F)&Br(_!MOT From 205b6d519d8bf897306f46d8ed2e233f2e36a24f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Leh=C3=B3czky?= Date: Fri, 24 Apr 2020 14:34:43 +0200 Subject: [PATCH 9/9] Getting rid of unnecessary code suggestion --- Lombiq.Vsix.Orchard/Services/LogWatcher/BlinkStickManager.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Lombiq.Vsix.Orchard/Services/LogWatcher/BlinkStickManager.cs b/Lombiq.Vsix.Orchard/Services/LogWatcher/BlinkStickManager.cs index ea550be..014a3b0 100644 --- a/Lombiq.Vsix.Orchard/Services/LogWatcher/BlinkStickManager.cs +++ b/Lombiq.Vsix.Orchard/Services/LogWatcher/BlinkStickManager.cs @@ -1,5 +1,6 @@ using BlinkStickDotNet; using System; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; @@ -69,7 +70,7 @@ public void Dispose() _blinkStick = null; } - + [SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "No other way to check the color.")] public static bool IsValidColor(string color) { // Unfortunately, no way to check the color without using exceptions.