.NET Standard.NET Standard

.Net Standard é uma especificação formal das APIs do .NET que estão disponíveis em várias implementações do .net..NET Standard is a formal specification of .NET APIs that are available on multiple .NET implementations. A motivação por trás da .NET Standard era estabelecer uma maior uniformidade no ecossistema do .NET.The motivation behind .NET Standard was to establish greater uniformity in the .NET ecosystem. No entanto, o .NET 5 adota uma abordagem diferente para estabelecer a uniformidade, e essa nova abordagem elimina a necessidade de .NET Standard em muitos cenários.However, .NET 5 adopts a different approach to establishing uniformity, and this new approach eliminates the need for .NET Standard in many scenarios. Para obter mais informações, consulte .NET 5 e .net Standard mais adiante neste artigo.For more information, see .NET 5 and .NET Standard later in this article.

Suporte à implementação do .NET.NET implementation support

As diversas implementações do .NET se destinam a versões específicas do .NET Standard.The various .NET implementations target specific versions of .NET Standard. Cada versão de implementação do .NET anuncia a versão mais alta do .NET Standard a qual ela dá suporte, uma afirmação que significa que também há suporte para versões anteriores.Each .NET implementation version advertises the highest .NET Standard version it supports, a statement that means it also supports previous versions. Por exemplo, .NET Framework 4,6 implementa .NET Standard 1,3, o que significa que ele expõe todas as APIs definidas em .NET Standard versões 1,0 a 1,3.For example, .NET Framework 4.6 implements .NET Standard 1.3, which means that it exposes all APIs defined in .NET Standard versions 1.0 through 1.3. Da mesma forma, .NET Framework 4.6.1 implementa .NET Standard 1,4, enquanto o .NET 5,0 implementa .NET Standard 2,1.Similarly, .NET Framework 4.6.1 implements .NET Standard 1.4, while .NET 5.0 implements .NET Standard 2.1.

A tabela a seguir lista as versões mínimas de implementação que oferecem suporte a cada versão de .net Standard.The following table lists the minimum implementation versions that support each .NET Standard version. Isso significa que as versões posteriores de uma implementação listada também oferecem suporte à versão de .NET Standard correspondente.That means that later versions of a listed implementation also support the corresponding .NET Standard version. Por exemplo, o .NET Core 2,1 e versões posteriores dão suporte a .NET Standard 2,0 e versões anteriores.For example, .NET Core 2.1 and later versions support .NET Standard 2.0 and earlier versions.

.NET Standard.NET Standard 1.01.0 1.11.1 1,21.2 1,31.3 1.41.4 1.51.5 1,61.6 2.02.0 2.12.1
.NET Core e .NET 5.NET Core and .NET 5 1.01.0 1.01.0 1.01.0 1.01.0 1.01.0 1.01.0 1.01.0 2.02.0 3.03.0
.NET Framework 1.NET Framework 1 4.54.5 4.54.5 4.5.14.5.1 4.64.6 4.6.14.6.1 4.6.1 24.6.1 2 4.6.1 24.6.1 2 4.6.1 24.6.1 2 N/A3N/A3
MonoMono 4.64.6 4.64.6 4.64.6 4.64.6 4.64.6 4.64.6 4.64.6 5.45.4 6.46.4
Xamarin.iOSXamarin.iOS 10.010.0 10.010.0 10.010.0 10.010.0 10.010.0 10.010.0 10.010.0 10.1410.14 12.1612.16
Xamarin.MacXamarin.Mac 3,03.0 3,03.0 3,03.0 3,03.0 3,03.0 3,03.0 3,03.0 3.83.8 5.165.16
Xamarin.AndroidXamarin.Android 7.07.0 7.07.0 7.07.0 7.07.0 7.07.0 7.07.0 7.07.0 8.08.0 10.010.0
Plataforma Universal do WindowsUniversal Windows Platform 10.010.0 10.010.0 10.010.0 10.010.0 10.010.0 10.0.1629910.0.16299 10.0.1629910.0.16299 10.0.1629910.0.16299 TBDTBD
UnityUnity 2018.12018.1 2018.12018.1 2018.12018.1 2018.12018.1 2018.12018.1 2018.12018.1 2018.12018.1 2018.12018.1 TBDTBD

