diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/AssemblyPartExtensions.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/AssemblyPartExtensions.cs index 94a7eb41c49a..a15d1155ae54 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/AssemblyPartExtensions.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/AssemblyPartExtensions.cs @@ -9,6 +9,7 @@ namespace Microsoft.AspNetCore.Mvc.ApplicationParts; /// /// Static class that adds methods to . /// +[Obsolete("Razor runtime compilation is obsolete and is not recommended for production scenarios. For production scenarios, use the default build time compilation. For development scenarios, use Hot Reload instead. For more information, visit https://aka.ms/aspnet/deprecate/003.", DiagnosticId = "ASPDEPR003")] public static class AssemblyPartExtensions { /// diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/MvcRazorRuntimeCompilationOptionsSetup.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/MvcRazorRuntimeCompilationOptionsSetup.cs index 33eae53219ab..78b648781bd9 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/MvcRazorRuntimeCompilationOptionsSetup.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/MvcRazorRuntimeCompilationOptionsSetup.cs @@ -6,7 +6,9 @@ namespace Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation; +#pragma warning disable ASPDEPR003 // Type or member is obsolete internal sealed class MvcRazorRuntimeCompilationOptionsSetup : IConfigureOptions +#pragma warning restore ASPDEPR003 // Type or member is obsolete { private readonly IWebHostEnvironment _hostingEnvironment; @@ -15,7 +17,9 @@ public MvcRazorRuntimeCompilationOptionsSetup(IWebHostEnvironment hostingEnviron _hostingEnvironment = hostingEnvironment ?? throw new ArgumentNullException(nameof(hostingEnvironment)); } +#pragma warning disable ASPDEPR003 // Type or member is obsolete public void Configure(MvcRazorRuntimeCompilationOptions options) +#pragma warning restore ASPDEPR003 // Type or member is obsolete { ArgumentNullException.ThrowIfNull(options); diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/RazorRuntimeCompilationMvcBuilderExtensions.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/RazorRuntimeCompilationMvcBuilderExtensions.cs index c6518101b0ee..071f204bc552 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/RazorRuntimeCompilationMvcBuilderExtensions.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/RazorRuntimeCompilationMvcBuilderExtensions.cs @@ -8,6 +8,7 @@ namespace Microsoft.Extensions.DependencyInjection; /// /// Static class that adds razor compilation extension methods. /// +[Obsolete("Razor runtime compilation is obsolete and is not recommended for production scenarios. For production scenarios, use the default build time compilation. For development scenarios, use Hot Reload instead. For more information, visit https://aka.ms/aspnet/deprecate/003.", DiagnosticId = "ASPDEPR003")] public static class RazorRuntimeCompilationMvcBuilderExtensions { /// diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/RazorRuntimeCompilationMvcCoreBuilderExtensions.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/RazorRuntimeCompilationMvcCoreBuilderExtensions.cs index c74402f64e69..6c9462972811 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/RazorRuntimeCompilationMvcCoreBuilderExtensions.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/DependencyInjection/RazorRuntimeCompilationMvcCoreBuilderExtensions.cs @@ -20,6 +20,7 @@ namespace Microsoft.Extensions.DependencyInjection; /// /// Static class that adds razor runtime compilation extension methods. /// +[Obsolete("Razor runtime compilation is obsolete and is not recommended for production scenarios. For production scenarios, use the default build time compilation. For development scenarios, use Hot Reload instead. For more information, visit https://aka.ms/aspnet/deprecate/003.", DiagnosticId = "ASPDEPR003")] public static class RazorRuntimeCompilationMvcCoreBuilderExtensions { /// diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/FileProviderRazorProjectFileSystem.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/FileProviderRazorProjectFileSystem.cs index d6045545f4da..631395910171 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/FileProviderRazorProjectFileSystem.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/FileProviderRazorProjectFileSystem.cs @@ -34,7 +34,9 @@ public override RazorProjectItem GetItem(string path, string? fileKind) path = NormalizeAndEnsureValidPath(path); var fileInfo = FileProvider.GetFileInfo(path); +#pragma warning disable ASPDEPR003 // Type or member is obsolete return new FileProviderRazorProjectItem(fileInfo, basePath: string.Empty, filePath: path, root: _hostingEnvironment.ContentRootPath, fileKind); +#pragma warning restore ASPDEPR003 // Type or member is obsolete } public override IEnumerable EnumerateItems(string path) @@ -63,7 +65,9 @@ private IEnumerable EnumerateFiles(IDirectoryContents director { var filePath = prefix + "/" + fileInfo.Name; +#pragma warning disable ASPDEPR003 // Type or member is obsolete yield return new FileProviderRazorProjectItem(fileInfo, basePath, filePath: filePath, root: _hostingEnvironment.ContentRootPath); +#pragma warning restore ASPDEPR003 // Type or member is obsolete } } } diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/FileProviderRazorProjectItem.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/FileProviderRazorProjectItem.cs index 2a05375f5c00..b867ac2d8e9c 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/FileProviderRazorProjectItem.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/FileProviderRazorProjectItem.cs @@ -9,6 +9,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation; /// /// A file provider . /// +[Obsolete("Razor runtime compilation is obsolete and is not recommended for production scenarios. For production scenarios, use the default build time compilation. For development scenarios, use Hot Reload instead. For more information, visit https://aka.ms/aspnet/deprecate/003.", DiagnosticId = "ASPDEPR003")] public class FileProviderRazorProjectItem : RazorProjectItem { private readonly string _root; diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/MvcRazorRuntimeCompilationOptions.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/MvcRazorRuntimeCompilationOptions.cs index dc4d8017b924..bf352f49114d 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/MvcRazorRuntimeCompilationOptions.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/MvcRazorRuntimeCompilationOptions.cs @@ -10,6 +10,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation; /// /// Used to configure razor compilation. /// +[Obsolete("Razor runtime compilation is obsolete and is not recommended for production scenarios. For production scenarios, use the default build time compilation. For development scenarios, use Hot Reload instead. For more information, visit https://aka.ms/aspnet/deprecate/003.", DiagnosticId = "ASPDEPR003")] public class MvcRazorRuntimeCompilationOptions { /// diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RazorReferenceManager.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RazorReferenceManager.cs index 6e077cbe7132..20ed11166df5 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RazorReferenceManager.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RazorReferenceManager.cs @@ -14,14 +14,18 @@ internal class RazorReferenceManager #pragma warning restore CA1852 // Seal internal types { private readonly ApplicationPartManager _partManager; +#pragma warning disable ASPDEPR003 // Type or member is obsolete private readonly MvcRazorRuntimeCompilationOptions _options; +#pragma warning restore ASPDEPR003 // Type or member is obsolete private object _compilationReferencesLock = new object(); private bool _compilationReferencesInitialized; private IReadOnlyList? _compilationReferences; public RazorReferenceManager( ApplicationPartManager partManager, +#pragma warning disable ASPDEPR003 // Type or member is obsolete IOptions options) +#pragma warning restore ASPDEPR003 // Type or member is obsolete { _partManager = partManager; _options = options.Value; diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RazorRuntimeCompilationHostingStartup.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RazorRuntimeCompilationHostingStartup.cs index 51f5959709cc..055104676e00 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RazorRuntimeCompilationHostingStartup.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RazorRuntimeCompilationHostingStartup.cs @@ -11,6 +11,8 @@ internal sealed class RazorRuntimeCompilationHostingStartup : IHostingStartup public void Configure(IWebHostBuilder builder) { // Add Razor services +#pragma warning disable ASPDEPR003 // Type or member is obsolete builder.ConfigureServices(RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices); +#pragma warning restore ASPDEPR003 // Type or member is obsolete } } diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeCompilationFileProvider.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeCompilationFileProvider.cs index 1a912345216b..228f3b33c303 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeCompilationFileProvider.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/src/RuntimeCompilationFileProvider.cs @@ -8,10 +8,14 @@ namespace Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation; internal sealed class RuntimeCompilationFileProvider { +#pragma warning disable ASPDEPR003 // Type or member is obsolete private readonly MvcRazorRuntimeCompilationOptions _options; +#pragma warning restore ASPDEPR003 // Type or member is obsolete private IFileProvider? _compositeFileProvider; +#pragma warning disable ASPDEPR003 // Type or member is obsolete public RuntimeCompilationFileProvider(IOptions options) +#pragma warning restore ASPDEPR003 // Type or member is obsolete { ArgumentNullException.ThrowIfNull(options); @@ -31,15 +35,19 @@ public IFileProvider FileProvider } } +#pragma warning disable ASPDEPR003 // Type or member is obsolete private static IFileProvider GetCompositeFileProvider(MvcRazorRuntimeCompilationOptions options) +#pragma warning restore ASPDEPR003 // Type or member is obsolete { var fileProviders = options.FileProviders; if (fileProviders.Count == 0) { +#pragma warning disable ASPDEPR003 // Type or member is obsolete var message = Resources.FormatFileProvidersAreRequired( typeof(MvcRazorRuntimeCompilationOptions).FullName, nameof(MvcRazorRuntimeCompilationOptions.FileProviders), typeof(IFileProvider).FullName); +#pragma warning restore ASPDEPR003 // Type or member is obsolete throw new InvalidOperationException(message); } else if (fileProviders.Count == 1) diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/DependencyInjection/RazorRuntimeCompilationMvcCoreBuilderExtensionsTest.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/DependencyInjection/RazorRuntimeCompilationMvcCoreBuilderExtensionsTest.cs index e0fb21625643..ebcc077929c6 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/DependencyInjection/RazorRuntimeCompilationMvcCoreBuilderExtensionsTest.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/DependencyInjection/RazorRuntimeCompilationMvcCoreBuilderExtensionsTest.cs @@ -19,7 +19,9 @@ public void AddServices_ReplacesRazorViewCompiler() .AddSingleton(); // Act +#pragma warning disable ASPDEPR003 // Type or member is obsolete RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(services); +#pragma warning restore ASPDEPR003 // Type or member is obsolete // Assert var serviceDescriptor = Assert.Single(services, service => service.ServiceType == typeof(IViewCompilerProvider)); @@ -34,7 +36,9 @@ public void AddServices_ReplacesActionDescriptorProvider() .AddSingleton(); // Act +#pragma warning disable ASPDEPR003 // Type or member is obsolete RazorRuntimeCompilationMvcCoreBuilderExtensions.AddServices(services); +#pragma warning restore ASPDEPR003 // Type or member is obsolete // Assert var serviceDescriptor = Assert.Single(services, service => service.ServiceType == typeof(IActionDescriptorProvider)); diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/FileProviderRazorProjectFileSystemTest.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/FileProviderRazorProjectFileSystemTest.cs index 2a38a5c4bc6f..65a95ce68aae 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/FileProviderRazorProjectFileSystemTest.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/FileProviderRazorProjectFileSystemTest.cs @@ -243,10 +243,12 @@ private static FileProviderRazorProjectFileSystem GetRazorProjectFileSystem( TestFileProvider fileProvider, string contentRootPath = "BasePath") { +#pragma warning disable ASPDEPR003 // Type or member is obsolete var options = Options.Create(new MvcRazorRuntimeCompilationOptions { FileProviders = { fileProvider } }); +#pragma warning restore ASPDEPR003 // Type or member is obsolete var compilationFileProvider = new RuntimeCompilationFileProvider(options); var fileSystem = new FileProviderRazorProjectFileSystem( compilationFileProvider, diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RazorReferenceManagerTest.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RazorReferenceManagerTest.cs index cc82836ea16b..9eedd521d487 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RazorReferenceManagerTest.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RazorReferenceManagerTest.cs @@ -15,7 +15,9 @@ public class RazorReferenceManagerTest public void GetCompilationReferences_CombinesApplicationPartAndOptionMetadataReferences() { // Arrange +#pragma warning disable ASPDEPR003 // Type or member is obsolete var options = new MvcRazorRuntimeCompilationOptions(); +#pragma warning restore ASPDEPR003 // Type or member is obsolete var additionalReferencePath = "additional-path"; options.AdditionalReferencePaths.Add(additionalReferencePath); diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RuntimeCompilationFileProviderTest.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RuntimeCompilationFileProviderTest.cs index 9e16d6a51a1d..ce2ead2dfd24 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RuntimeCompilationFileProviderTest.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RuntimeCompilationFileProviderTest.cs @@ -12,11 +12,13 @@ public class RuntimeCompilationFileProviderTest public void GetFileProvider_ThrowsIfNoConfiguredFileProviders() { // Arrange +#pragma warning disable ASPDEPR003 // Type or member is obsolete var expected = $"'{typeof(MvcRazorRuntimeCompilationOptions).FullName}.{nameof(MvcRazorRuntimeCompilationOptions.FileProviders)}' must " + $"not be empty. At least one '{typeof(IFileProvider).FullName}' is required to locate a view for " + "rendering."; var options = Options.Create(new MvcRazorRuntimeCompilationOptions()); +#pragma warning restore ASPDEPR003 // Type or member is obsolete var fileProvider = new RuntimeCompilationFileProvider(options); diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RuntimeViewCompilerTest.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RuntimeViewCompilerTest.cs index 8ed2580b4418..ca19f82a3115 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RuntimeViewCompilerTest.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/RuntimeViewCompilerTest.cs @@ -824,10 +824,12 @@ private static TestRazorViewCompiler GetViewCompiler( CSharpCompiler csharpCompiler = null) { fileProvider = fileProvider ?? new TestFileProvider(); +#pragma warning disable ASPDEPR003 // Type or member is obsolete var options = Options.Create(new MvcRazorRuntimeCompilationOptions { FileProviders = { fileProvider } }); +#pragma warning restore ASPDEPR003 // Type or member is obsolete var compilationFileProvider = new RuntimeCompilationFileProvider(options); referenceManager = referenceManager ?? CreateReferenceManager(); @@ -855,7 +857,9 @@ private static RazorReferenceManager CreateReferenceManager() var assembly = typeof(RuntimeViewCompilerTest).Assembly; applicationPartManager.ApplicationParts.Add(new AssemblyPart(assembly)); +#pragma warning disable ASPDEPR003 // Type or member is obsolete return new RazorReferenceManager(applicationPartManager, Options.Create(new MvcRazorRuntimeCompilationOptions())); +#pragma warning restore ASPDEPR003 // Type or member is obsolete } private class TestRazorViewCompiler : RuntimeViewCompiler diff --git a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/TestInfrastructure/TestRazorReferenceManager.cs b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/TestInfrastructure/TestRazorReferenceManager.cs index bf0e446704f5..285ce2842ffb 100644 --- a/src/Mvc/Mvc.Razor.RuntimeCompilation/test/TestInfrastructure/TestRazorReferenceManager.cs +++ b/src/Mvc/Mvc.Razor.RuntimeCompilation/test/TestInfrastructure/TestRazorReferenceManager.cs @@ -12,7 +12,9 @@ internal class TestRazorReferenceManager : RazorReferenceManager public TestRazorReferenceManager() : base( new ApplicationPartManager(), +#pragma warning disable ASPDEPR003 // Type or member is obsolete Options.Create(new MvcRazorRuntimeCompilationOptions())) +#pragma warning restore ASPDEPR003 // Type or member is obsolete { CompilationReferences = Array.Empty(); } diff --git a/src/Mvc/test/Mvc.FunctionalTests/ErrorPageTests.cs b/src/Mvc/test/Mvc.FunctionalTests/ErrorPageTests.cs index fd6c9f793e0a..87747166f36d 100644 --- a/src/Mvc/test/Mvc.FunctionalTests/ErrorPageTests.cs +++ b/src/Mvc/test/Mvc.FunctionalTests/ErrorPageTests.cs @@ -50,7 +50,9 @@ public async Task CompilationFailuresAreListedByErrorPageMiddleware() { // Arrange var factory = Factory.WithWebHostBuilder(b => b.UseStartup()); +#pragma warning disable ASPDEPR003 // Type or member is obsolete factory = factory.WithWebHostBuilder(b => b.ConfigureTestServices(serviceCollection => serviceCollection.Configure(ConfigureRuntimeCompilationOptions))); +#pragma warning restore ASPDEPR003 // Type or member is obsolete var client = factory.CreateDefaultClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html")); @@ -70,6 +72,7 @@ public async Task CompilationFailuresAreListedByErrorPageMiddleware() Assert.Contains(expected, content); Assert.DoesNotContain(PreserveCompilationContextMessage, content); +#pragma warning disable ASPDEPR003 // Type or member is obsolete static void ConfigureRuntimeCompilationOptions(MvcRazorRuntimeCompilationOptions options) { options.AdditionalReferencePaths.Add(typeof(string).Assembly.Location); @@ -81,6 +84,7 @@ static void ConfigureRuntimeCompilationOptions(MvcRazorRuntimeCompilationOptions options.AdditionalReferencePaths.Add(path); } } +#pragma warning restore ASPDEPR003 // Type or member is obsolete } [Fact] diff --git a/src/Mvc/test/Mvc.FunctionalTests/RazorBuildTest.cs b/src/Mvc/test/Mvc.FunctionalTests/RazorBuildTest.cs index 482b45fbd744..1808e8201977 100644 --- a/src/Mvc/test/Mvc.FunctionalTests/RazorBuildTest.cs +++ b/src/Mvc/test/Mvc.FunctionalTests/RazorBuildTest.cs @@ -24,6 +24,7 @@ public class RazorBuildTest : LoggedTest protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper) { base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper); +#pragma warning disable ASPDEPR003 // Type or member is obsolete Factory = new MvcTestFixture(LoggerFactory) .WithWebHostBuilder(b => b.ConfigureTestServices(serviceCollection => serviceCollection.Configure(ConfigureRuntimeCompilationOptions))); @@ -36,6 +37,7 @@ static void ConfigureRuntimeCompilationOptions(MvcRazorRuntimeCompilationOptions options.AdditionalReferencePaths.Add(path); } } +#pragma warning restore ASPDEPR003 // Type or member is obsolete Client = Factory.CreateDefaultClient(); } diff --git a/src/Mvc/test/Mvc.FunctionalTests/RazorRuntimeCompilationHostingStartupTest.cs b/src/Mvc/test/Mvc.FunctionalTests/RazorRuntimeCompilationHostingStartupTest.cs index 1f718596d577..da884b521080 100644 --- a/src/Mvc/test/Mvc.FunctionalTests/RazorRuntimeCompilationHostingStartupTest.cs +++ b/src/Mvc/test/Mvc.FunctionalTests/RazorRuntimeCompilationHostingStartupTest.cs @@ -21,6 +21,7 @@ public class RazorRuntimeCompilationHostingStartupTest : LoggedTest protected override void Initialize(TestContext context, MethodInfo methodInfo, object[] testMethodArguments, ITestOutputHelper testOutputHelper) { base.Initialize(context, methodInfo, testMethodArguments, testOutputHelper); +#pragma warning disable ASPDEPR003 // Type or member is obsolete Factory = new MvcTestFixture(LoggerFactory) .WithWebHostBuilder(b => b.UseStartup()) .WithWebHostBuilder(b => b.ConfigureTestServices(serviceCollection => serviceCollection.Configure(ConfigureRuntimeCompilationOptions))); @@ -34,6 +35,7 @@ static void ConfigureRuntimeCompilationOptions(MvcRazorRuntimeCompilationOptions options.AdditionalReferencePaths.Add(path); } } +#pragma warning restore ASPDEPR003 // Type or member is obsolete Client = Factory.CreateDefaultClient(); }