ソースを参照

Clean up obsolete APIs in MVC (#28337)

Safia Abdalla 5 年 前
コミット
7a2f5cc0c4
69 ファイル変更86 行追加194 行削除
  1. 2 2
      src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelMetadataIdentity.cs
  2. 10 7
      src/Mvc/Mvc.Core/src/CompatibilityVersion.cs
  3. 3 0
      src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreMvcBuilderExtensions.cs
  4. 3 0
      src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreMvcCoreBuilderExtensions.cs
  5. 0 2
      src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs
  6. 4 1
      src/Mvc/Mvc.Core/src/Infrastructure/ConfigureCompatibilityOptions.cs
  7. 5 1
      src/Mvc/Mvc.Core/src/Infrastructure/MvcCompatibilityOptions.cs
  8. 0 27
      src/Mvc/Mvc.Core/src/Infrastructure/MvcOptionsConfigureCompatibilityOptions.cs
  9. 0 15
      src/Mvc/Mvc.Core/src/Infrastructure/ObjectResultExecutor.cs
  10. 1 0
      src/Mvc/Mvc.Core/src/Infrastructure/PhysicalFileResultExecutor.cs
  11. 1 10
      src/Mvc/Mvc.Core/src/ModelBinding/Validation/ValidationVisitor.cs
  12. 0 3
      src/Mvc/Mvc.Core/src/PublicAPI.Shipped.txt
  13. 0 1
      src/Mvc/Mvc.Core/test/DependencyInjection/MvcCoreServiceCollectionExtensionsTest.cs
  14. 3 1
      src/Mvc/Mvc.Core/test/Infrastructure/ConfigureCompatibilityOptionsTest.cs
  15. 0 6
      src/Mvc/Mvc.Localization/test/TestStringLocalizer.cs
  16. 2 2
      src/Mvc/Mvc.Razor/src/Compilation/CompiledViewDescriptor.cs
  17. 1 1
      src/Mvc/Mvc.Razor/src/Compilation/RazorViewAttribute.cs
  18. 2 2
      src/Mvc/Mvc.TagHelpers/src/ImageTagHelper.cs
  19. 0 1
      src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Shipped.txt
  20. 0 14
      src/Mvc/Mvc.ViewFeatures/src/ViewComponentResultExecutor.cs
  21. 0 1
      src/Mvc/Mvc/test/MvcServiceCollectionExtensionsTest.cs
  22. 2 3
      src/Mvc/benchmarkapps/RazorRendering/Startup.cs
  23. 1 2
      src/Mvc/samples/MvcSandbox/Startup.cs
  24. 1 2
      src/Mvc/test/WebSites/ApiExplorerWebSite/Startup.cs
  25. 1 2
      src/Mvc/test/WebSites/ApplicationModelWebSite/Startup.cs
  26. 0 1
      src/Mvc/test/WebSites/BasicWebSite/Startup.cs
  27. 1 2
      src/Mvc/test/WebSites/BasicWebSite/StartupRequestLimitSize.cs
  28. 1 2
      src/Mvc/test/WebSites/BasicWebSite/StartupWhereReadingRequestBodyThrows.cs
  29. 1 2
      src/Mvc/test/WebSites/BasicWebSite/StartupWithCookieTempDataProviderAndCookieConsent.cs
  30. 1 2
      src/Mvc/test/WebSites/BasicWebSite/StartupWithCustomInvalidModelStateFactory.cs
  31. 0 1
      src/Mvc/test/WebSites/BasicWebSite/StartupWithNewtonsoftJson.cs
  32. 1 2
      src/Mvc/test/WebSites/BasicWebSite/StartupWithSessionTempDataProvider.cs
  33. 1 2
      src/Mvc/test/WebSites/BasicWebSite/StartupWithSystemTextJson.cs
  34. 0 1
      src/Mvc/test/WebSites/BasicWebSite/StartupWithoutEndpointRouting.cs
  35. 1 2
      src/Mvc/test/WebSites/ControllersFromServicesWebSite/Startup.cs
  36. 1 2
      src/Mvc/test/WebSites/CorsWebSite/Startup.cs
  37. 1 2
      src/Mvc/test/WebSites/ErrorPageMiddlewareWebSite/Startup.cs
  38. 1 2
      src/Mvc/test/WebSites/FilesWebSite/Startup.cs
  39. 1 2
      src/Mvc/test/WebSites/FormatterWebSite/Startup.cs
  40. 2 3
      src/Mvc/test/WebSites/FormatterWebSite/StartupWithComplexParentValidation.cs
  41. 1 2
      src/Mvc/test/WebSites/FormatterWebSite/StartupWithJsonInputFormatter.cs
  42. 1 2
      src/Mvc/test/WebSites/GenericHostWebSite/Startup.cs
  43. 1 2
      src/Mvc/test/WebSites/HtmlGenerationWebSite/Startup.cs
  44. 1 2
      src/Mvc/test/WebSites/RazorBuildWebSite/Startup.cs
  45. 1 2
      src/Mvc/test/WebSites/RazorPagesWebSite/Startup.cs
  46. 1 2
      src/Mvc/test/WebSites/RazorPagesWebSite/StartupWithBasePath.cs
  47. 1 2
      src/Mvc/test/WebSites/RazorPagesWebSite/StartupWithClientValidationDisabled.cs
  48. 1 2
      src/Mvc/test/WebSites/RazorPagesWebSite/StartupWithoutEndpointRouting.cs
  49. 1 2
      src/Mvc/test/WebSites/RazorWebSite/Startup.cs
  50. 1 2
      src/Mvc/test/WebSites/RazorWebSite/StartupDataAnnotations.cs
  51. 1 2
      src/Mvc/test/WebSites/RoutingWebSite/Startup.cs
  52. 1 2
      src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamic.cs
  53. 1 2
      src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamicAndRazorPages.cs
  54. 1 2
      src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamicOrder.cs
  55. 1 2
      src/Mvc/test/WebSites/RoutingWebSite/StartupForFallback.cs
  56. 2 3
      src/Mvc/test/WebSites/RoutingWebSite/StartupForLinkGenerator.cs
  57. 1 2
      src/Mvc/test/WebSites/RoutingWebSite/StartupRoutingDifferentBranches.cs
  58. 1 1
      src/Mvc/test/WebSites/SecurityWebSite/Startup.cs
  59. 1 2
      src/Mvc/test/WebSites/SecurityWebSite/StartupWithGlobalAuthFilter.cs
  60. 1 2
      src/Mvc/test/WebSites/SecurityWebSite/StartupWithGlobalAuthFilterWithoutEndpointRouting.cs
  61. 1 2
      src/Mvc/test/WebSites/SecurityWebSite/StartupWithGlobalDenyAnonymousFilter.cs
  62. 1 2
      src/Mvc/test/WebSites/SecurityWebSite/StartupWithGlobalDenyAnonymousFilterWithUseMvc.cs
  63. 1 1
      src/Mvc/test/WebSites/SecurityWebSite/StartupWithRequireAuth.cs
  64. 2 3
      src/Mvc/test/WebSites/SecurityWebSite/StartupWithUseMvc.cs
  65. 1 2
      src/Mvc/test/WebSites/SimpleWebSite/Startup.cs
  66. 1 2
      src/Mvc/test/WebSites/TagHelpersWebSite/Startup.cs
  67. 1 2
      src/Mvc/test/WebSites/VersioningWebSite/Startup.cs
  68. 1 4
      src/Mvc/test/WebSites/XmlFormattersWebSite/Startup.cs
  69. 1 2
      src/Tools/Microsoft.dotnet-openapi/test/TestContent/Startup.cs.txt

+ 2 - 2
src/Mvc/Mvc.Abstractions/src/ModelBinding/Metadata/ModelMetadataIdentity.cs

@@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
         /// <param name="name">The name of the property.</param>
         /// <param name="containerType">The container type of the model property.</param>
         /// <returns>A <see cref="ModelMetadataIdentity"/>.</returns>
-        [Obsolete("This API is obsolete and may be removed in a future release.")]
+        [Obsolete("This API is obsolete and may be removed in a future release. Please use the overload that takes a PropertyInfo object.")] // Remove after .NET 6.
         public static ModelMetadataIdentity ForProperty(
             Type modelType,
             string name,
@@ -224,7 +224,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Metadata
                 ContainerType == other.ContainerType &&
                 ModelType == other.ModelType &&
                 Name == other.Name &&
-                ParameterInfo == other.ParameterInfo && 
+                ParameterInfo == other.ParameterInfo &&
                 PropertyInfo == other.PropertyInfo &&
                 ConstructorInfo == other.ConstructorInfo;
         }

+ 10 - 7
src/Mvc/Mvc.Core/src/CompatibilityVersion.cs

@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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 System;
@@ -37,14 +37,17 @@ namespace Microsoft.AspNetCore.Mvc
     /// settings to match a particular minor release of ASP.NET Core MVC.
     /// </para>
     /// </remarks>
+    // Remove after .NET 6.
+    [Obsolete("This API is obsolete and will be removed in a future version. Consider removing usages.",
+        DiagnosticId = "ASP5001",
+        UrlFormat = "https://aka.ms/aspnetcore-warnings/{0}")]
     public enum CompatibilityVersion
     {
         /// <summary>
         /// Sets the default value of settings on <see cref="MvcOptions"/> to match the behavior of
         /// ASP.NET Core MVC 2.0.
         /// </summary>
-        [Obsolete("This " + nameof(CompatibilityVersion) + " value is obsolete. The recommended alternatives are " +
-            nameof(Version_3_0) + " or later.")]
+        [Obsolete("This " + nameof(CompatibilityVersion) + " value is obsolete.")]
         Version_2_0,
 
         /// <summary>
@@ -55,8 +58,7 @@ namespace Microsoft.AspNetCore.Mvc
         /// ASP.NET Core MVC 2.1 introduced a compatibility switch for
         /// <c>MvcJsonOptions.AllowInputFormatterExceptionMessages</c>. This is now a regular property.
         /// </remarks>
-        [Obsolete("This " + nameof(CompatibilityVersion) + " value is obsolete. The recommended alternatives are " +
-            nameof(Version_3_0) + " or later.")]
+        [Obsolete("This " + nameof(CompatibilityVersion) + " value is obsolete.")]
         Version_2_1,
 
         /// <summary>
@@ -72,20 +74,21 @@ namespace Microsoft.AspNetCore.Mvc
         /// </list>
         /// All of the above are now regular properties.
         /// </remarks>
-        [Obsolete("This " + nameof(CompatibilityVersion) + " value is obsolete. The recommended alternatives are " +
-            nameof(Version_3_0) + " or later.")]
+        [Obsolete("This " + nameof(CompatibilityVersion) + " value is obsolete.")]
         Version_2_2,
 
         /// <summary>
         /// Sets the default value of settings on <see cref="MvcOptions"/> and other <c>Options</c> types to match
         /// the behavior of ASP.NET Core MVC 3.0.
         /// </summary>
+        [Obsolete("This " + nameof(CompatibilityVersion) + " value is obsolete.")]
         Version_3_0,
 
         /// <summary>
         /// Sets the default value of settings on <see cref="MvcOptions"/> to match the latest release. Use this
         /// value with care, upgrading minor versions will cause breaking changes when using <see cref="Latest"/>.
         /// </summary>
+        [Obsolete("This " + nameof(CompatibilityVersion) + " value is obsolete.")]
         Latest = int.MaxValue,
     }
 }

