Reacting to Diagnostics changes
This commit is contained in:
parent
6467d0d475
commit
218613bc0a
|
|
@ -4,7 +4,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.CompilationAbstractions;
|
||||
using Microsoft.AspNet.Diagnostics;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.Extensions.CompilationAbstractions;
|
||||
using Microsoft.AspNet.Diagnostics;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
||||
{
|
||||
|
|
|
|||
|
|
@ -5,11 +5,10 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Microsoft.AspNet.Diagnostics;
|
||||
using Microsoft.AspNet.FileProviders;
|
||||
using Microsoft.AspNet.Razor;
|
||||
using Microsoft.AspNet.Razor.CodeGenerators;
|
||||
using Microsoft.Extensions.CompilationAbstractions;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
using Microsoft.Extensions.OptionsModel;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
||||
|
|
@ -96,7 +95,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
var compilationFailure = new CompilationFailure(
|
||||
filePath,
|
||||
fileContent,
|
||||
group.Select(parserError => CreateDiagnosticMessage(parserError, filePath)));
|
||||
compiledContent: string.Empty,
|
||||
messages: group.Select(parserError => CreateDiagnosticMessage(parserError, filePath)));
|
||||
failures.Add(compilationFailure);
|
||||
}
|
||||
|
||||
|
|
@ -106,11 +106,9 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
private DiagnosticMessage CreateDiagnosticMessage(RazorError error, string filePath)
|
||||
{
|
||||
return new DiagnosticMessage(
|
||||
errorCode: null,
|
||||
message: error.Message,
|
||||
formattedMessage: $"{error} ({error.Location.LineIndex},{error.Location.CharacterIndex}) {error.Message}",
|
||||
filePath: filePath,
|
||||
severity: DiagnosticMessageSeverity.Error,
|
||||
startLine: error.Location.LineIndex + 1,
|
||||
startColumn: error.Location.CharacterIndex,
|
||||
endLine: error.Location.LineIndex + 1,
|
||||
|
|
|
|||
|
|
@ -12,15 +12,16 @@ using System.Reflection.PortableExecutable;
|
|||
#if DOTNET5_5
|
||||
using System.Runtime.Loader;
|
||||
#endif
|
||||
using System.Runtime.Versioning;
|
||||
using Microsoft.AspNet.FileProviders;
|
||||
using Microsoft.AspNet.Mvc.Razor.Internal;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.CodeAnalysis.CSharp;
|
||||
using Microsoft.CodeAnalysis.Emit;
|
||||
using Microsoft.Dnx.Compilation.CSharp;
|
||||
using Microsoft.Extensions.CompilationAbstractions;
|
||||
using Microsoft.Extensions.PlatformAbstractions;
|
||||
using Microsoft.Extensions.OptionsModel;
|
||||
using Microsoft.AspNet.Diagnostics;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
||||
{
|
||||
|
|
@ -33,7 +34,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
private readonly ConcurrentDictionary<string, AssemblyMetadata> _metadataFileCache =
|
||||
new ConcurrentDictionary<string, AssemblyMetadata>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
private readonly ILibraryExporter _libraryExporter;
|
||||
private readonly Extensions.CompilationAbstractions.ILibraryExporter _libraryExporter;
|
||||
private readonly IApplicationEnvironment _environment;
|
||||
private readonly IFileProvider _fileProvider;
|
||||
private readonly Lazy<List<MetadataReference>> _applicationReferences;
|
||||
|
|
@ -53,14 +54,14 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
/// <param name="loaderAccessor">
|
||||
/// The accessor for the <see cref="IAssemblyLoadContext"/> used to load compiled assemblies.
|
||||
/// </param>
|
||||
/// <param name="libraryManager">The library manager that provides export and reference information.</param>
|
||||
/// <param name="libraryExporter">The library manager that provides export and reference information.</param>
|
||||
/// <param name="compilerOptionsProvider">
|
||||
/// The <see cref="ICompilerOptionsProvider"/> that provides Roslyn compilation settings.
|
||||
/// </param>
|
||||
/// <param name="host">The <see cref="IMvcRazorHost"/> that was used to generate the code.</param>
|
||||
public RoslynCompilationService(
|
||||
IApplicationEnvironment environment,
|
||||
ILibraryExporter libraryExporter,
|
||||
Extensions.CompilationAbstractions.ILibraryExporter libraryExporter,
|
||||
IMvcRazorHost host,
|
||||
IOptions<RazorViewEngineOptions> optionsAccessor)
|
||||
{
|
||||
|
|
@ -73,7 +74,6 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
_parseOptions = optionsAccessor.Value.ParseOptions;
|
||||
_compilationOptions = optionsAccessor.Value.CompilationOptions;
|
||||
|
||||
|
||||
#if DOTNET5_5
|
||||
_razorLoadContext = new RazorLoadContext();
|
||||
#endif
|
||||
|
|
@ -213,7 +213,7 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
sourceFilePath,
|
||||
sourceFileContent,
|
||||
compilationContent,
|
||||
group.Select(d => d.ToDiagnosticMessage(_environment.RuntimeFramework)));
|
||||
group.Select(diagnostic => GetDiagnosticMessage(diagnostic, _environment.RuntimeFramework)));
|
||||
|
||||
failures.Add(compilationFailure);
|
||||
}
|
||||
|
|
@ -269,7 +269,8 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
return references;
|
||||
}
|
||||
|
||||
private MetadataReference ConvertMetadataReference(IMetadataReference metadataReference)
|
||||
private MetadataReference ConvertMetadataReference(
|
||||
Extensions.CompilationAbstractions.IMetadataReference metadataReference)
|
||||
{
|
||||
var roslynReference = metadataReference as IRoslynMetadataReference;
|
||||
|
||||
|
|
@ -278,21 +279,21 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
return roslynReference.MetadataReference;
|
||||
}
|
||||
|
||||
var embeddedReference = metadataReference as IMetadataEmbeddedReference;
|
||||
var embeddedReference = metadataReference as Extensions.CompilationAbstractions.IMetadataEmbeddedReference;
|
||||
|
||||
if (embeddedReference != null)
|
||||
{
|
||||
return MetadataReference.CreateFromImage(embeddedReference.Contents);
|
||||
}
|
||||
|
||||
var fileMetadataReference = metadataReference as IMetadataFileReference;
|
||||
var fileMetadataReference = metadataReference as Extensions.CompilationAbstractions.IMetadataFileReference;
|
||||
|
||||
if (fileMetadataReference != null)
|
||||
{
|
||||
return CreateMetadataFileReference(fileMetadataReference.Path);
|
||||
}
|
||||
|
||||
var projectReference = metadataReference as IMetadataProjectReference;
|
||||
var projectReference = metadataReference as Extensions.CompilationAbstractions.IMetadataProjectReference;
|
||||
if (projectReference != null)
|
||||
{
|
||||
using (var ms = new MemoryStream())
|
||||
|
|
@ -346,6 +347,19 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
return null;
|
||||
}
|
||||
|
||||
private static DiagnosticMessage GetDiagnosticMessage(Diagnostic diagnostic, FrameworkName targetFramework)
|
||||
{
|
||||
var mappedLineSpan = diagnostic.Location.GetMappedLineSpan();
|
||||
return new DiagnosticMessage(
|
||||
diagnostic.GetMessage(),
|
||||
RoslynDiagnosticFormatter.Format(diagnostic, targetFramework),
|
||||
mappedLineSpan.Path,
|
||||
mappedLineSpan.StartLinePosition.Line + 1,
|
||||
mappedLineSpan.StartLinePosition.Character + 1,
|
||||
mappedLineSpan.EndLinePosition.Line + 1,
|
||||
mappedLineSpan.EndLinePosition.Character + 1);
|
||||
}
|
||||
|
||||
#if DOTNET5_5
|
||||
private class RazorLoadContext : AssemblyLoadContext
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.CompilationAbstractions;
|
||||
using Microsoft.AspNet.Diagnostics;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
||||
|
|
@ -13,7 +13,11 @@ namespace Microsoft.AspNet.Mvc.Razor.Compilation
|
|||
public void EnsureSuccessful_ThrowsIfCompilationFailed()
|
||||
{
|
||||
// Arrange
|
||||
var compilationFailure = new CompilationFailure("test", Enumerable.Empty<Microsoft.Extensions.CompilationAbstractions.DiagnosticMessage>());
|
||||
var compilationFailure = new CompilationFailure(
|
||||
"test",
|
||||
sourceFileContent: string.Empty,
|
||||
compiledContent: string.Empty,
|
||||
messages: Enumerable.Empty<AspNet.Diagnostics.DiagnosticMessage>());
|
||||
var failures = new[] { compilationFailure };
|
||||
var result = new CompilationResult(failures);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue