Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
libpasta 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
targetframeworkatributo 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.0TargetPlatformMoniker=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:
- Nomes de frameworks suportados: FrameworkConstants.cs
- Precedência e mapeamento do enquadramento: DefaultFrameworkMappings.cs
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.