+ 3 - 0
src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreMvcBuilderExtensions.cs

@@ -178,6 +178,9 @@ namespace Microsoft.Extensions.DependencyInjection
         /// <param name="builder">The <see cref="IMvcBuilder"/>.</param>
         /// <param name="version">The <see cref="CompatibilityVersion"/> value to configure.</param>
         /// <returns>The <see cref="IMvcBuilder"/>.</returns>
+        [Obsolete("This API is obsolete and will be removed in a future version. Consider removing usages.",
+            DiagnosticId = "ASP5001",
+            UrlFormat = "https://aka.ms/aspnetcore-warnings/{0}")]
         public static IMvcBuilder SetCompatibilityVersion(this IMvcBuilder builder, CompatibilityVersion version)
         {
             if (builder == null)

+ 3 - 0
src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreMvcCoreBuilderExtensions.cs

@@ -254,6 +254,9 @@ namespace Microsoft.Extensions.DependencyInjection
         /// <param name="builder">The <see cref="IMvcCoreBuilder"/>.</param>
         /// <param name="version">The <see cref="CompatibilityVersion"/> value to configure.</param>
         /// <returns>The <see cref="IMvcCoreBuilder"/>.</returns>
+        [Obsolete("This API is obsolete and will be removed in a future version. Consider removing usages.",
+            DiagnosticId = "ASP5001",
+            UrlFormat = "https://aka.ms/aspnetcore-warnings/{0}")]
         public static IMvcCoreBuilder SetCompatibilityVersion(this IMvcCoreBuilder builder, CompatibilityVersion version)
         {
             if (builder == null)

+ 0 - 2
src/Mvc/Mvc.Core/src/DependencyInjection/MvcCoreServiceCollectionExtensions.cs

@@ -143,8 +143,6 @@ namespace Microsoft.Extensions.DependencyInjection
             //
             services.TryAddEnumerable(
                 ServiceDescriptor.Transient<IConfigureOptions<MvcOptions>, MvcCoreMvcOptionsSetup>());
-            services.TryAddEnumerable(
-                ServiceDescriptor.Transient<IPostConfigureOptions<MvcOptions>, MvcOptionsConfigureCompatibilityOptions>());
             services.TryAddEnumerable(
                 ServiceDescriptor.Transient<IPostConfigureOptions<MvcOptions>, MvcCoreMvcOptionsSetup>());
             services.TryAddEnumerable(

+ 4 - 1
src/Mvc/Mvc.Core/src/Infrastructure/ConfigureCompatibilityOptions.cs

@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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 System;
@@ -14,6 +14,9 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
     /// by application code.
     /// </summary>
     /// <typeparam name="TOptions"></typeparam>
+    [Obsolete("This API is obsolete and will be removed in a future version. Consider removing usages.",
+        DiagnosticId = "ASP5001",
+        UrlFormat = "https://aka.ms/aspnetcore-warnings/{0}")]
     public abstract class ConfigureCompatibilityOptions<TOptions> : IPostConfigureOptions<TOptions>
         where TOptions : class, IEnumerable<ICompatibilitySwitch>
     {

+ 5 - 1
src/Mvc/Mvc.Core/src/Infrastructure/MvcCompatibilityOptions.cs

@@ -1,6 +1,7 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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 System;
 using Microsoft.Extensions.DependencyInjection;
 
 namespace Microsoft.AspNetCore.Mvc.Infrastructure
@@ -13,6 +14,9 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
     /// calling <see cref="MvcCoreMvcBuilderExtensions.SetCompatibilityVersion(IMvcBuilder, CompatibilityVersion)"/>
     /// or <see cref="MvcCoreMvcCoreBuilderExtensions.SetCompatibilityVersion(IMvcCoreBuilder, CompatibilityVersion)"/>.
     /// </remarks>
+    [Obsolete("This API is obsolete and will be removed in a future version. Consider removing usages.",
+        DiagnosticId = "ASP5001",
+        UrlFormat = "https://aka.ms/aspnetcore-warnings/{0}")]
     public class MvcCompatibilityOptions
     {
         /// <summary>

+ 0 - 27
src/Mvc/Mvc.Core/src/Infrastructure/MvcOptionsConfigureCompatibilityOptions.cs

@@ -1,27 +0,0 @@
-// 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 System.Collections.Generic;
-using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Options;
-
-namespace Microsoft.AspNetCore.Mvc.Infrastructure
-{
-    internal class MvcOptionsConfigureCompatibilityOptions : ConfigureCompatibilityOptions<MvcOptions>
-    {
-        public MvcOptionsConfigureCompatibilityOptions(
-            ILoggerFactory loggerFactory,
-            IOptions<MvcCompatibilityOptions> compatibilityOptions)
-            : base(loggerFactory, compatibilityOptions)
-        {
-        }
-
-        protected override IReadOnlyDictionary<string, object> DefaultValues
-        {
-            get
-            {
-                return new Dictionary<string, object>();
-            }
-        }
-    }
-}

+ 0 - 15
src/Mvc/Mvc.Core/src/Infrastructure/ObjectResultExecutor.cs

@@ -22,21 +22,6 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
     {
         private readonly AsyncEnumerableReader _asyncEnumerableReaderFactory;
 
-        /// <summary>
-        /// Creates a new <see cref="ObjectResultExecutor"/>.
-        /// </summary>
-        /// <param name="formatterSelector">The <see cref="OutputFormatterSelector"/>.</param>
-        /// <param name="writerFactory">The <see cref="IHttpResponseStreamWriterFactory"/>.</param>
-        /// <param name="loggerFactory">The <see cref="ILoggerFactory"/>.</param>
-        [Obsolete("This constructor is obsolete and will be removed in a future release.")]
-        public ObjectResultExecutor(
-            OutputFormatterSelector formatterSelector,
-            IHttpResponseStreamWriterFactory writerFactory,
-            ILoggerFactory loggerFactory)
-            : this(formatterSelector, writerFactory, loggerFactory, mvcOptions: null)
-        {
-        }
-
         /// <summary>
         /// Creates a new <see cref="ObjectResultExecutor"/>.
         /// </summary>

+ 1 - 0
src/Mvc/Mvc.Core/src/Infrastructure/PhysicalFileResultExecutor.cs

@@ -127,6 +127,7 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
                     FileOptions.Asynchronous | FileOptions.SequentialScan);
         }
 
+
         /// <summary>
         /// Get the file metadata for a path.
         /// </summary>

+ 1 - 10
src/Mvc/Mvc.Core/src/ModelBinding/Validation/ValidationVisitor.cs

@@ -144,15 +144,6 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
         /// </summary>
         public bool ValidateComplexTypesIfChildValidationFails { get; set; }
 
-        /// <summary>
-        ///  Gets or sets a value that determines if <see cref="ValidationVisitor"/> can short circuit validation when a model
-        ///  does not have any associated validators.
-        /// </summary>
-        /// <value>The default value is <see langword="true"/>.</value>
-        /// <remarks>This property is currently ignored.</remarks>
-        [Obsolete("This property is deprecated and is no longer used by the runtime.")]
-        public bool AllowShortCircuitingValidationWhenNoValidatorsArePresent { get; set; } = true;
-
         /// <summary>
         /// Validates a object.
         /// </summary>
@@ -388,7 +379,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation
         }
 
         /// <summary>
-        /// Validate complex types, this covers everything VisitSimpleType does not i.e. both enumerations and complex types. 
+        /// Validate complex types, this covers everything VisitSimpleType does not i.e. both enumerations and complex types.
         /// </summary>
         /// <param name="defaultStrategy">The default validation strategy to use.</param>
         /// <returns><see langword="true" /> if valid, otherwise <see langword="false" />.</returns>

+ 0 - 3
src/Mvc/Mvc.Core/src/PublicAPI.Shipped.txt

@@ -617,8 +617,6 @@ Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidateNeverAttribute
 Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidateNeverAttribute.ShouldValidateEntry(Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationEntry entry, Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationEntry parentEntry) -> bool
 Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidateNeverAttribute.ValidateNeverAttribute() -> void
 Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor
-Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.AllowShortCircuitingValidationWhenNoValidatorsArePresent.get -> bool
-Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.AllowShortCircuitingValidationWhenNoValidatorsArePresent.set -> void
 Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.MaxValidationDepth.get -> int?
 Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.MaxValidationDepth.set -> void
 Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.StateManager
@@ -1402,7 +1400,6 @@ virtual Microsoft.AspNetCore.Mvc.ModelBinding.Validation.ValidationVisitor.Visit
 ~Microsoft.AspNetCore.Mvc.Infrastructure.ModelStateInvalidFilter.OnActionExecuting(Microsoft.AspNetCore.Mvc.Filters.ActionExecutingContext context) -> void
 ~Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor.FormatterSelector.get -> Microsoft.AspNetCore.Mvc.Infrastructure.OutputFormatterSelector
 ~Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor.Logger.get -> Microsoft.Extensions.Logging.ILogger
-~Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor.ObjectResultExecutor(Microsoft.AspNetCore.Mvc.Infrastructure.OutputFormatterSelector formatterSelector, Microsoft.AspNetCore.Mvc.Infrastructure.IHttpResponseStreamWriterFactory writerFactory, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void
 ~Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor.ObjectResultExecutor(Microsoft.AspNetCore.Mvc.Infrastructure.OutputFormatterSelector formatterSelector, Microsoft.AspNetCore.Mvc.Infrastructure.IHttpResponseStreamWriterFactory writerFactory, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Mvc.MvcOptions> mvcOptions) -> void
 ~Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor.WriterFactory.get -> System.Func<System.IO.Stream, System.Text.Encoding, System.IO.TextWriter>
 ~Microsoft.AspNetCore.Mvc.Infrastructure.PhysicalFileResultExecutor.PhysicalFileResultExecutor(Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) -> void

+ 0 - 1
src/Mvc/Mvc.Core/test/DependencyInjection/MvcCoreServiceCollectionExtensionsTest.cs

@@ -246,7 +246,6 @@ namespace Microsoft.AspNetCore.Mvc
                         typeof(IPostConfigureOptions<MvcOptions>),
                         new Type[]
                         {
-                            typeof(MvcOptionsConfigureCompatibilityOptions),
                             typeof(MvcCoreMvcOptionsSetup),
                         }
                     },

+ 3 - 1
src/Mvc/Mvc.Core/test/Infrastructure/ConfigureCompatibilityOptionsTest.cs

@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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 System.Collections;
@@ -8,8 +8,10 @@ using Microsoft.Extensions.Logging.Abstractions;
 using Microsoft.Extensions.Options;
 using Xunit;
 
+#pragma warning disable ASP5001 // Type or member is obsolete
 namespace Microsoft.AspNetCore.Mvc.Infrastructure
 {
+    [System.Obsolete]
     public class ConfigureCompatibilityOptionsTest
     {
         [Fact]

+ 0 - 6
src/Mvc/Mvc.Localization/test/TestStringLocalizer.cs

@@ -67,11 +67,5 @@ namespace Microsoft.AspNetCore.Mvc.Localization.Test
 
             return allStrings;
         }
-
-        [Obsolete("This method is obsolete. Use `CurrentCulture` and `CurrentUICulture` instead.")]
-        public IStringLocalizer WithCulture(CultureInfo culture)
-        {
-            return new TestStringLocalizer(culture);
-        }
     }
 }

+ 2 - 2
src/Mvc/Mvc.Razor/src/Compilation/CompiledViewDescriptor.cs

@@ -78,7 +78,7 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Compilation
         /// </summary>
         public string RelativePath { get; set; }
 
-#pragma warning disable CS0618 
+#pragma warning disable CS0618
         // Type or member is obsolete
         /// <summary>
         /// Gets or sets the <see cref="RazorViewAttribute"/> decorating the view.
@@ -105,4 +105,4 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Compilation
         /// </summary>
         public Type Type => Item?.Type;
     }
-}
+}

