Skip to content

Making "pubinternal" types in MVC internal #14950

Closed
@SteveSandersonMS

Description

@SteveSandersonMS

Making "pubinternal" types in MVC internal

In ASP.NET Core, pubinternal types are types that are declared as public but put in an .Internal namespace. While these types are public they have no support policy and are subject to breaking changes. Unfortunately accidental use of these types has been common, resulting in breaking changes to these projects and limiting our ability to maintain the framework.

In ASP.NET Core 3.0, we are updating all pubinternal types in MVC to either be public in a supported namespace, or internal as appropriate.

Version introduced

3.0

Old behavior

Some types in MVC were public but in an .Internal namespace. These types had no support policy and were subject to breaking changes.

New behavior

All such types are updated either to be public in a supported namespace, or marked as internal.

Reason for change

Accidental use of the pubternal types has been common, resulting in breaking changes to these projects and limiting our ability to maintain the framework.

Recommended action

If you are using types that have become truly public and have been moved into a new, supported namespace, update your references to match the new namespaces.

If you are using types that have become marked as internal, you will need to find an alternative. The previously-pubternal types were never supported for public use. If there are specific types in these namespaces that are critical to your applications, please file an issue in https://github.com/aspnet/aspnetcore and we will consider making the requested types public.

Category

  • ASP.NET Core

Affected APIs

This change includes types in the following namespaces:

  • Microsoft.AspNetCore.Mvc.Formatters.Xml.Internal
  • Microsoft.AspNetCore.Mvc.Cors.Internal
  • Microsoft.AspNetCore.Mvc.ViewFeatures.Internal
  • Microsoft.AspNetCore.Mvc.Formatters.Json.Internal
  • Microsoft.AspNetCore.Mvc.RazorPages.Internal
  • Microsoft.AspNetCore.Mvc.DataAnnotations.Internal
  • Microsoft.AspNetCore.Mvc.TagHelpers.Internal
  • Microsoft.AspNetCore.Mvc.Internal
  • Microsoft.AspNetCore.Mvc.Razor.Internal
  • Microsoft.AspNetCore.Mvc.Formatters.Internal
  • Microsoft.AspNetCore.Mvc.Core.Internal
  • Microsoft.AspNetCore.Mvc.ModelBinding.Internal

Issue metadata

  • Issue type: breaking-change

Metadata

Metadata

Assignees

Labels

breaking-changeIndicates a .NET Core breaking change

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions