diff --git a/src/Microsoft.CodeAnalysis.Remote.Razor/Microsoft.CodeAnalysis.Remote.Razor.csproj b/src/Microsoft.CodeAnalysis.Remote.Razor/Microsoft.CodeAnalysis.Remote.Razor.csproj
index afa059389a..7a07b15987 100644
--- a/src/Microsoft.CodeAnalysis.Remote.Razor/Microsoft.CodeAnalysis.Remote.Razor.csproj
+++ b/src/Microsoft.CodeAnalysis.Remote.Razor/Microsoft.CodeAnalysis.Remote.Razor.csproj
@@ -10,9 +10,13 @@
Microsoft.CodeAnalysis.Remote.Razor
$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;
+
+
+
+
diff --git a/src/Microsoft.CodeAnalysis.Remote.Razor/RazorLanguageService.cs b/src/Microsoft.CodeAnalysis.Remote.Razor/RazorLanguageService.cs
index fd913b657e..f1d303afb0 100644
--- a/src/Microsoft.CodeAnalysis.Remote.Razor/RazorLanguageService.cs
+++ b/src/Microsoft.CodeAnalysis.Remote.Razor/RazorLanguageService.cs
@@ -10,6 +10,7 @@ using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Razor.Evolution;
using Microsoft.CodeAnalysis.Razor;
+using Microsoft.VisualStudio.LanguageServices.Razor;
namespace Microsoft.CodeAnalysis.Remote.Razor
{
@@ -19,11 +20,13 @@ namespace Microsoft.CodeAnalysis.Remote.Razor
public RazorLanguageService(Stream stream, IServiceProvider serviceProvider)
: base(stream, serviceProvider)
{
+ Rpc.JsonSerializer.Converters.Add(new RazorDiagnosticJsonConverter());
}
public RazorLanguageService(IServiceProvider serviceProvider, Stream stream)
: base(serviceProvider, stream)
{
+ Rpc.JsonSerializer.Converters.Add(new RazorDiagnosticJsonConverter());
}
public async Task GetTagHelpersAsync(Guid projectIdBytes, string projectDebugName, IEnumerable assemblyNameFilters, CancellationToken cancellationToken = default(CancellationToken))
diff --git a/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperResolver.cs b/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperResolver.cs
index 59eeb40485..4d377f58b4 100644
--- a/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperResolver.cs
+++ b/src/Microsoft.VisualStudio.LanguageServices.Razor/DefaultTagHelperResolver.cs
@@ -12,6 +12,8 @@ using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Razor;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
namespace Microsoft.VisualStudio.LanguageServices.Razor
{
@@ -41,10 +43,12 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
{
if (session != null)
{
- result = await session.InvokeAsync(
+ var jsonObject = await session.InvokeAsync(
"GetTagHelpersAsync",
new object[] { project.Id.Id, "Foo", assemblyNameFilters, }).ConfigureAwait(false);
+ result = GetTagHelperResolutionResult(jsonObject);
+
if (result != null)
{
// Per https://github.com/dotnet/roslyn/issues/12770 - there's currently no support for documentation in the OOP host
@@ -83,6 +87,18 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
}
}
+ private TagHelperResolutionResult GetTagHelperResolutionResult(JObject jsonObject)
+ {
+ var serializer = new JsonSerializer();
+ serializer.Converters.Add(TagHelperDescriptorJsonConverter.Instance);
+ serializer.Converters.Add(RazorDiagnosticJsonConverter.Instance);
+
+ using (var reader = jsonObject.CreateReader())
+ {
+ return serializer.Deserialize(reader);
+ }
+ }
+
private IReadOnlyList GetDocumentedTagHelpers(Compilation compilation, IReadOnlyList tagHelpers)
{
var documentedTagHelpers = new List();
diff --git a/src/Microsoft.VisualStudio.LanguageServices.Razor/Properties/Resources.Designer.cs b/src/Microsoft.VisualStudio.LanguageServices.Razor/Properties/Resources.Designer.cs
index 562ff5a7ab..41d599a8d9 100644
--- a/src/Microsoft.VisualStudio.LanguageServices.Razor/Properties/Resources.Designer.cs
+++ b/src/Microsoft.VisualStudio.LanguageServices.Razor/Properties/Resources.Designer.cs
@@ -10,20 +10,6 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
private static readonly ResourceManager _resourceManager
= new ResourceManager("Microsoft.VisualStudio.LanguageServices.Razor.Resources", typeof(Resources).GetTypeInfo().Assembly);
- ///
- /// Deserialization of {0} type '{1}' is not supported.
- ///
- internal static string RazorDiagnosticJsonConverter_UnsupportedRazorDiagnosticType
- {
- get => GetString("RazorDiagnosticJsonConverter_UnsupportedRazorDiagnosticType");
- }
-
- ///
- /// Deserialization of {0} type '{1}' is not supported.
- ///
- internal static string FormatRazorDiagnosticJsonConverter_UnsupportedRazorDiagnosticType(object p0, object p1)
- => string.Format(CultureInfo.CurrentCulture, GetString("RazorDiagnosticJsonConverter_UnsupportedRazorDiagnosticType"), p0, p1);
-
///
/// An unexpected exception occurred when invoking '{0}.{1}' on the Razor language service.
///
diff --git a/src/Microsoft.VisualStudio.LanguageServices.Razor/RazorDiagnosticJsonConverter.cs b/src/Microsoft.VisualStudio.LanguageServices.Razor/RazorDiagnosticJsonConverter.cs
index 204a84ab56..976c111f73 100644
--- a/src/Microsoft.VisualStudio.LanguageServices.Razor/RazorDiagnosticJsonConverter.cs
+++ b/src/Microsoft.VisualStudio.LanguageServices.Razor/RazorDiagnosticJsonConverter.cs
@@ -54,8 +54,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Razor
return RazorDiagnostic.Create(error);
}
- throw new NotSupportedException(
- Resources.FormatRazorDiagnosticJsonConverter_UnsupportedRazorDiagnosticType(typeof(RazorDiagnostic).Name, typeName));
+ return null;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
diff --git a/src/Microsoft.VisualStudio.LanguageServices.Razor/Resources.resx b/src/Microsoft.VisualStudio.LanguageServices.Razor/Resources.resx
index b4189aac42..6783beb144 100644
--- a/src/Microsoft.VisualStudio.LanguageServices.Razor/Resources.resx
+++ b/src/Microsoft.VisualStudio.LanguageServices.Razor/Resources.resx
@@ -117,9 +117,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Deserialization of {0} type '{1}' is not supported.
-
An unexpected exception occurred when invoking '{0}.{1}' on the Razor language service.