Usunięto opcje zgodności MVC

Interfejsy API zgodności MVC, takie jak CompatibilityVersion i SetCompatibilityVersion, zostały usunięte w ASP.NET Core 11. Te interfejsy API nie wykonywały żadnej operacji od wersji ASP.NET Core 3.0 i od wersji ASP.NET Core 6 są oznaczone jako przestarzałe.

Wersja wprowadzona

.NET 11 (wersja zapoznawcza 7)

Poprzednie zachowanie

Wcześniej interfejsy API wersji zgodności istniały i można było je wywoływać, ale powodowały ostrzeżenie o wycofaniu z użycia podczas kompilacji i nie miały żadnego efektu w czasie wykonywania:

services.AddMvc()
    .SetCompatibilityVersion(CompatibilityVersion.Latest);

Nowe zachowanie

Począwszy od ASP.NET Core 11, te interfejsy API już nie istnieją. Kod, który się do nich odwołuje, nie kompiluje się, a istniejące pliki binarne, które się do nich odwołują, powodują błąd w czasie wykonywania z komunikatem MissingMethodException lub TypeLoadException.

Typ zmiany przełamującej

Ta zmiana może mieć wpływ na zgodność źródła i zgodność binarną.

Przyczyna zmiany

Interfejsy API są oznaczone jako przestarzałe od wersji ASP.NET Core 6 i nie miały żadnego działania od ASP.NET Core 3.0, więc nie wnosiły żadnej wartości. Aby uzyskać więcej informacji, zobacz dotnet/aspnetcore#67077.

Usuń wszystkie użycia tych interfejsów API. Na przykład zmień następujący kod:

services.AddMvc()
    .SetCompatibilityVersion(CompatibilityVersion.Latest);

Do:

services.AddMvc();

Interfejsy API, których dotyczy problem

  • Microsoft.Extensions.DependencyInjection.MvcCoreMvcBuilderExtensions.SetCompatibilityVersion
  • Microsoft.Extensions.DependencyInjection.MvcCoreMvcCoreBuilderExtensions.SetCompatibilityVersion
  • Microsoft.AspNetCore.Mvc.Infrastructure.ConfigureCompatibilityOptions<TOptions>
  • Microsoft.AspNetCore.Mvc.MvcCompatibilityOptions
  • Microsoft.AspNetCore.Mvc.CompatibilityVersion