1 as versões listadas para .NET Framework se aplicam ao SDK do .NET Core 2,0 e às versões posteriores das ferramentas. As versões mais antigas usaram um mapeamento diferente para .NET Standard 1,5 e superior. Você pode baixar ferramentas para o .NET Core Tools para visual studio 2015 se não for possível atualizar para o visual Studio 2017 ou uma versão posterior.1 The versions listed for .NET Framework apply to .NET Core 2.0 SDK and later versions of the tooling. Older versions used a different mapping for .NET Standard 1.5 and higher. You can download tooling for .NET Core tools for Visual Studio 2015 if you cannot upgrade to Visual Studio 2017 or a later version.

2 as versões listadas aqui representam as regras que o NuGet usa para determinar se uma determinada biblioteca de .NET Standard é aplicável. Embora o NuGet considere .NET Framework 4.6.1 como suporte a .NET Standard 1,5 até 2,0, há vários problemas com o consumo de .NET Standard bibliotecas que foram criadas para essas versões de projetos .NET Framework 4.6.1. Para projetos .NET Framework que precisam usar essas bibliotecas, recomendamos que você atualize o projeto para o destino .NET Framework 4.7.2 ou superior.2 The versions listed here represent the rules that NuGet uses to determine whether a given .NET Standard library is applicable. While NuGet considers .NET Framework 4.6.1 as supporting .NET Standard 1.5 through 2.0, there are several issues with consuming .NET Standard libraries that were built for those versions from .NET Framework 4.6.1 projects. For .NET Framework projects that need to use such libraries, we recommend that you upgrade the project to target .NET Framework 4.7.2 or higher.

3 .NET Framework não dá suporte a .NET Standard 2,1. Para obter mais informações, consulte o anúncio do .NET Standard 2,1.3 .NET Framework doesn't support .NET Standard 2.1. For more information, see the announcement of .NET Standard 2.1.

  • As colunas representam versões do .NET Standard.The columns represent .NET Standard versions. Cada célula de cabeçalho é um link para um documento que mostra quais APIs foram adicionadas a essa versão do .NET Standard.Each header cell is a link to a document that shows which APIs got added in that version of .NET Standard.
  • As linhas representam as diferentes implementações do .NET.The rows represent the different .NET implementations.
  • O número de versão em cada célula indica a versão mínima da implementação de que você precisará para direcionar essa versão do .NET Standard.The version number in each cell indicates the minimum version of the implementation you'll need in order to target that .NET Standard version.
  • Para obter uma tabela interativa, consulte Versões do .NET Standard.For an interactive table, see .NET Standard versions.

Para localizar a versão mais recente do .NET Standard para a qual você pode direcionar, siga estas etapas:To find the highest version of .NET Standard that you can target, do the following steps:

  1. Localize a linha que indica a implementação do .NET na qual você deseja executar.Find the row that indicates the .NET implementation you want to run on.
  2. Localize a coluna nessa linha que indica sua versão, da direita para a esquerda.Find the column in that row that indicates your version starting from right to left.
  3. O cabeçalho da coluna indica a versão do .NET Standard compatível com o destino.The column header indicates the .NET Standard version that your target supports. Você também pode ter como destino qualquer versão inferior do .NET Standard.You may also target any lower .NET Standard version. Versões superiores do .NET Standard também darão suporte à implementação.Higher .NET Standard versions will also support your implementation.
  4. Repita esse processo para cada plataforma de destino.Repeat this process for each platform you want to target. Se você tiver mais de uma plataforma de destino, escolha a versão menos recente entre elas.If you have more than one target platform, you should pick the smaller version among them. Por exemplo, se você deseja executar o .NET Framework 4,8 e o .NET 5,0, a versão mais alta .NET Standard que você pode usar é .NET Standard 2,0.For example, if you want to run on .NET Framework 4.8 and .NET 5.0, the highest .NET Standard version you can use is .NET Standard 2.0.

