Partilhar via


Plataformas-alvo

O NuGet utiliza referências de framework alvo em vários locais para identificar e isolar especificamente componentes dependentes do framework de um pacote:

  • ficheiro de projeto: Para projetos ao estilo SDK, o .csproj contém as referências do framework alvo.
  • Manifesto .nuspec: Um pacote pode indicar pacotes distintos a serem incluídos num projeto dependendo do framework alvo do projeto.
  • Nome da pasta .nupkg: As pastas dentro da lib pasta de um pacote podem ser nomeadas de acordo com o framework de destino, cada uma das quais contém as DLLs e outro conteúdo apropriado a esse framework.
  • packages.config: O targetframework atributo de uma dependência especifica a variante de um pacote a instalar.

Para a lista canónica de todos os frameworks-alvo suportados e a sua sintaxe TFM, veja frameworks de alvo em projetos ao estilo SDK.

Os valores do TargetFramework são pseudónimos

A TargetFramework propriedade num ficheiro de projeto é um nome amigável — um alias — que é traduzido numa identidade canónica de framework. O SDK .NET realiza esta tradução definindo o TargetFrameworkMoniker (TFM) e, quando aplicável, as propriedades TargetPlatformMoniker .

Por exemplo, quando escreves <TargetFramework>net10.0-windows</TargetFramework>, o SDK .NET traduz isso em:

  • TargetFrameworkMoniker = .NETCoreApp,Version=v10.0
  • TargetPlatformMoniker = Windows,Version=7.0

O NuGet utiliza estas propriedades do nome — não a TargetFramework cadeia — para verificações de compatibilidade de pacotes. Isto significa que o TargetFramework valor em si pode ser qualquer cadeia, desde que as propriedades do nome estejam corretamente definidas. Por exemplo, o seguinte projeto é válido:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>banana</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(TargetFramework)' == 'banana' ">
    <TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>
    <TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
    <TargetFrameworkMoniker>.NETCoreApp,Version=v10.0</TargetFrameworkMoniker>
  </PropertyGroup>
</Project>

Este projeto restaura e compila para .NET 10.0, mesmo que o TargetFramework valor seja banana. O SDK .NET já depende deste mecanismo de aliasing para TFMs específicos do sistema operativo como net8.0-ios e net8.0-android, onde o TFM curto é traduzido para o nome completo com informação da plataforma.

Multidirecionamento com frameworks duplicados

A partir do NuGet 7.6 / .NET SDK 10.0.300, múltiplos TargetFrameworks aliases podem ser resolvidos para o mesmo framework eficaz. Isto permite cenários como compilações multi-RID e direcionamento de extensões multi-versão. Para detalhes sobre como isto funciona com restaurar, empacotar ficheiros de bloqueio e referências de projeto, veja Targeting multiple frameworks.

Estruturas suportadas

Uma framework é tipicamente referenciada por um nome de framework alvo curto ou TFM. No .NET Standard isto também é generalizado para o TxM para permitir uma única referência a múltiplos frameworks.

Observação

O código-fonte do cliente NuGet que calcula as tabelas abaixo encontra-se nas seguintes localizações:

Os clientes NuGet suportam os frameworks apresentados na tabela abaixo. Os equivalentes são mostrados entre parênteses []. Note que algumas ferramentas, como dotnet, podem usar variações dos TFMs canónicos em alguns ficheiros. Por exemplo, dotnet pack usa .NETCoreApp2.0 num .nuspec ficheiro em vez de netcoreapp2.0. As várias ferramentas clientes NuGet lidam bem com estas variações, mas deve sempre usar TFMs canónicos ao editar ficheiros diretamente.

Nome Abreviatura TFMs/TxMs
.NET Framework Net rede11
.NET20
net35
net40
Net403
net45
Net451
Net452
net46
Net461
Net462
Net47
Net471
Net472
Net48
Microsoft Store (Windows Store) Netcore Netcore [NetCore45]
NetCore45 [Vitória, Win8]
Netcore451 [win81]
Netcore50
.NET MicroFramework netmf netmf
Windows vitória Vitória [Win8, NetCore45]
Win8 [NetCore45, Win]
Win81 [NetCore451]
win10 (não suportado pela Plataforma Windows 10)
Luz de prata SL SL4
SL5
Windows Phone (SL) WP WP [WP7]
WP7
WP75
WP8
WP81
Windows Phone (UWP) WPA81
Plataforma Universal do Windows UAP UAP [UAP10.0]
uap10.0
uap10.0.xxxxx (onde 10.0.xxxxx é a versão mínima da plataforma alvo da aplicação consumidora)
.NET Standard NetStandard NetStandard1,0
NetStandard1,1
NetStandard1,2
NetStandard1,3
NetStandard1,4
NetStandard1,5
NetStandard1,6
NetStandard2,0
NetStandard2,1
.NET 5+ (e .NET Core) NetcoreApp NetcoreApp1,0
NetcoreApp1,1
netcoreapp2.0
NetcoreApp2,1
NetcoreApp2,2
NetcoreApp3.0
NetcoreApp3,1
Net Net5.0
net6.0
net7.0
net8.0
net9,0
net10.0
Tizen Tizen tizen3
tizen4
Nativo nativo nativo