+ 1 - 1
src/Mvc/Mvc.Razor/src/Compilation/RazorViewAttribute.cs

@@ -33,4 +33,4 @@ namespace Microsoft.AspNetCore.Mvc.Razor.Compilation
         /// </summary>
         public Type ViewType { get; }
     }
-}
+}

+ 2 - 2
src/Mvc/Mvc.TagHelpers/src/ImageTagHelper.cs

@@ -95,14 +95,14 @@ namespace Microsoft.AspNetCore.Mvc.TagHelpers
         /// Gets the <see cref="IWebHostEnvironment"/> for the application.
         /// This property is obsolete and will be removed in a future version.
         /// </summary>
-        [Obsolete("This property is obsolete and will be removed in a future version.")]
+        [Obsolete("This property is obsolete and will be removed in a future version.")] // Remove after .NET 6.
         protected internal IWebHostEnvironment HostingEnvironment { get; }
 
         /// <summary>
         /// Gets the <see cref="IMemoryCache"/> used to store globbed urls.
         /// This property is obsolete and will be removed in a future version.
         /// </summary>
-        [Obsolete("This property is obsolete and will be removed in a future version.")]
+        [Obsolete("This property is obsolete and will be removed in a future version.")] // Remove after .NET 6.
         protected internal IMemoryCache Cache { get; }
 
         internal IFileVersionProvider FileVersionProvider { get; private set; }

+ 0 - 1
src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Shipped.txt

@@ -793,7 +793,6 @@ virtual Microsoft.AspNetCore.Mvc.Rendering.MvcForm.GenerateEndForm() -> void
 ~Microsoft.AspNetCore.Mvc.ViewFeatures.TemplateInfo.HtmlFieldPrefix.set -> void
 ~Microsoft.AspNetCore.Mvc.ViewFeatures.TemplateInfo.TemplateInfo(Microsoft.AspNetCore.Mvc.ViewFeatures.TemplateInfo original) -> void
 ~Microsoft.AspNetCore.Mvc.ViewFeatures.TemplateInfo.Visited(Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExplorer modelExplorer) -> bool
-~Microsoft.AspNetCore.Mvc.ViewFeatures.ViewComponentResultExecutor.ViewComponentResultExecutor(Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Mvc.MvcViewOptions> mvcHelperOptions, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, System.Text.Encodings.Web.HtmlEncoder htmlEncoder, Microsoft.AspNetCore.Mvc.ModelBinding.IModelMetadataProvider modelMetadataProvider, Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionaryFactory tempDataDictionaryFactory) -> void
 ~Microsoft.AspNetCore.Mvc.ViewFeatures.ViewComponentResultExecutor.ViewComponentResultExecutor(Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Mvc.MvcViewOptions> mvcHelperOptions, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory, System.Text.Encodings.Web.HtmlEncoder htmlEncoder, Microsoft.AspNetCore.Mvc.ModelBinding.IModelMetadataProvider modelMetadataProvider, Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionaryFactory tempDataDictionaryFactory, Microsoft.AspNetCore.Mvc.Infrastructure.IHttpResponseStreamWriterFactory writerFactory) -> void
 ~Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary.Add(System.Collections.Generic.KeyValuePair<string, object> item) -> void
 ~Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary.Add(string key, object value) -> void

+ 0 - 14
src/Mvc/Mvc.ViewFeatures/src/ViewComponentResultExecutor.cs

@@ -31,20 +31,6 @@ namespace Microsoft.AspNetCore.Mvc.ViewFeatures
         private readonly ITempDataDictionaryFactory _tempDataDictionaryFactory;
         private IHttpResponseStreamWriterFactory _writerFactory;
 
-        /// <summary>
-        /// This constructor is obsolete and will be removed in a future version.
-        /// </summary>
-        [Obsolete("This constructor is obsolete and will be removed in a future version.")]
-        public ViewComponentResultExecutor(
-            IOptions<MvcViewOptions> mvcHelperOptions,
-            ILoggerFactory loggerFactory,
-            HtmlEncoder htmlEncoder,
-            IModelMetadataProvider modelMetadataProvider,
-            ITempDataDictionaryFactory tempDataDictionaryFactory)
-            : this(mvcHelperOptions, loggerFactory, htmlEncoder, modelMetadataProvider, tempDataDictionaryFactory, null)
-        {
-        }
-
         /// <summary>
         /// Initialize a new instance of <see cref="ViewComponentResultExecutor"/>
         /// </summary>

+ 0 - 1
src/Mvc/Mvc/test/MvcServiceCollectionExtensionsTest.cs

@@ -499,7 +499,6 @@ namespace Microsoft.AspNetCore.Mvc
                         typeof(IPostConfigureOptions<MvcOptions>),
                         new[]
                         {
-                            typeof(MvcOptionsConfigureCompatibilityOptions),
                             typeof(MvcCoreMvcOptionsSetup),
                         }
                     },

+ 2 - 3
src/Mvc/benchmarkapps/RazorRendering/Startup.cs

@@ -16,8 +16,7 @@ public class Startup
     {
         services.AddScoped<List<DataA>>(_ => DataA);
         services.AddScoped<List<DataB>>(_ => DataB);
-        services.AddMvc()
-            .SetCompatibilityVersion(CompatibilityVersion.Latest);
+        services.AddMvc();
     }
 
     public void Configure(IApplicationBuilder app, IHostingEnvironment env)
@@ -81,4 +80,4 @@ public class Startup
             .UseContentRoot(Directory.GetCurrentDirectory())
             .UseStartup<Startup>();
     }
-}
+}

+ 1 - 2
src/Mvc/samples/MvcSandbox/Startup.cs

@@ -26,8 +26,7 @@ namespace MvcSandbox
                 options.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer);
             });
             services.AddServerSideBlazor();
-            services.AddMvc()
-                .SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Latest);
+            services.AddMvc();
         }
 
         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

+ 1 - 2
src/Mvc/test/WebSites/ApiExplorerWebSite/Startup.cs

@@ -36,8 +36,7 @@ namespace ApiExplorerWebSite
                 options.OutputFormatters.Clear();
                 options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
             })
-            .AddNewtonsoftJson()
-            .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            .AddNewtonsoftJson();
 
             services.AddSingleton<ApiExplorerDataFilter>();
             services.AddSingleton<IActionDescriptorChangeProvider, ActionDescriptorChangeProvider>();

+ 1 - 2
src/Mvc/test/WebSites/ApplicationModelWebSite/Startup.cs

@@ -21,8 +21,7 @@ namespace ApplicationModelWebSite
                 options.Conventions.Add(new FromHeaderConvention());
                 options.Conventions.Add(new MultipleAreasControllerConvention());
                 options.Conventions.Add(new CloneActionConvention());