Para qual versão do .NET Standard direcionarWhich .NET Standard version to target

Ao escolher uma versão de .NET Standard para o destino, considere essa compensação:When choosing a .NET Standard version to target, consider this trade-off:

  • Quanto mais alta a versão, mais APIs estarão disponíveis para o código da biblioteca.The higher the version, the more APIs are available to your library's code.
  • Quanto menor a versão, mais aplicativos e bibliotecas podem usar sua biblioteca.The lower the version, the more apps and libraries can use your library.

Recomendamos que você direcione a versão mais baixa do .net Standard possível.We recommend you target the lowest version of .NET Standard possible. Portanto, depois de localizar a versão mais recente do .NET Standard para a qual você pode direcionar, execute estas etapas:So, after you find the highest .NET Standard version you can target, follow these steps:

  1. Direcione para a próxima versão menos recente do .NET Standard e compile seu projeto.Target the next lower version of .NET Standard and build your project.
  2. Se seu projeto for compilado com êxito, repita a etapa 1.If your project builds successfully, repeat step 1. Caso contrário, redirecione para a próxima versão mais recente, e essa será a versão que você deve usar.Otherwise, retarget to the next higher version and that's the version you should use.

No entanto, ter como destino versões do .NET Standard inferiores introduz diversas dependências de suporte.However, targeting lower .NET Standard versions introduces a number of support dependencies. Se o projeto for destinado ao .NET Standard 1.x, recomendamos que você também tenha como destino o .NET Standard 2.0.If your project targets .NET Standard 1.x, we recommend that you also target .NET Standard 2.0. Isso simplifica o grafo de dependência para os usuários da sua biblioteca que são executados em implementações compatíveis com .NET Standard 2,0 e reduz o número de pacotes que precisam ser baixados.This simplifies the dependency graph for users of your library that run on .NET Standard 2.0 compatible implementations, and it reduces the number of packages they need to download.

Regras de controle de versão do .NET Standard.NET Standard versioning rules

Há duas regras principais de controle de versão:There are two primary versioning rules:

  • Aditivo: as versões do .NET Standard são círculos logicamente concêntricos: versões mais recentes incorporam todas as APIs das versões anteriores.Additive: .NET Standard versions are logically concentric circles: higher versions incorporate all APIs from previous versions. Não há alterações interruptivas entre as versões.There are no breaking changes between versions.
  • Imutável: após o envio, as versões do .NET Standard serão congeladas.Immutable: Once shipped, .NET Standard versions are frozen.

Não haverá nenhuma nova versão do .NET Standard após 2,1.There will be no new .NET Standard versions after 2.1. Para obter mais informações, consulte .NET 5 e .net Standard mais adiante neste artigo.For more information, see .NET 5 and .NET Standard later in this article.

EspecificaçãoSpecification

A especificação do .NET Standard é um conjunto padronizado de APIs.The .NET Standard specification is a standardized set of APIs. A especificação é mantida por implementadores do .NET, especificamente a Microsoft (inclui .NET Framework, .NET Core e mono) e o Unity.The specification is maintained by .NET implementers, specifically Microsoft (includes .NET Framework, .NET Core, and Mono) and Unity.

Artefatos oficiaisOfficial artifacts

A especificação oficial é um conjunto de arquivos . cs que definem as APIs que fazem parte do padrão.The official specification is a set of .cs files that define the APIs that are part of the standard. O diretório ref em dotnet/standard repository define as APIs do .NET Standard.The ref directory in the dotnet/standard repository defines the .NET Standard APIs.

O metapacote NETStandard.Library (de origem) descreve o conjunto de bibliotecas que define (parcialmente) uma ou mais versões do .NET Standard.The NETStandard.Library metapackage (source) describes the set of libraries that define (in part) one or more .NET Standard versions.

