diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/ModelDirective.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/ModelDirective.cs index 2b67228fae..a2bce9974d 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/ModelDirective.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/ModelDirective.cs @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X } builder.AddDirective(Directive); - builder.Features.Add(new Pass(builder.DesignTime)); + builder.Features.Add(new Pass(builder.Configuration.DesignTime)); return builder; } diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/RazorExtensions.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/RazorExtensions.cs index c9b0642ad5..f94cf52abd 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/RazorExtensions.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X/RazorExtensions.cs @@ -55,7 +55,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X private static void EnsureDesignTime(RazorProjectEngineBuilder builder) { - if (builder.DesignTime) + if (builder.Configuration.DesignTime) { return; } diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/ModelDirective.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/ModelDirective.cs index a5d77b401e..9c16b96e57 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/ModelDirective.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/ModelDirective.cs @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions } builder.AddDirective(Directive); - builder.Features.Add(new Pass(builder.DesignTime)); + builder.Features.Add(new Pass(builder.Configuration.DesignTime)); return builder; } diff --git a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/RazorExtensions.cs b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/RazorExtensions.cs index 19aa2ced3c..ac1d8b35e9 100644 --- a/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/RazorExtensions.cs +++ b/src/Microsoft.AspNetCore.Mvc.Razor.Extensions/RazorExtensions.cs @@ -37,7 +37,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Extensions builder.Features.Add(new RazorPageDocumentClassifierPass()); builder.Features.Add(new MvcViewDocumentClassifierPass()); - if (!builder.DesignTime) + if (!builder.Configuration.DesignTime) { builder.Features.Add(new AssemblyAttributeInjectionPass()); builder.Features.Add(new InstrumentationPass()); diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngineBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngineBuilder.cs index 33c300cdb1..85af0c68f2 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngineBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultRazorProjectEngineBuilder.cs @@ -9,14 +9,14 @@ namespace Microsoft.AspNetCore.Razor.Language { internal class DefaultRazorProjectEngineBuilder : RazorProjectEngineBuilder { - public DefaultRazorProjectEngineBuilder(bool designTime, RazorProjectFileSystem fileSystem) + public DefaultRazorProjectEngineBuilder(RazorConfiguration configuration, RazorProjectFileSystem fileSystem) { if (fileSystem == null) { throw new ArgumentNullException(nameof(fileSystem)); } - DesignTime = designTime; + Configuration = configuration; FileSystem = fileSystem; Features = new List(); Phases = new List(); @@ -28,13 +28,13 @@ namespace Microsoft.AspNetCore.Razor.Language public override IList Phases { get; } - public override bool DesignTime { get; } + public override RazorConfiguration Configuration { get; } public override RazorProjectEngine Build() { RazorEngine engine = null; - if (DesignTime) + if (Configuration.DesignTime) { engine = RazorEngine.CreateDesignTimeEmpty(ConfigureRazorEngine); } diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorConfiguration.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorConfiguration.cs index 32420721ee..103c3fbec5 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorConfiguration.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorConfiguration.cs @@ -7,8 +7,7 @@ namespace Microsoft.AspNetCore.Razor.Language { public sealed class RazorConfiguration { - public static readonly RazorConfiguration DefaultRuntime = new RazorConfiguration(RazorLanguageVersion.Latest, designTime: false); - public static readonly RazorConfiguration DefaultDesignTime = new RazorConfiguration(RazorLanguageVersion.Latest, designTime: true); + public static readonly RazorConfiguration Default = new RazorConfiguration(RazorLanguageVersion.Latest, designTime: false); public RazorConfiguration(RazorLanguageVersion languageVersion, bool designTime) { diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorEngine.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorEngine.cs index dc2ef5d2e4..184afd70ac 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorEngine.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorEngine.cs @@ -17,14 +17,15 @@ namespace Microsoft.AspNetCore.Razor.Language return Create(configure: null); } - public static RazorEngine Create(Action configure) => CreateCore(RazorConfiguration.DefaultRuntime, configure); + public static RazorEngine Create(Action configure) => CreateCore(RazorConfiguration.Default, configure); public static RazorEngine CreateDesignTime() { return CreateDesignTime(configure: null); } - public static RazorEngine CreateDesignTime(Action configure) => CreateCore(RazorConfiguration.DefaultDesignTime, configure); + public static RazorEngine CreateDesignTime(Action configure) + => CreateCore(new RazorConfiguration(RazorLanguageVersion.Latest, designTime: true), configure); // Internal since RazorEngine APIs are going to be obsolete. internal static RazorEngine CreateCore(RazorConfiguration configuration, Action configure) diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs index 294dad449a..88522e9326 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngine.cs @@ -20,78 +20,41 @@ namespace Microsoft.AspNetCore.Razor.Language public static RazorProjectEngine Create(RazorProjectFileSystem fileSystem) => Create(fileSystem, configure: null); - public static RazorProjectEngine Create(RazorProjectFileSystem fileSystem, Action configure) + public static RazorProjectEngine Create(RazorProjectFileSystem fileSystem, Action configure) => Create(fileSystem, RazorConfiguration.Default, configure); + + public static RazorProjectEngine Create( + RazorProjectFileSystem fileSystem, + RazorConfiguration configuration, + Action configure) { if (fileSystem == null) { throw new ArgumentNullException(nameof(fileSystem)); } - var builder = new DefaultRazorProjectEngineBuilder(designTime: false, fileSystem: fileSystem); + if (configuration == null) + { + throw new ArgumentNullException(nameof(configuration)); + } + + var builder = new DefaultRazorProjectEngineBuilder(configuration, fileSystem); AddDefaults(builder); - AddRuntimeDefaults(builder); + + if (configuration.DesignTime) + { + AddDesignTimeDefaults(builder); + } + else + { + AddRuntimeDefaults(builder); + } + configure?.Invoke(builder); return builder.Build(); } - public static RazorProjectEngine CreateDesignTime(RazorProjectFileSystem fileSystem) => CreateDesignTime(fileSystem, configure: null); - - public static RazorProjectEngine CreateDesignTime(RazorProjectFileSystem fileSystem, Action configure) - { - if (fileSystem == null) - { - throw new ArgumentNullException(nameof(fileSystem)); - } - - var builder = new DefaultRazorProjectEngineBuilder(designTime: true, fileSystem: fileSystem); - - AddDefaults(builder); - AddDesignTimeDefaults(builder); - configure?.Invoke(builder); - - return builder.Build(); - } - - public static RazorProjectEngine CreateEmpty(RazorProjectFileSystem fileSystem, Action configure) - { - if (fileSystem == null) - { - throw new ArgumentNullException(nameof(fileSystem)); - } - - if (configure == null) - { - throw new ArgumentNullException(nameof(configure)); - } - - var builder = new DefaultRazorProjectEngineBuilder(designTime: false, fileSystem: fileSystem); - - configure(builder); - - return builder.Build(); - } - - public static RazorProjectEngine CreateDesignTimeEmpty(RazorProjectFileSystem fileSystem, Action configure) - { - if (fileSystem == null) - { - throw new ArgumentNullException(nameof(fileSystem)); - } - - if (configure == null) - { - throw new ArgumentNullException(nameof(configure)); - } - - var builder = new DefaultRazorProjectEngineBuilder(designTime: true, fileSystem: fileSystem); - - configure(builder); - - return builder.Build(); - } - private static void AddDefaults(RazorProjectEngineBuilder builder) { builder.Features.Add(new DefaultRazorImportFeature()); @@ -101,7 +64,7 @@ namespace Microsoft.AspNetCore.Razor.Language { var engineFeatures = new List(); RazorEngine.AddDefaultFeatures(engineFeatures); - RazorEngine.AddDefaultDesignTimeFeatures(engineFeatures); + RazorEngine.AddDefaultDesignTimeFeatures(builder.Configuration, engineFeatures); AddEngineFeaturesAndPhases(builder, engineFeatures); } @@ -110,7 +73,7 @@ namespace Microsoft.AspNetCore.Razor.Language { var engineFeatures = new List(); RazorEngine.AddDefaultFeatures(engineFeatures); - RazorEngine.AddDefaultRuntimeFeatures(engineFeatures); + RazorEngine.AddDefaultRuntimeFeatures(builder.Configuration, engineFeatures); AddEngineFeaturesAndPhases(builder, engineFeatures); } diff --git a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineBuilder.cs index 6f9c3be10c..3177c4b13d 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/RazorProjectEngineBuilder.cs @@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Razor.Language public abstract IList Phases { get; } - public abstract bool DesignTime { get; } + public abstract RazorConfiguration Configuration { get; } public abstract RazorProjectEngine Build(); } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineBuilderTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineBuilderTest.cs index 07272aeeee..5323ba3ffa 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineBuilderTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/DefaultRazorProjectEngineBuilderTest.cs @@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void Build_AddsFeaturesToRazorEngine() { // Arrange - var builder = new DefaultRazorProjectEngineBuilder(false, Mock.Of()); + var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of()); builder.Features.Add(Mock.Of()); builder.Features.Add(Mock.Of()); builder.Features.Add(Mock.Of()); @@ -33,7 +33,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void Build_AddsPhasesToRazorEngine() { // Arrange - var builder = new DefaultRazorProjectEngineBuilder(false, Mock.Of()); + var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of()); builder.Phases.Add(Mock.Of()); builder.Phases.Add(Mock.Of()); @@ -53,7 +53,7 @@ namespace Microsoft.AspNetCore.Razor.Language { // Arrange var fileSystem = Mock.Of(); - var builder = new DefaultRazorProjectEngineBuilder(false, fileSystem); + var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, fileSystem); // Act var projectEngine = builder.Build(); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorProjectEngineBuilderExtensionsTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorProjectEngineBuilderExtensionsTest.cs index d9c0630005..b3e91c29bc 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorProjectEngineBuilderExtensionsTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorProjectEngineBuilderExtensionsTest.cs @@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void SetImportFeature_SetsTheImportFeature() { // Arrange - var builder = new DefaultRazorProjectEngineBuilder(false, Mock.Of()); + var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of()); var testFeature1 = Mock.Of(); var testFeature2 = Mock.Of(); builder.Features.Add(testFeature1); @@ -32,7 +32,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void AddTargetExtension_CreatesAndAddsToTargetExtensionFeatureIfItDoesNotExist() { // Arrange - var builder = new DefaultRazorProjectEngineBuilder(false, Mock.Of()); + var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of()); var expectedExtension = Mock.Of(); // Act @@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void AddTargetExtension_UsesExistingFeatureIfExistsAndAddsTo() { // Arrange - var builder = new DefaultRazorProjectEngineBuilder(false, Mock.Of()); + var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of()); var codeTargetExtensionFeature = new DefaultRazorTargetExtensionFeature(); builder.Features.Add(codeTargetExtensionFeature); var expectedExtension = Mock.Of(); @@ -68,7 +68,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void AddDirective_CreatesAndAddsToDirectiveFeatureIfItDoesNotExist() { // Arrange - var builder = new DefaultRazorProjectEngineBuilder(false, Mock.Of()); + var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of()); var expectedDirective = Mock.Of(); // Act @@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Razor.Language public void AddDirective_UsesExistingFeatureIfExistsAndAddsTo() { // Arrange - var builder = new DefaultRazorProjectEngineBuilder(false, Mock.Of()); + var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of()); var directiveFeature = new DefaultRazorDirectiveFeature(); builder.Features.Add(directiveFeature); var expecteDirective = Mock.Of();