-            })
-            .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            });
 
             services.AddRazorPages();
         }

+ 0 - 1
src/Mvc/test/WebSites/BasicWebSite/Startup.cs

@@ -14,7 +14,6 @@ namespace BasicWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddMvc()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest)
                 .AddNewtonsoftJson()
                 .AddXmlDataContractSerializerFormatters();
 

+ 1 - 2
src/Mvc/test/WebSites/BasicWebSite/StartupRequestLimitSize.cs

@@ -17,8 +17,7 @@ namespace BasicWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddMvc()
-                .AddNewtonsoftJson()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson();
             services.ConfigureBaseWebSiteAuthPolicies();
         }
 

+ 1 - 2
src/Mvc/test/WebSites/BasicWebSite/StartupWhereReadingRequestBodyThrows.cs

@@ -20,8 +20,7 @@ namespace BasicWebSite
         // Set up application services
         public void ConfigureServices(IServiceCollection services)
         {
-            services.AddControllersWithViews()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            services.AddControllersWithViews();
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/BasicWebSite/StartupWithCookieTempDataProviderAndCookieConsent.cs

@@ -12,8 +12,7 @@ namespace BasicWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddMvc()
-                .AddNewtonsoftJson()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson();
 
             services.Configure<CookiePolicyOptions>(o =>
             {

+ 1 - 2
src/Mvc/test/WebSites/BasicWebSite/StartupWithCustomInvalidModelStateFactory.cs

@@ -19,8 +19,7 @@ namespace BasicWebSite
 
             services
                 .AddMvc()
-                .AddNewtonsoftJson()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson();
 
             services.Configure<ApiBehaviorOptions>(options =>
             {

+ 0 - 1
src/Mvc/test/WebSites/BasicWebSite/StartupWithNewtonsoftJson.cs

@@ -13,7 +13,6 @@ namespace BasicWebSite
         {
             services
                 .AddMvc()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest)
                 .AddNewtonsoftJson();
         }
 

+ 1 - 2
src/Mvc/test/WebSites/BasicWebSite/StartupWithSessionTempDataProvider.cs

@@ -14,8 +14,7 @@ namespace BasicWebSite
             // CookieTempDataProvider is the default ITempDataProvider, so we must override it with session.
             services
                 .AddMvc()
-                .AddSessionStateTempDataProvider()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddSessionStateTempDataProvider();
             services.AddSession();
 
             services.ConfigureBaseWebSiteAuthPolicies();

+ 1 - 2
src/Mvc/test/WebSites/BasicWebSite/StartupWithSystemTextJson.cs

@@ -12,8 +12,7 @@ namespace BasicWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             services
-                .AddMvc()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddMvc();
 
             services.AddSingleton<ContactsRepository>();
         }

+ 0 - 1
src/Mvc/test/WebSites/BasicWebSite/StartupWithoutEndpointRouting.cs

@@ -36,7 +36,6 @@ namespace BasicWebSite
 
                     options.EnableEndpointRouting = false;
                 })
-                .SetCompatibilityVersion(CompatibilityVersion.Latest)
                 .AddNewtonsoftJson()
                 .AddXmlDataContractSerializerFormatters();
 

+ 1 - 2
src/Mvc/test/WebSites/ControllersFromServicesWebSite/Startup.cs

@@ -42,8 +42,7 @@ namespace ControllersFromServicesWebSite
                 })
                 .AddControllersAsServices()
                 .AddViewComponentsAsServices()
-                .AddTagHelpersAsServices()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddTagHelpersAsServices();
 
             services.AddTransient<QueryValueService>();
             services.AddTransient<ValueService>();

+ 1 - 2
src/Mvc/test/WebSites/CorsWebSite/Startup.cs

@@ -12,8 +12,7 @@ namespace CorsWebSite
     {
         public void ConfigureServices(IServiceCollection services)
         {
-            services.AddControllers(ConfigureMvcOptions)
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            services.AddControllers(ConfigureMvcOptions);
             services.Configure<CorsOptions>(options =>
             {
                 options.AddPolicy(

+ 1 - 2
src/Mvc/test/WebSites/ErrorPageMiddlewareWebSite/Startup.cs

@@ -15,8 +15,7 @@ namespace ErrorPageMiddlewareWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddControllersWithViews()
-                .AddRazorRuntimeCompilation()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddRazorRuntimeCompilation();
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/FilesWebSite/Startup.cs

@@ -15,8 +15,7 @@ namespace FilesWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddControllers()
-                .AddNewtonsoftJson()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson();
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/FormatterWebSite/Startup.cs

@@ -20,8 +20,7 @@ namespace FormatterWebSite
                 options.InputFormatters.Add(new StringInputFormatter());
             })
             .AddNewtonsoftJson(options => options.SerializerSettings.Converters.Insert(0, new IModelConverter()))
-            .AddXmlDataContractSerializerFormatters()
-            .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            .AddXmlDataContractSerializerFormatters();
         }
 
         public void Configure(IApplicationBuilder app)

+ 2 - 3
src/Mvc/test/WebSites/FormatterWebSite/StartupWithComplexParentValidation.cs

@@ -13,8 +13,7 @@ namespace FormatterWebSite
         {
             services
                 .AddControllers(options => options.ValidateComplexTypesIfChildValidationFails = true)
-                .AddNewtonsoftJson(options => options.SerializerSettings.Converters.Insert(0, new IModelConverter()))
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson(options => options.SerializerSettings.Converters.Insert(0, new IModelConverter()));
         }
 
         public void Configure(IApplicationBuilder app)
@@ -26,4 +25,4 @@ namespace FormatterWebSite
             });
         }
     }
-}
+}

+ 1 - 2
src/Mvc/test/WebSites/FormatterWebSite/StartupWithJsonInputFormatter.cs

@@ -17,8 +17,7 @@ namespace FormatterWebSite
                 options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Developer)));
                 options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Supplier)));
             })
-            .AddXmlDataContractSerializerFormatters()
-            .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            .AddXmlDataContractSerializerFormatters();
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/GenericHostWebSite/Startup.cs

@@ -20,8 +20,7 @@ namespace GenericHostWebSite
                 {
                     // Remove when all URL generation tests are passing - https://github.com/aspnet/Routing/issues/590
                     options.EnableEndpointRouting = false;
-                })
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                });
 
             services.AddLogging();
             services.AddHttpContextAccessor();

+ 1 - 2
src/Mvc/test/WebSites/HtmlGenerationWebSite/Startup.cs

@@ -18,8 +18,7 @@ namespace HtmlGenerationWebSite
             // Add MVC services to the services container. Change default FormTagHelper.AntiForgery to false. Usually
             // null which is interpreted as true unless element includes an action attribute.
             services.AddMvc(ConfigureMvcOptions)
-                .InitializeTagHelper<FormTagHelper>((helper, _) => helper.Antiforgery = false)
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .InitializeTagHelper<FormTagHelper>((helper, _) => helper.Antiforgery = false);
 
             services.AddSingleton(typeof(ISignalTokenProviderService<>), typeof(SignalTokenProviderService<>));
             services.AddSingleton<ProductsService>();

+ 1 - 2
src/Mvc/test/WebSites/RazorBuildWebSite/Startup.cs

@@ -17,8 +17,7 @@ namespace RazorBuildWebSite
             services.AddSingleton(fileProvider);
 
             services.AddMvc()
-                .AddRazorRuntimeCompilation(options => options.FileProviders.Add(fileProvider))
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddRazorRuntimeCompilation(options => options.FileProviders.Add(fileProvider));
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/RazorPagesWebSite/Startup.cs

@@ -18,8 +18,7 @@ namespace RazorPagesWebSite
             services.AddRazorPages(options =>
                 {
                     options.Conventions.AuthorizeFolder("/Admin");
-                })
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                });
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/RazorPagesWebSite/StartupWithBasePath.cs

@@ -32,8 +32,7 @@ namespace RazorPagesWebSite
                     options.Conventions.AuthorizeAreaFolder("Accounts", "/RequiresAuth");
                     options.Conventions.AllowAnonymousToAreaPage("Accounts", "/RequiresAuth/AllowAnonymous");
                     options.Conventions.Add(new CustomModelTypeConvention());
-                })
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                });
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/RazorPagesWebSite/StartupWithClientValidationDisabled.cs

@@ -18,8 +18,7 @@ namespace RazorPagesWebSite
             services.AddRazorPages(options =>
                 {
                     options.Conventions.AuthorizeFolder("/Admin");
-                })
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                });
 
             services.Configure<MvcViewOptions>(o => o.HtmlHelperOptions.ClientValidationEnabled = false);
         }

+ 1 - 2
src/Mvc/test/WebSites/RazorPagesWebSite/StartupWithoutEndpointRouting.cs

@@ -26,8 +26,7 @@ namespace RazorPagesWebSite
                     options.Conventions.AddPageRoute("/Pages/NotTheRoot", string.Empty);
                     options.Conventions.Add(new CustomModelTypeConvention());
                 })
-                .WithRazorPagesAtContentRoot()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .WithRazorPagesAtContentRoot();
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/RazorWebSite/Startup.cs

@@ -34,8 +34,7 @@ namespace RazorWebSite
                     options.HtmlHelperOptions.ValidationMessageElement = "validationMessageElement";
                     options.HtmlHelperOptions.ValidationSummaryMessageElement = "validationSummaryElement";
                 })
-                .AddMvcLocalization(LanguageViewLocationExpanderFormat.SubFolder)
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddMvcLocalization(LanguageViewLocationExpanderFormat.SubFolder);
 
             services.AddTransient<InjectedHelper>();
             services.AddTransient<TaskReturningService>();

+ 1 - 2
src/Mvc/test/WebSites/RazorWebSite/StartupDataAnnotations.cs

@@ -24,8 +24,7 @@ namespace RazorWebSite
                 {
                     options.DataAnnotationLocalizerProvider =
                         (modelType, stringLocalizerFactory) => stringLocalizerFactory.Create(typeof(SingleType));
-                })
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                });
         }
 
         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

+ 1 - 2
src/Mvc/test/WebSites/RoutingWebSite/Startup.cs

@@ -27,8 +27,7 @@ namespace RoutingWebSite
                     {
                         pageRouteTransformerConvention.Apply(model);
                     });
-                })
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                });
 
             ConfigureRoutingServices(services);
 

+ 1 - 2
src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamic.cs

@@ -21,8 +21,7 @@ namespace RoutingWebSite
         {
             services
                 .AddMvc()
-                .AddNewtonsoftJson()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson();
 
             services.AddTransient<Transformer>();
             services.AddScoped<TestResponseGenerator>();

+ 1 - 2
src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamicAndRazorPages.cs

@@ -17,8 +17,7 @@ namespace RoutingWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             services
-                .AddMvc()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddMvc();
 
             services.AddTransient<Transformer>();
 

+ 1 - 2
src/Mvc/test/WebSites/RoutingWebSite/StartupForDynamicOrder.cs

@@ -38,8 +38,7 @@ namespace RoutingWebSite
         {
             services
                 .AddMvc()
-                .AddNewtonsoftJson()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson();
 
             services.AddTransient<Transformer>();
             services.AddScoped<TestResponseGenerator>();

+ 1 - 2
src/Mvc/test/WebSites/RoutingWebSite/StartupForFallback.cs

@@ -16,8 +16,7 @@ namespace RoutingWebSite
         {
             services
                 .AddMvc()
-                .AddNewtonsoftJson()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson();
 
             // Used by some controllers defined in this project.
             services.Configure<RouteOptions>(options => options.ConstraintMap["slugify"] = typeof(SlugifyParameterTransformer));

+ 2 - 3
src/Mvc/test/WebSites/RoutingWebSite/StartupForLinkGenerator.cs

@@ -25,8 +25,7 @@ namespace RoutingWebSite
                     {
                         pageRouteTransformerConvention.Apply(model);
                     });
-                })
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                });
             services
                 .AddRouting(options =>
                 {
@@ -49,4 +48,4 @@ namespace RoutingWebSite
             });
         }
     }