Um componente específico, como o System.Runtime, descreve:A given component, like System.Runtime, describes:

  • Parte do .NET Standard (apenas seu escopo).Part of .NET Standard (just its scope).
  • Várias versões do .NET Standard, para esse escopo.Multiple versions of .NET Standard, for that scope.

Artefatos derivados são fornecidos para habilitar leitura mais conveniente e permitir determinados cenários do desenvolvedor (por exemplo, usando um compilador).Derivative artifacts are provided to enable more convenient reading and to enable certain developer scenarios (for example, using a compiler).

Representação de pacotePackage representation

O meio de distribuição principal dos assemblies de referência do .NET Standard são os pacotes NuGet.The primary distribution vehicle for the .NET Standard reference assemblies is NuGet packages. As implementações são entregues de várias formas, apropriadas para cada implementação do .NET.Implementations are delivered in a variety of ways, appropriate for each .NET implementation.

Pacotes NuGet são direcionados a uma ou mais estruturas.NuGet packages target one or more frameworks. .NET Standard pacotes visam a estrutura ".NET Standard"..NET Standard packages target the ".NET Standard" framework. Você pode direcionar a estrutura de .NET Standard usando o netstandard Compact TFM (por exemplo, netstandard1.4 ).You can target the .NET Standard framework using the netstandard compact TFM (for example, netstandard1.4). As bibliotecas que se destinam a serem executadas em várias implementações do .NET devem ter como destino essa estrutura.Libraries that are intended to run on multiple implementations of .NET should target this framework. Para obter o mais amplo conjunto de APIs, direcione netstandard2.0, pois o número de APIs disponíveis mais do que dobrou entre o .NET Standard 1.6 e 2.0.For the broadest set of APIs, target netstandard2.0 since the number of available APIs more than doubled between .NET Standard 1.6 and 2.0.

O NETStandard.Library metapacote faz referência ao conjunto completo de pacotes NuGet que definem .net Standard.The NETStandard.Library metapackage references the complete set of NuGet packages that define .NET Standard. A maneira mais comum de direcionar para netstandard é fazer referência a esse metapacote.The most common way to target netstandard is by referencing this metapackage. Ele descreve e fornece acesso às ~40 bibliotecas .NET e APIs associadas, que definem a .NET Standard.It describes and provides access to the ~40 .NET libraries and associated APIs that define .NET Standard. Você pode referenciar pacotes adicionais destinados a netstandard para obter acesso a APIs adicionais.You can reference additional packages that target netstandard to get access to additional APIs.

Controle de versãoVersioning

A especificação não é singular, mas um conjunto de APIs com controle de versão linear.The specification is not singular, but a linearly versioned set of APIs. A primeira versão do padrão estabelece um conjunto de linhas de base de APIs.The first version of the standard establishes a baseline set of APIs. As versões subsequentes adicionam APIs e herdam APIs definidas por versões anteriores.Subsequent versions add APIs and inherit APIs defined by previous versions. Não há nenhum provisionamento estabelecido para remover APIs do padrão.There is no established provision for removing APIs from the Standard.

.NET Standard não é específico de uma implementação .NET, nem corresponde ao esquema de controle de versão de qualquer uma dessas implementações..NET Standard is not specific to any one .NET implementation, nor does it match the versioning scheme of any of those implementations.

Conforme observado anteriormente, não haverá novas versões de .NET Standard após 2,1.As noted earlier, there will be no new .NET Standard versions after 2.1.

.NET Standard de destinoTarget .NET Standard

Você pode criar bibliotecas de .net Standard usando uma combinação da netstandard estrutura e do NETStandard.Library metapacote.You can build .NET Standard Libraries using a combination of the netstandard framework and the NETStandard.Library metapackage.

Modo de compatibilidade do .NET framework.NET Framework compatibility mode

