Skip to content

Latest commit

 

History

History
65 lines (42 loc) · 2.97 KB

localization-pubternal-apis-removed.md

File metadata and controls

65 lines (42 loc) · 2.97 KB
title description ms.author ms.date
Breaking change: Pubternal APIs removed
Learn about the breaking change in ASP.NET Core 5.0 where some pubternal localization APIs were removed
scaddie
10/01/2020

Localization: "Pubternal" APIs removed

To better maintain the public API surface of ASP.NET Core, some :::no-loc text=""pubternal""::: localization APIs were removed. A :::no-loc text=""pubternal""::: API has a public access modifier and is defined in a namespace that implies an internal intent.

For discussion, see dotnet/aspnetcore#22291.

Version introduced

5.0 Preview 6

Old behavior

The following APIs were public:

  • Microsoft.Extensions.Localization.Internal.AssemblyWrapper
  • Microsoft.Extensions.Localization.Internal.IResourceStringProvider
  • Microsoft.Extensions.Localization.ResourceManagerStringLocalizer constructor overloads accepting either of the following parameter types:
    • AssemblyWrapper
    • IResourceStringProvider

New behavior

The following list outlines the changes:

  • Microsoft.Extensions.Localization.Internal.AssemblyWrapper became Microsoft.Extensions.Localization.AssemblyWrapper and is now internal.
  • Microsoft.Extensions.Localization.Internal.IResourceStringProvider became Microsoft.Extensions.Localization.Internal.IResourceStringProvider and is now internal.
  • Microsoft.Extensions.Localization.ResourceManagerStringLocalizer constructor overloads accepting either of the following parameter types are now internal:
    • AssemblyWrapper
    • IResourceStringProvider

Reason for change

Explained more thoroughly at aspnet/Announcements#377, :::no-loc text=""pubternal""::: types were removed from the public API surface. These changes adapt more classes to that design decision. The classes in question were intended as extension points for the team's internal testing.

Recommended action

Although it's unlikely, some apps may intentionally or accidentally depend upon the :::no-loc text=""pubternal""::: types. See the New behavior sections to determine how to migrate away from the types.

If you've identified a scenario which the public API allowed before this change but doesn't now, file an issue at dotnet/aspnetcore.

Affected APIs

  • Microsoft.Extensions.Localization.Internal.AssemblyWrapper
  • Microsoft.Extensions.Localization.Internal.IResourceStringProvider
  • xref:Microsoft.Extensions.Localization.ResourceManagerStringLocalizer.%23ctor%2A?displayProperty=nameWithType