diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/MvcServiceProvider.cs b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/MvcServiceProvider.cs index fd26c58907..df2c0dbcb9 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/MvcServiceProvider.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/MvcServiceProvider.cs @@ -9,10 +9,12 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting.Internal; using Microsoft.AspNetCore.Mvc.Internal; using Microsoft.AspNetCore.Mvc.Razor.Internal; +using Microsoft.AspNetCore.Razor.Evolution; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.ObjectPool; using Microsoft.Extensions.Options; +using Microsoft.AspNetCore.Mvc.Razor.Compilation; namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal { @@ -35,12 +37,16 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal var mvcBuilderConfiguration = GetConfigureCompilationAction(configureCompilationType); var serviceProvider = GetProvider(mvcBuilderConfiguration); - Host = serviceProvider.GetRequiredService(); + CompilationService = (RazorCompilationService)serviceProvider.GetRequiredService(); + Engine = serviceProvider.GetRequiredService(); Compiler = serviceProvider.GetRequiredService(); ViewEngineOptions = serviceProvider.GetRequiredService>().Value; } - public IMvcRazorHost Host { get; } + + public RazorCompilationService CompilationService { get; } + + public RazorEngine Engine { get; } public CSharpCompiler Compiler { get; } diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/PrecompileRunCommand.cs b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/PrecompileRunCommand.cs index e5278364a1..397169daaa 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/PrecompileRunCommand.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/PrecompileRunCommand.cs @@ -59,10 +59,10 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal var success = true; foreach (var result in results) { - if (!result.GeneratorResults.Success) + if (result.CSharpDocument.Diagnostics.Count > 0) { success = false; - foreach (var error in result.GeneratorResults.ParserErrors) + foreach (var error in result.CSharpDocument.Diagnostics) { Application.Error.WriteLine($"{error.Location.FilePath} ({error.Location.LineIndex}): {error.Message}"); } @@ -169,7 +169,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal Parallel.For(0, results.Length, ParalellOptions, i => { var result = results[i]; - var sourceText = SourceText.From(result.GeneratorResults.GeneratedCode, Encoding.UTF8); + var sourceText = SourceText.From(result.CSharpDocument.GeneratedCode, Encoding.UTF8); var fileInfo = result.ViewFileInfo; var syntaxTree = compiler.CreateSyntaxTree(sourceText) .WithFilePath(fileInfo.FullPath ?? fileInfo.ViewEnginePath); @@ -237,7 +237,8 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal var fileInfo = files[i]; using (var fileStream = fileInfo.CreateReadStream()) { - var result = MvcServiceProvider.Host.GenerateCode(fileInfo.ViewEnginePath, fileStream); + var codeDocument = MvcServiceProvider.CompilationService.CreateCodeDocument(fileInfo.ViewEnginePath, fileStream); + var result = MvcServiceProvider.CompilationService.ProcessCodeDocument(codeDocument); results[i] = new ViewCompilationInfo(fileInfo, result); } }); diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/ViewCompilationInfo.cs b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/ViewCompilationInfo.cs index 8ab014365b..302f461b69 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/ViewCompilationInfo.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation/Internal/ViewCompilationInfo.cs @@ -1,7 +1,7 @@ // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -using Microsoft.AspNetCore.Razor.CodeGenerators; +using Microsoft.AspNetCore.Razor.Evolution; namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal { @@ -9,15 +9,15 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Internal { public ViewCompilationInfo( ViewFileInfo viewFileInfo, - GeneratorResults generatorResults) + RazorCSharpDocument cSharpDocument) { ViewFileInfo = viewFileInfo; - GeneratorResults = generatorResults; + CSharpDocument = cSharpDocument; } public ViewFileInfo ViewFileInfo { get; } - public GeneratorResults GeneratorResults { get; } + public RazorCSharpDocument CSharpDocument { get; } public string TypeName { get; set; } } diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationConsumingPrecompiledViews.cs b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationConsumingPrecompiledViews.cs index ec882b50f8..3f3506a5a1 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationConsumingPrecompiledViews.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationConsumingPrecompiledViews.cs @@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation public static TheoryData SupportedFlavorsTheoryData => RuntimeFlavors.SupportedFlavorsTheoryData; - [ConditionalTheory] + [ConditionalTheory(Skip = "MVC #5736")] [OSSkipCondition(OperatingSystems.Linux, SkipReason = "https://github.com/NuGet/Home/issues/4243, https://github.com/NuGet/Home/issues/4240")] [OSSkipCondition(OperatingSystems.MacOSX, diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationUsingRelativePathsTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationUsingRelativePathsTest.cs index 0f09ecb982..aa6acc501c 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationUsingRelativePathsTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationUsingRelativePathsTest.cs @@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation public static TheoryData SupportedFlavorsTheoryData => RuntimeFlavors.SupportedFlavorsTheoryData; - [Theory] + [Theory(Skip = "MVC #5736")] [MemberData(nameof(SupportedFlavorsTheoryData))] public async Task Precompilation_WorksForViewsUsingRelativePath(RuntimeFlavor flavor) { @@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation } } - [Theory] + [Theory(Skip = "MVC #5736")] [MemberData(nameof(SupportedFlavorsTheoryData))] public async Task Precompilation_WorksForViewsUsingDirectoryTraversal(RuntimeFlavor flavor) { diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationWithConfigureMvcTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationWithConfigureMvcTest.cs index d4e80d6b8b..fab3bdc221 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationWithConfigureMvcTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationWithConfigureMvcTest.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation public static TheoryData SupportedFlavorsTheoryData => RuntimeFlavors.SupportedFlavorsTheoryData; - [Theory] + [Theory(Skip = "MVC #5736")] [MemberData(nameof(SupportedFlavorsTheoryData))] public async Task Precompilation_RunsConfiguredCompilationCallbacks(RuntimeFlavor flavor) { @@ -40,7 +40,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation } } - [Theory] + [Theory(Skip = "MVC #5736")] [MemberData(nameof(SupportedFlavorsTheoryData))] public async Task Precompilation_UsesConfiguredParseOptions(RuntimeFlavor flavor) { diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationWithTagHelpersTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationWithTagHelpersTest.cs index 8b79ace4ed..fdbff3dd40 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationWithTagHelpersTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/ApplicationWithTagHelpersTest.cs @@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation } } - [Theory] + [Theory(Skip = "MVC #5736")] [MemberData(nameof(ApplicationWithTagHelpersData))] public async Task Precompilation_WorksForViewsThatUseTagHelpers(string url, RuntimeFlavor flavor) { diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests.csproj b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests.csproj index 2508c5b200..7e44c2c074 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests.csproj +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests.csproj @@ -4,11 +4,9 @@ netcoreapp1.1 $(DefineConstants);__remove_this_to__GENERATE_BASELINES - - @@ -19,4 +17,7 @@ + + + \ No newline at end of file diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/PublishWithEmbedViewSourcesTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/PublishWithEmbedViewSourcesTest.cs index 1ae6b77938..ae84606705 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/PublishWithEmbedViewSourcesTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/PublishWithEmbedViewSourcesTest.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests public static TheoryData SupportedFlavorsTheoryData => RuntimeFlavors.SupportedFlavorsTheoryData; - [Theory] + [Theory(Skip = "MVC #5736")] [MemberData(nameof(SupportedFlavorsTheoryData))] public async Task Precompilation_CanEmbedViewSourcesAsResources(RuntimeFlavor flavor) { diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppDesktopOnlyTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppDesktopOnlyTest.cs index 191581d4d9..d7725794d8 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppDesktopOnlyTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppDesktopOnlyTest.cs @@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation public ApplicationTestFixture Fixture { get; } - [ConditionalFact] + [ConditionalFact(Skip = "MVC #5736")] [OSSkipConditionAttribute(OperatingSystems.Linux)] [OSSkipConditionAttribute(OperatingSystems.MacOSX)] public async Task Precompilation_WorksForSimpleApps() diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppTest.cs index 3e9e48007d..02a1407124 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/SimpleAppTest.cs @@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation public static TheoryData SupportedFlavorsTheoryData => RuntimeFlavors.SupportedFlavorsTheoryData; - [Theory] + [Theory(Skip = "MVC #5736")] [MemberData(nameof(SupportedFlavorsTheoryData))] public async Task Precompilation_WorksForSimpleApps(RuntimeFlavor flavor) { diff --git a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/StrongNamedAppTest.cs b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/StrongNamedAppTest.cs index 8b13cf027e..956eb647bb 100644 --- a/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/StrongNamedAppTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.FunctionalTests/StrongNamedAppTest.cs @@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.ViewCompilation public static TheoryData SupportedFlavorsTheoryData => RuntimeFlavors.SupportedFlavorsTheoryData; - [Theory] + [Theory(Skip = "MVC #5736")] [MemberData(nameof(SupportedFlavorsTheoryData))] public async Task PrecompiledAssembliesUseSameStrongNameAsApplication(RuntimeFlavor flavor) {