-}
+}

+ 1 - 2
src/Mvc/test/WebSites/RoutingWebSite/StartupRoutingDifferentBranches.cs

@@ -30,8 +30,7 @@ namespace RoutingWebSite
                     {
                         pageRouteTransformerConvention.Apply(model);
                     });
-                })
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                });
 
             ConfigureRoutingServices(services);
 

+ 1 - 1
src/Mvc/test/WebSites/SecurityWebSite/Startup.cs

@@ -15,7 +15,7 @@ namespace SecurityWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             // Add framework services.
-            services.AddControllersWithViews().SetCompatibilityVersion(CompatibilityVersion.Latest);
+            services.AddControllersWithViews();
             services.AddAntiforgery();
             services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
             {

+ 1 - 2
src/Mvc/test/WebSites/SecurityWebSite/StartupWithGlobalAuthFilter.cs

@@ -35,8 +35,7 @@ namespace SecurityWebSite
             {
                 options.Conventions.AllowAnonymousToPage("/AllowAnonymousPageViaConvention");
                 options.Conventions.AuthorizePage("/AuthorizePageViaConvention", "RequireClaimB");
-            })
-            .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            });
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/SecurityWebSite/StartupWithGlobalAuthFilterWithoutEndpointRouting.cs

@@ -36,8 +36,7 @@ namespace SecurityWebSite
             {
                 options.Conventions.AllowAnonymousToPage("/AllowAnonymousPageViaConvention");
                 options.Conventions.AuthorizePage("/AuthorizePageViaConvention", "RequireClaimB");
-            })
-            .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            });
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/SecurityWebSite/StartupWithGlobalDenyAnonymousFilter.cs

@@ -25,8 +25,7 @@ namespace SecurityWebSite
             services.AddMvc(o =>
             {
                 o.Filters.Add(new AuthorizeFilter());
-            })
-            .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            });
 
             services.AddScoped<IPolicyEvaluator, CountingPolicyEvaluator>();
         }

+ 1 - 2
src/Mvc/test/WebSites/SecurityWebSite/StartupWithGlobalDenyAnonymousFilterWithUseMvc.cs

@@ -32,8 +32,7 @@ namespace SecurityWebSite
             {
                 o.EnableEndpointRouting = false;
                 o.Filters.Add(new AuthorizeFilter());
-            })
-            .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            });
 
             services.AddScoped<IPolicyEvaluator, CountingPolicyEvaluator>();
         }

+ 1 - 1
src/Mvc/test/WebSites/SecurityWebSite/StartupWithRequireAuth.cs

@@ -15,7 +15,7 @@ namespace SecurityWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             // Add framework services.
-            services.AddControllersWithViews().SetCompatibilityVersion(CompatibilityVersion.Latest);
+            services.AddControllersWithViews();
             services.AddRazorPages();
             services.AddAntiforgery();
             services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>

+ 2 - 3
src/Mvc/test/WebSites/SecurityWebSite/StartupWithUseMvc.cs

@@ -15,10 +15,9 @@ namespace SecurityWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             // Add framework services.
-            services.AddMvc(options => options.EnableEndpointRouting = false)
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            services.AddMvc(options => options.EnableEndpointRouting = false);
             services.AddAntiforgery();
-            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options => 
+            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
             {
                 options.LoginPath = "/Home/Login";
                 options.LogoutPath = "/Home/Logout";

+ 1 - 2
src/Mvc/test/WebSites/SimpleWebSite/Startup.cs

@@ -20,8 +20,7 @@ namespace SimpleWebSite
                 .AddMvcCore()
                 .AddAuthorization()
                 .AddFormatterMappings(m => m.SetMediaTypeMappingForFormat("js", new MediaTypeHeaderValue("application/json")))
-                .AddNewtonsoftJson(options => options.SerializerSettings.Formatting = Formatting.Indented)
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson(options => options.SerializerSettings.Formatting = Formatting.Indented);
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/TagHelpersWebSite/Startup.cs

@@ -15,8 +15,7 @@ namespace TagHelpersWebSite
         // Set up application services
         public void ConfigureServices(IServiceCollection services)
         {
-            services.AddControllersWithViews()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+            services.AddControllersWithViews();
         }
 
         public void Configure(IApplicationBuilder app)

+ 1 - 2
src/Mvc/test/WebSites/VersioningWebSite/Startup.cs

@@ -13,8 +13,7 @@ namespace VersioningWebSite
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddControllers(ConfigureMvcOptions)
-                .AddNewtonsoftJson()
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddNewtonsoftJson();
 
             services.AddScoped<TestResponseGenerator>();
             services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();

+ 1 - 4
src/Mvc/test/WebSites/XmlFormattersWebSite/Startup.cs

@@ -13,16 +13,13 @@ namespace XmlFormattersWebSite
 {
     public class Startup
     {
-        public virtual CompatibilityVersion CompatibilityVersion => CompatibilityVersion.Latest;
-
         // Set up application services
         public void ConfigureServices(IServiceCollection services)
         {
             // Add MVC services to the services container
             services.AddControllers()
                 .AddXmlDataContractSerializerFormatters()
-                .AddXmlSerializerFormatters()
-                .SetCompatibilityVersion(CompatibilityVersion);
+                .AddXmlSerializerFormatters();
 
             services.Configure<MvcOptions>(options =>
             {

+ 1 - 2
src/Tools/Microsoft.dotnet-openapi/test/TestContent/Startup.cs.txt

@@ -19,8 +19,7 @@ namespace SimpleWebSite
             services
                 .AddMvcCore()
                 .AddAuthorization()
-                .AddFormatterMappings(m => m.SetMediaTypeMappingForFormat("js", new MediaTypeHeaderValue("application/json")))
-                .SetCompatibilityVersion(CompatibilityVersion.Latest);
+                .AddFormatterMappings(m => m.SetMediaTypeMappingForFormat("js", new MediaTypeHeaderValue("application/json")));
         }
 
         public void Configure(IApplicationBuilder app)