Frameworks obsoletos

Os seguintes frameworks estão obsoletos. Os pacotes direcionados a estes frameworks devem migrar para as substituições indicadas.

Estrutura obsoleta Substituição
ASPNET50 NetcoreApp
ASPNETCORE50
DNXCORE50
DNX
DNX45
DNX451
DNX452
dotnet NetStandard
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
WinRT vitória

Precedence

Vários frameworks estão relacionados e compatíveis entre si, mas não necessariamente equivalentes:

Framework Pode utilizar
uap (Plataforma Windows Universal) Windows 8.1
WPA81
Netcore50
win (Microsoft Store) WinRT

NET Padrão

O .NET Standard simplifica referências entre frameworks compatíveis com binários, permitindo que um único framework alvo faça referência a uma combinação de outros. (Para contextualizar, veja o .NET Primer.)

A Ferramenta de Framework NuGet Get Nearest simula o que a NuGet utiliza para selecionar um framework entre muitos ativos de framework disponíveis num pacote baseado no framework do projeto.

A dotnet série de nomes deve ser usada no NuGet 3.3 e anteriores; a netstandard sintaxe dos nomes deve ser usada na v3.4 e posteriores.

Bibliotecas Portáteis de Classes

Advertência

PCLs não são recomendados. Embora os PCLs sejam suportados, os autores de pacotes devem suportar netstandard. O .NET Platform Standard é uma evolução dos PCLs e representa portabilidade binária entre plataformas usando um único nome que não está ligado a uma biblioteca estática como os nomes portable-a+b+c .

Para definir um framework alvo que se refira a múltiplos frameworks filhos-target, a portable palavra-chave usada para prefixar a lista de frameworks referenciados. Evite incluir artificialmente frameworks extra que não sejam diretamente compilados, pois isso pode levar a efeitos secundários indesejados nesses frameworks.

Frameworks adicionais definidos por terceiros proporcionam compatibilidade com outros ambientes acessíveis desta forma. Além disso, existem números de perfil abreviados disponíveis para referenciar estas combinações de frameworks relacionados como Profile#, mas não é uma prática recomendada usar estes números, pois reduz a legibilidade das pastas e .nuspec.