O modo de compatibilidade do .NET Framework foi introduzido a partir do .NET Standard 2.0.Starting with .NET Standard 2.0, the .NET Framework compatibility mode was introduced. Esse modo de compatibilidade permite que os projetos do .NET Standard referenciem as bibliotecas do .NET Framework como se elas fossem compiladas para o .NET Standard.This compatibility mode allows .NET Standard projects to reference .NET Framework libraries as if they were compiled for .NET Standard. Fazer referência a bibliotecas do .NET Framework não funciona para todos os projetos, como as bibliotecas que usam APIs do WPF (Windows Presentation Foundation).Referencing .NET Framework libraries doesn't work for all projects, such as libraries that use Windows Presentation Foundation (WPF) APIs.

Para obter mais informações, veja .NET Framework compatibility mode (Modo de compatibilidade do .NET Framework).For more information, see .NET Framework compatibility mode.

Bibliotecas do .NET standard e Visual Studio.NET Standard libraries and Visual Studio

Para criar bibliotecas de .NET Standard no Visual Studio, verifique se você tem o visual studio 2019 ou o visual Studio 2017 versão 15,3 ou posterior instalado no Windows ou Visual Studio para Mac a versão 7,1 ou posterior instalada no MacOS.In order to build .NET Standard libraries in Visual Studio, make sure you have Visual Studio 2019 or Visual Studio 2017 version 15.3 or later installed on Windows, or Visual Studio for Mac version 7.1 or later installed on macOS.

Se você precisar apenas consumir as bibliotecas do .NET Standard 2.0 em seus projetos, também será possível fazer isso no Visual Studio 2015.If you only need to consume .NET Standard 2.0 libraries in your projects, you can also do that in Visual Studio 2015. No entanto, é necessário ter o NuGet cliente 3.6 ou posterior instalado.However, you need NuGet client 3.6 or higher installed. É possível baixar o cliente do NuGet para Visual Studio 2015 na página downloads do NuGet.You can download the NuGet client for Visual Studio 2015 from the NuGet downloads page.

.NET 5 e .NET Standard.NET 5 and .NET Standard

O .NET 5 é a implementação do .NET que a Microsoft está desenvolvendo ativamente..NET 5 is the implementation of .NET that Microsoft is actively developing. É um único produto com um conjunto uniforme de recursos e APIs que podem ser usados para aplicativos de área de trabalho do Windows e aplicativos de console entre plataformas, serviços de nuvem e sites.It's a single product with a uniform set of capabilities and APIs that can be used for Windows desktop apps and cross-platform console apps, cloud services, and websites. Os TFMs .NET 5,0 refletem essa ampla variedade de cenários:The .NET 5.0 TFMs reflect this broad range of scenarios:

  • net5.0

    Esse TFM é para o código que é executado em todos os lugares.This TFM is for code that runs everywhere. Com algumas exceções, ele inclui apenas tecnologias que funcionam entre plataformas.With a few exceptions, it includes only technologies that work cross-platform. Para o código do .NET 5, net5.0 substitui netcoreapp e netstandard TFMs.For .NET 5 code, net5.0 replaces both netcoreapp and netstandard TFMs.

  • net5.0-windows

    Este é um exemplo de TFMs específicas do sistema operacional que adicionam funcionalidade específica do sistema operacional a tudo o que net5.0 se refere.This is an example of OS-specific TFMs that add OS-specific functionality to everything that net5.0 refers to.

Quando direcionar para NET 5.0 versus netstandardWhen to target net5.0 vs. netstandard

Para o código existente que tem netstandard como alvo, não há necessidade de alterar o TFM para net5.0 .For existing code that targets netstandard, there's no need to change the TFM to net5.0. O .NET 5,0 implementa .NET Standard 2,1 e anteriores..NET 5.0 implements .NET Standard 2.1 and earlier. O único motivo para redirecionar de .NET Standard para o .NET 5,0 seria obter acesso a mais recursos de tempo de execução, recursos de linguagem ou APIs.The only reason to retarget from .NET Standard to .NET 5.0 would be to gain access to more runtime features, language features, or APIs. Por exemplo, para usar o C# 9, você precisa direcionar ao .NET 5,0.For example, in order to use C# 9, you need to target .NET 5.0. Você pode multidirecionar o .NET 5,0 e .NET Standard para obter acesso aos recursos mais recentes e ainda ter sua biblioteca disponível para outras implementações do .NET.You can multitarget .NET 5.0 and .NET Standard to get access to newer features and still have your library available to other .NET implementations.

