Frameworks de destino
O NuGet usa referências de estrutura de destino em uma variedade de locais para identificar e isolar especificamente os componentes dependentes de estrutura de um pacote:
- arquivo de projeto: para projetos de estilo SDK, o .csproj contém as referências da estrutura de destino.
- Manifesto do .nuspec: um pacote pode indicar pacotes distintos a serem incluídos em um projeto dependendo da estrutura de destino dele.
- Nome da pasta .nupkg: as pastas dentro de uma pasta
lib
do pacote pode ser nomeada de acordo com a estrutura de destino, cada uma delas contém as DLLs e outros tipos de conteúdo apropriado para essa estrutura. - packages.config: o atributo
targetframework
de uma dependência especifica a variante de um pacote a ser instalado.
Observação
O NuGet oferece suporte a todas as estruturas de destino modernas do .NET:
- Para obter uma lista das estruturas de destino mais recentes, consulte a documentação Estruturas de destino em projetos no estilo SDK.
Estruturas com suporte
Normalmente, uma estrutura é referenciada por um moniker curto de estrutura de destino ou TFM. No .NET Standard, isso também é generalizado para TxM, a fim de permitir uma única referência para várias estruturas.
Observação
O código-fonte do cliente do NuGet que calcula as tabelas abaixo é encontrado nos seguintes locais:
- Suporte para nomes de estrutura: FrameworkConstants.cs
- Precedência e mapeamento do Framework: DefaultFrameworkMappings.cs
Os clientes do NuGet são compatíveis com as estruturas indicadas na tabela abaixo. Equivalentes são mostrados entre colchetes []. Observe que algumas ferramentas, como dotnet
, podem usar as variações de TFMs canônicos em alguns arquivos. Por exemplo, dotnet pack
usa .NETCoreApp2.0
em um arquivo .nuspec
em vez de netcoreapp2.0
. As várias ferramentas de cliente do NuGet manipulam essas variações corretamente, mas você sempre deve usar TFMs canônicos ao editar arquivos diretamente.
Nome | Abreviação | TFMs/TxMs |
---|---|---|
.NET Framework | net | net11 |
net20 | ||
net35 | ||
net40 | ||
net403 | ||
net45 | ||
net451 | ||
net452 | ||
net46 | ||
net461 | ||
net462 | ||
net47 | ||
net471 | ||
net472 | ||
net48 | ||
Microsoft Store (Windows Store) | netcore | netcore [netcore45] |
netcore45 [win, win8] | ||
netcore451 [win81] | ||
netcore50 | ||
.NET MicroFramework | netmf | netmf |
Windows | win | win [win8, netcore45] |
win8 [netcore45, win] | ||
win81 [netcore451] | ||
win10 (incompatível com a plataforma Windows 10) | ||
Silverlight | 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 de destino do aplicativo de consumo) | ||
.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 | ||
Tizen | tizen | tizen3 |
tizen4 | ||
Nativo | nativa | nativa |
Estruturas preteridas
As seguintes estruturas são preteridas. Os pacotes direcionados a essas estruturas devem ser migrados para as substituições indicadas.
Estrutura preterida | Substituição |
---|---|
aspnet50 | netcoreapp |
aspnetcore50 | |
dnxcore50 | |
dnx | |
dnx45 | |
dnx451 | |
dnx452 | |
dotnet | netstandard |
dotnet50 | |
dotnet51 | |
dotnet52 | |
dotnet53 | |
dotnet54 | |
dotnet55 | |
dotnet56 | |
winrt | win |
Precedência
Várias estruturas relacionadas e compatíveis entre si, mas não necessariamente equivalentes:
Estrutura | Pode usar |
---|---|
uap (Plataforma Universal do Windows) | win81 |
wpa81 | |
netcore50 | |
win (Microsoft Store) | winrt |
NET Standard
O .NET Standard simplifica referências entre estruturas compatíveis com o binário, permitindo que uma estrutura de destino única faça referência a uma combinação de outras. (Para obter informações, consulte o .NET Primer.)
A Ferramenta Obter a ferramenta de estrutura mais próxima do NuGet simula o que o NuGet usa para a seleção de uma estrutura de muitos ativos de estrutura disponíveis em um pacote baseado na estrutura do projeto.
A série de monikers dotnet
deve ser usada no NuGet 3.3 e versões anteriores; a sintaxe de moniker netstandard
deve ser usada no v3.4 e posterior.
Bibliotecas de classes portáteis
Aviso
PCLs não são recomendados. Embora haja suporte para PCLs, os autores de pacote devem dar suporte ao netstandard em vez disso. O .NET Platform Standard é uma evolução de PCLs e representa a portabilidade binária entre plataformas que usam um moniker único que não está vinculado a uma biblioteca estática como monikers portable-a+b+c.
Para definir uma estrutura de destino que se refere a várias estruturas de destino filho, a palavra-chave portable
é usada para prefixar a lista de estruturas referenciadas. Evite incluir estruturas extras artificialmente que não são diretamente compiladas, pois o erro pode causar efeitos colaterais indesejados nessas estruturas.
Estruturas adicionais definidas por terceiros fornecem compatibilidade com outros ambientes acessíveis dessa maneira. Além disso, há diversos perfis abreviados que estão disponíveis para fazer referência a essas combinações de estruturas relacionadas como Profile#
, mas essa não é uma prática recomendada para usar esses números, pois isso reduz a legibilidade das pastas e .nuspec
.
Nº do perfil | Estruturas | Nome completo | .NET Standard |
---|---|---|---|
Profile2 | .NETFramework 4.0 | portable-net40+win8+sl4+wp7 | |
Windows 8.0 | |||
Silverlight 4.0 | |||
WindowsPhone 7.0 | |||
Profile3 | .NETFramework 4.0 | portable-net40+sl4 | |
Silverlight 4.0 | |||
Profile4 | .NETFramework 4.5 | portable-net45+sl4+win8+wp7 | |
Silverlight 4.0 | |||
Windows 8.0 | |||
WindowsPhone 7.0 | |||
Profile5 | .NETFramework 4.0 | portable-net40+win8 | |
Windows 8.0 | |||
Profile6 | .NETFramework 4.0.3 | portable-net403+win8 | |
Windows 8.0 | |||
Profile7 | .NETFramework 4.5 | portable-net45+win8 | netstandard1.1 |
Windows 8.0 | |||
Profile14 | .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 | portable-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) | |||
Profile136 | .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) | |||
Profile147 | .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) | |||
Profile154 | .NETFramework 4.5 | portable-net45+sl4+win8+wp8 | |
Silverlight 4.0 | |||
Windows 8.0 | |||
WindowsPhone 8.0 (SL) | |||
Profile157 | Windows 8.1 | portable-win81+wp81+wpa81 | netstandard1.0 |
WindowsPhone 8.1 (SL) | |||
WindowsPhone 8.1 (UWP) | |||
Profile158 | .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) |
Além disso, os pacotes do NuGet direcionados ao Xamarin podem usar estruturas adicionais definidas pelo Xamarin. Consulte Criando pacotes do NuGet para Xamarin.
Nome | Descrição | .NET Standard |
---|---|---|
monoandroid | Suporte a Mono para o sistema operacional Android | netstandard1.4 |
monotouch | Suporte Mono para iOS | netstandard1.4 |
monomac | Suporte Mono para OSX | netstandard1.4 |
xamarinios | Suporte para Xamarin para iOS | netstandard1.4 |
xamarinmac | Suportes para Xamarin para Mac | netstandard1.4 |
xamarinpsthree | Suporte para Xamarin no Playstation 3 | netstandard1.4 |
xamarinpsfour | Suporte para Xamarin no Playstation 4 | netstandard1.4 |
xamarinpsvita | Suporte para Xamarin no PS Vita | netstandard1.4 |
xamarinwatchos | 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 compatíveis, a qual pode ser encontrada na sua postagem, Perfis de estrutura no .NET.