Perfil # Frameworks Nome completo .NET Standard
Perfil2 . NETFramework 4.0 portable-net40+win8+SL4+WP7
Windows 8.0
Silverlight 4.0
WindowsPhone 7.0
Perfil3 . NETFramework 4.0 portable-net40+SL4
Silverlight 4.0
Perfil4 . NETFramework 4.5 portable-net45+SL4+Win8+WP7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Perfil5 . NETFramework 4.0 portable-net40+win8
Windows 8.0
Perfil6 . NETFramework 4.0.3 portable-net403+win8
Windows 8.0
Profile7 . NETFramework 4.5 portable-net45+win8 NetStandard1,1
Windows 8.0
Perfil14 . NETFramework 4.0 portable-net40+SL5
Silverlight 5.0
Profile18 . NETFramework 4.0.3 portable-net403+SL4
Silverlight 4.0
Profile19 . NETFramework 4.0.3 portable-net403+SL5
Silverlight 5.0
Profile23 . NETFramework 4.5 portable-net45+SL4
Silverlight 4.0
Profile24 . NETFramework 4.5 portable-net45+SL5
Silverlight 5.0
Profile31 Windows 8.1 Portable-Win81+WP81 NetStandard1,0
WindowsPhone 8.1 (SL)
Profile32 Windows 8.1 Portátil-Win81+WPA81 NetStandard1,2
WindowsPhone 8.1 (UWP)
Profile36 . NETFramework 4.0 Portable-net40+SL4+Win8+WP8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile37 . NETFramework 4.0 portable-net40+SL5+Win8
Silverlight 5.0
Windows 8.0
Profile41 . NETFramework 4.0.3 portable-net403+SL4+Win8
Silverlight 4.0
Windows 8.0
Profile42 . NETFramework 4.0.3 portable-net403+SL5+Win8
Silverlight 5.0
Windows 8.0
Profile44 . NETFramework 4.5.1 portable-net451+win81 NetStandard1,2
Windows 8.1
Profile46 . NETFramework 4.5 portable-net45+SL4+Win8
Silverlight 4.0
Windows 8.0
Profile47 . NETFramework 4.5 portable-net45+SL5+Win8
Silverlight 5.0
Windows 8.0
Profile49 . NETFramework 4.5 portable-net45+wp8 NetStandard1,0
WindowsPhone 8.0 (SL)
Profile78 . NETFramework 4.5 portable-net45+win8+wp8 NetStandard1,0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile84 WindowsPhone 8.1 portable-wp81+wpa81 NetStandard1,0
WindowsPhone 8.1 (UWP)
Profile88 . NETFramework 4.0 portable-net40+SL4+Win8+WP75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profile92 . NETFramework 4.0 portable-net40+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile95 . NETFramework 4.0.3 portable-net403+SL4+Win8+WP7
Silverlight 4.0
Windows 8.0
WindowsPhone 7.0
Profile96 . NETFramework 4.0.3 portable-net403+SL4+Win8+WP75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profile102 . NETFramework 4.0.3 portable-net403+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile104 . NETFramework 4.5 portable-net45+SL4+Win8+WP75
Silverlight 4.0
Windows 8.0
WindowsPhone 7.5
Profile111 . NETFramework 4.5 portable-net45+win8+wpa81 NetStandard1,1
Windows 8.0
WindowsPhone 8.1 (UWP)
Perfil136 . NETFramework 4.0 portable-net40+SL5+Win8+WP8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile143 . NETFramework 4.0.3 portable-net403+SL4+Win8+WP8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Perfil147 . NETFramework 4.0.3 portable-net403+SL5+Win8+WP8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile151 NETFramework 4.5.1 portable-net451+win81+wpa81 NetStandard1,2
Windows 8.1
WindowsPhone 8.1 (UWP)
Perfil154 . NETFramework 4.5 portable-net45+SL4+Win8+WP8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Perfil157 Windows 8.1 Portable-Win81+WP81+WPA81 NetStandard1,0
WindowsPhone 8.1 (SL)
WindowsPhone 8.1 (UWP)
Perfil158 . NETFramework 4.5 portable-net45+SL5+Win8+WP8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.0 (SL)
Profile225 . NETFramework 4.0 Portable-net40+SL5+Win8+WPA81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile240 . NETFramework 4.0.3 portable-net403+SL5+Win8+WPA8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile255 . NETFramework 4.5 portable-net45+SL5+Win8+WPA81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Profile259 . NETFramework 4.5 portable-net45+win8+wpa81+wp8 NetStandard1,0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profile328 . NETFramework 4.0 Portable-net40+SL5+Win8+WPA81+WP8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profile336 . NETFramework 4.0.3 portable-net403+SL5+Win8+WPA81+WP8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Profile344 . NETFramework 4.5 portable-net45+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)

Adicionalmente, pacotes NuGet direcionados para Xamarin podem usar frameworks adicionais definidos por Xamarin:

Nome Descrição .NET Standard
monoandroide Suporte Mono para o sistema operativo Android NetStandard1,4
Monotouch Suporte Mono para iOS NetStandard1,4
Monomac Suporte Mono para OSX NetStandard1,4
xamarinios Suporte para Xamarin no iOS NetStandard1,4
Xamarinmac Suportes para Xamarin para Mac NetStandard1,4
xamarinpsthree Suporte para Xamarin na Playstation 3 NetStandard1,4
xamarinpsfour Suporte para Xamarin na Playstation 4 NetStandard1,4
xamarinpsvita Suporte para Xamarin na PS Vita NetStandard1,4
Xamarin watchOS Xamarin para Watch OS NetStandard1,4
xamarintvos Xamarin para TV OS NetStandard1,4
xamarinxboxthreesixty Xamarin para Xbox 360 NetStandard1,4
xamarinxboxone Xamarin para Xbox One NetStandard1,4

Observação

Stephen Cleary criou uma ferramenta que lista os PCLs suportados, que pode encontrar no seu post, Framework profiles em .NET.