Aqui estão algumas diretrizes para o novo código para o .NET 5:Here are some guidelines for new code for .NET 5:

  • Componentes do aplicativoApp components

    Se você estiver usando bibliotecas para dividir um aplicativo em vários componentes, recomendamos que você direcione net5.x onde 5.x é a versão mais antiga do .NET 5 que seu aplicativo pode atingir.If you're using libraries to break down an application into several components, we recommend you target net5.x where 5.x is the earliest .NET 5 version that your application can target. Para simplificar, é melhor manter todos os projetos que compõem seu aplicativo na mesma versão do .NET.For simplicity, it's best to keep all projects that make up your application on the same version of .NET. Em seguida, você pode assumir os mesmos recursos da BCL em todos os lugares.Then you can assume the same BCL features everywhere.

  • Bibliotecas reutilizáveisReusable libraries

    Se você estiver criando bibliotecas reutilizáveis que planeja enviar no NuGet, considere o compensador entre o alcance e o conjunto de recursos disponíveis.If you're building reusable libraries that you plan to ship on NuGet, consider the trade-off between reach and available feature set. .NET Standard 2,0 é a versão mais recente com suporte do .NET Framework, portanto, ele fornece um bom alcance com um conjunto de recursos muito grande..NET Standard 2.0 is the latest version that is supported by .NET Framework, so it gives good reach with a fairly large feature set. Não é recomendável direcionar .NET Standard 1. x, pois você limitaria o conjunto de recursos disponíveis para um aumento mínimo no alcance.We don't recommend targeting .NET Standard 1.x, as you'd limit the available feature set for a minimal increase in reach.

    Se você não precisar dar suporte a .NET Framework, poderá ir .NET Standard 2,1 ou .NET 5.If you don't need to support .NET Framework, you could go with .NET Standard 2.1 or .NET 5. Recomendamos que você pule .NET Standard 2,1 e vá direto para o .NET 5.We recommend you skip .NET Standard 2.1 and go straight to .NET 5. As bibliotecas mais amplamente usadas acabarão com vários destinos para .NET Standard 2,0 e para o .NET 5.Most widely used libraries will end up multi-targeting for both .NET Standard 2.0 and .NET 5. O suporte ao .NET Standard 2,0 oferece o máximo de alcance, enquanto o suporte ao .NET 5 garante que você possa aproveitar os recursos mais recentes da plataforma para os clientes que já estão no .NET 5.Supporting .NET Standard 2.0 gives you the most reach, while supporting .NET 5 ensures you can leverage the latest platform features for customers that are already on .NET 5.

Problemas de .NET Standard.NET Standard problems

