From f177648c884f065784d08f262b98c94625d1de61 Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Thu, 23 Feb 2017 14:20:55 -0800 Subject: [PATCH] Add activity log for TagHelper exceptions This will log to the VS activity log any time we fail to discovery taghelpers due to an exception. There's no real user experience around this... if someone is having an issue we can ask them to send us the log or post the relevant portion. --- .../DefaultTagHelperResolver.cs | 21 +++++++++++++++++++ ...VisualStudio.LanguageServices.Razor.csproj | 12 +++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperResolver.cs b/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperResolver.cs index 5ae954eceb..a3ca64e064 100644 --- a/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperResolver.cs +++ b/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperResolver.cs @@ -10,6 +10,8 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.Evolution; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.Razor; +using Microsoft.VisualStudio.Shell; +using Microsoft.VisualStudio.Shell.Interop; namespace Microsoft.VisualStudio.LanguageServices.Razor { @@ -19,6 +21,9 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor [Import] public VisualStudioWorkspace Workspace { get; set; } + [Import] + public SVsServiceProvider Services { get; set; } + public async Task GetTagHelpersAsync(Project project, IEnumerable assemblyNameFilters) { try @@ -46,6 +51,16 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor } catch (Exception exception) { + var log = GetActivityLog(); + if (log != null) + { + var hr = log.LogEntry( + (uint)__ACTIVITYLOG_ENTRYTYPE.ALE_ERROR, + "Razor Language Services", + $"Error discovering TagHelpers:{Environment.NewLine}{exception}"); + ErrorHandler.ThrowOnFailure(hr); + } + throw new RazorLanguageServiceException( typeof(DefaultTagHelperResolver).FullName, nameof(GetTagHelpersAsync), @@ -90,5 +105,11 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor } } } + + private IVsActivityLog GetActivityLog() + { + var services = (IServiceProvider)Services; + return services.GetService(typeof(SVsActivityLog)) as IVsActivityLog; + } } } diff --git a/src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj b/src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj index 4575d1bbda..c3114c43a3 100644 --- a/src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj +++ b/src/Microsoft.VisualStudio.LanguageServices.Razor/Microsoft.VisualStudio.LanguageServices.Razor.csproj @@ -22,6 +22,18 @@ + + + + + + + + + + + +