Aqui estão alguns problemas com .NET Standard que ajudam a explicar por que o .NET 5 é a melhor maneira de compartilhar código entre plataformas e cargas de trabalho:Here are some problems with .NET Standard that help explain why .NET 5 is the better way to share code across platforms and workloads:

  • Lentidão para adicionar novas APIsSlowness to add new APIs

    .NET Standard foi criado como um conjunto de API que todas as implementações do .NET teriam de dar suporte, portanto, havia um processo de revisão para que as propostas adicionassem novas APIs..NET Standard was created as an API set that all .NET implementations would have to support, so there was a review process for proposals to add new APIs. O objetivo era padronizar apenas as APIs que poderiam ser implementadas em todas as plataformas .NET atuais e futuras.The goal was to standardize only APIs that could be implemented in all current and future .NET platforms. O resultado foi que, se um recurso perdeu uma versão específica, talvez seja necessário aguardar alguns anos antes que ele tenha sido adicionado a uma versão do padrão.The result was that if a feature missed a particular release, you might have to wait for a couple of years before it got added to a version of the Standard. Em seguida, você esperaria mais tempo para que a nova versão do .NET Standard seja amplamente suportada.Then you'd wait even longer for the new version of .NET Standard to be widely supported.

    Solução no .NET 5: Quando um recurso é implementado, ele já está disponível para cada aplicativo e biblioteca do .NET 5, pois a base de código é compartilhada.Solution in .NET 5: When a feature is implemented, it's already available for every .NET 5 app and library because the code base is shared. E, como não há nenhuma diferença entre a especificação da API e sua implementação, você pode aproveitar os novos recursos muito mais rapidamente do que com .NET Standard.And since there's no difference between the API specification and its implementation, you're able to take advantage of new features much quicker than with .NET Standard.

  • Controle de versão complexoComplex versioning

    A separação da especificação de API de suas implementações resulta em um mapeamento complexo entre versões de especificação de API e versões de implementação.The separation of the API specification from its implementations results in complex mapping between API specification versions and implementation versions. Essa complexidade é evidente na tabela mostrada anteriormente neste artigo e as instruções sobre como interpretá-la.This complexity is evident in the table shown earlier in this article and the instructions for how to interpret it.

    Solução no .NET 5: Não há nenhuma separação entre uma especificação de API do .NET 5. x e sua implementação.Solution in .NET 5: There's no separation between a .NET 5.x API specification and its implementation. O resultado é um esquema TFM simplificado.The result is a simplified TFM scheme. Há um prefixo TFM para todas as cargas de trabalho: net5.0 é usado para bibliotecas, aplicativos de console e aplicativos Web.There's one TFM prefix for all workloads: net5.0 is used for libraries, console apps, and web apps. A única variação é um sufixo que especifica APIs específicas da plataforma para uma plataforma específica, como net5.0-windows .The only variation is a suffix that specifies platform-specific APIs for a particular platform, such as net5.0-windows. Graças a essa Convenção de nomenclatura TFM, você pode facilmente dizer se um determinado aplicativo pode usar uma determinada biblioteca.Thanks to this TFM naming convention, you can easily tell whether a given app can use a given library. Nenhuma tabela equivalente de número de versão como a de .NET Standard é necessária.No version number equivalents table like the one for .NET Standard is needed.

  • Plataforma-exceções sem suporte em tempo de execuçãoPlatform-unsupported exceptions at run time

    O .NET Standard expõe APIs específicas da plataforma..NET Standard exposes platform-specific APIs. Seu código pode ser compilado sem erros e parece ser portável a qualquer plataforma, mesmo que não seja portátil.Your code might compile without errors and appear to be portable to any platform even if it isn't portable. Quando ele é executado em uma plataforma que não tem uma implementação para uma determinada API, você obtém erros de tempo de execução.When it runs on a platform that doesn't have an implementation for a given API, you get run-time errors.

    Solução no .NET 5: O SDK do .NET 5 inclui analisadores de código que são habilitados por padrão.Solution in .NET 5: The .NET 5 SDK includes code analyzers that are enabled by default. O analisador de compatibilidade de plataforma detecta o uso não intencional de APIs que não têm suporte nas plataformas nas quais você pretende executar.The platform compatibility analyzer detects unintentional use of APIs that aren't supported on the platforms you intend to run on. Para obter mais informações, consulte analisador de compatibilidade de plataforma.For more information, see Platform compatibility analyzer.

.NET Standard não preterido.NET Standard not deprecated

.NET Standard ainda é necessário para as bibliotecas que podem ser usadas por várias implementações do .NET..NET Standard is still needed for libraries that can be used by multiple .NET implementations. É recomendável que você direcione .NET Standard nos seguintes cenários:We recommend you target .NET Standard in the following scenarios:

  • Use netstandard2.0 para compartilhar código entre .NET Framework e todas as outras implementações do .net.Use netstandard2.0 to share code between .NET Framework and all other implementations of .NET.
  • Use netstandard2.1 para compartilhar código entre o mono, o Xamarin e o .NET Core 3. x.Use netstandard2.1 to share code between Mono, Xamarin, and .NET Core 3.x.

Confira tambémSee also