Compartir a través de


Marcos de trabajo objetivo

NuGet usa referencias de marco de destino en una variedad de lugares para identificar y aislar específicamente los componentes dependientes del marco de un paquete:

  • archivo de proyecto: para los proyectos de estilo SDK, .csproj contiene las referencias de la plataforma de destino.
  • Manifiesto .nuspec: un paquete puede indicar paquetes distintos que se incluirán en un proyecto en función del marco de destino del proyecto.
  • Nombre de la carpeta .nupkg: las carpetas dentro de la carpeta de lib un paquete se pueden denominar según la plataforma de destino, cada una de las cuales contiene los archivos DLL y otro contenido adecuado para ese marco.
  • packages.config: el targetframework atributo de una dependencia especifica la variante de un paquete que se va a instalar.

Para obtener la lista canónica de todos los marcos de destino admitidos y su sintaxis de TFM, consulte Plataformas de destino en proyectos de estilo SDK.

Los valores targetFramework son alias

La TargetFramework propiedad de un archivo de proyecto es un nombre descriptivo (un alias) que se traduce en una identidad de marco canónica. El SDK de .NET realiza esta traducción estableciendo el TargetFrameworkMoniker (TFM) y, cuando procede, las TargetPlatformMoniker propiedades.

Por ejemplo, al escribir <TargetFramework>net10.0-windows</TargetFramework>, el SDK de .NET lo traduce en:

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

NuGet usa estas propiedades de moniker (no la TargetFramework cadena) para las comprobaciones de compatibilidad de paquetes. Esto significa que el TargetFramework propio valor puede ser cualquier cadena, siempre y cuando las propiedades del moniker se establezcan correctamente. Por ejemplo, el siguiente proyecto es 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 proyecto restaura y compila para .NET 10.0, aunque el TargetFramework valor sea banana. El SDK de .NET ya se basa en este mecanismo de alias para TFM específicos del sistema operativo, como net8.0-ios y net8.0-android, donde el TFM corto se traduce en el moniker completo con información de la plataforma.

Multi-targeting con marcos duplicados

A partir de NuGet 7.6 / SDK de .NET 10.0.300, varios TargetFrameworks alias pueden resolverse en el mismo marco efectivo. Esto permite escenarios como compilaciones de varios RID y destinos de extensión de varias versiones. Para obtener más información sobre cómo funciona esto con las referencias de restauración, paquete, bloqueo y proyecto, consulte Selección de varios marcos de trabajo.

Marcos admitidos

Normalmente, un moniker de la plataforma de destino corto o TFM hace referencia a un marco de trabajo de destino corto. En .NET Standard, también se generaliza en TxM para permitir una sola referencia a varios marcos.

Nota:

El código fuente del cliente NuGet que calcula las tablas siguientes se encuentra en las siguientes ubicaciones:

Los clientes nuGet admiten los marcos de trabajo de la tabla siguiente. Los equivalentes se muestran entre corchetes []. Tenga en cuenta que algunas herramientas, como dotnet, pueden usar variaciones de TFM canónicas en algunos archivos. Por ejemplo, dotnet pack usa .NETCoreApp2.0 en un .nuspec archivo en lugar de netcoreapp2.0. Las distintas herramientas de cliente de NuGet controlan estas variaciones correctamente, pero siempre debe usar TFM canónicos al editar archivos directamente.

Nombre Abreviatura TFMs/TxMs
.NET Framework red net11
net20
net35
net40
net403
net45
net451
net452
net46
net461
net462
net47
net471
net472
net48
Microsoft Store (Tienda Windows) netcore netcore [netcore45]
netcore45 [win, win8]
netcore451 [win81]
netcore50
MicroFramework de .NET netmf netmf
Windows ganar win [win8, netcore45]
win8 [netcore45, win]
win81 [netcore451]
win10 (no compatible con la plataforma de Windows 10)
Silverlight Sl sl4
sl5
Windows Phone (SL) wp wp [wp7]
wp7
wp75
wp8
wp81
Windows Phone (UWP) wpa81
Plataforma universal de Windows uap uap [uap10.0]
uap10.0
uap10.0.xxxxx (donde 10.0.xxxxx es la versión mínima de la plataforma de destino de la aplicación de consumo)
.NET Estándar netstandard netstandard1.0
netstandard1.1
netstandard1.2
netstandard1.3
netstandard1.4
netstandard1.5
netstandard1.6
netstandard2.0
netstandard2.1
.NET 5+ (y .NET Core) netcoreapp netcoreapp1.0
netcoreapp1.1
netcoreapp2.0
netcoreapp2.1
netcoreapp2.2
netcoreapp3.0
netcoreapp3.1
red net5.0
net6.0
net7.0
net8.0
net9.0
net10.0
Tizen tizen tizen3
tizen4
Native nativo nativo

Marcos en desuso

Los marcos siguientes están en desuso. Los paquetes destinados a estos marcos deben migrarse a los reemplazos indicados.

Marco en desuso Replacement
aspnet50 netcoreapp
aspnetcore50
dnxcore50
Dnx
dnx45
dnx451
dnx452
dotnet netstandard
dotnet50
dotnet51
dotnet52
dotnet53
dotnet54
dotnet55
dotnet56
winrt ganar

Precedence

Una serie de marcos están relacionados y compatibles entre sí, pero no necesariamente equivalentes:

Marco de referencia Puede utilizar
uap (Plataforma universal de Windows) win81
wpa81
netcore50
win (Microsoft Store) winrt

NET Standard

.NET Standard simplifica las referencias entre marcos compatibles con binarios, lo que permite que un único marco de destino haga referencia a una combinación de otros. (Para obtener información general, consulte .NET Primer).

La herramienta NuGet Get Nearest Framework simula lo que NuGet usa para seleccionar un marco de muchos recursos de marcos disponibles en un paquete basado en el marco del proyecto.

La dotnet serie de monikers debe usarse en NuGet 3.3 y versiones anteriores; la netstandard sintaxis de moniker debe usarse en la versión 3.4 y posteriores.

Bibliotecas de clases portables

Advertencia

No se recomiendan las PCL. Aunque se admiten PCL, los autores de paquetes deben admitir netstandard en su lugar. .NET Platform Standard es una evolución de las PCL y representa la portabilidad binaria entre plataformas mediante un único moniker que no está asociado a una biblioteca estática como monikers portable-a+b+c .

Para definir un marco de destino que hace referencia a varios marcos de destino secundarios, la portable palabra clave que se usa para prefijar la lista de marcos a los que se hace referencia. Evite la inclusión artificial de marcos adicionales que no se compilan directamente, ya que puede provocar efectos secundarios no deseados en esos marcos.

Los marcos adicionales definidos por terceros proporcionan compatibilidad con otros entornos a los que se puede acceder de esta manera. Además, hay números de perfil abreviados que están disponibles para hacer referencia a estas combinaciones de marcos relacionados como Profile#, pero esto no es una práctica recomendada para usar estos números, ya que reduce la legibilidad de las carpetas y .nuspec.

Perfil # Marcos de trabajo Nombre completo .NET Estándar
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
Perfil7 . NETFramework 4.5 portable-net45+win8 netstandard1.1
Windows 8.0
Perfil14 . NETFramework 4.0 portable-net40+sl5
Silverlight 5.0
Perfil18 . NETFramework 4.0.3 portable-net403+sl4
Silverlight 4.0
Perfil19 . NETFramework 4.0.3 portable-net403+sl5
Silverlight 5.0
Perfil23 . NETFramework 4.5 portable-net45+sl4
Silverlight 4.0
Perfil24 . NETFramework 4.5 portable-net45+sl5
Silverlight 5.0
Perfil31 Windows 8.1 portable-win81+wp81 netstandard1.0
WindowsPhone 8.1 (SL)
Perfil32 Windows 8.1 portable-win81+wpa81 netstandard1.2
WindowsPhone 8.1 (UWP)
Perfil36 . NETFramework 4.0 portable-net40+sl4+win8+wp8
Silverlight 4.0
Windows 8.0
WindowsPhone 8.0 (SL)
Perfil37 . 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
Perfil42 . NETFramework 4.0.3 portable-net403+sl5+win8
Silverlight 5.0
Windows 8.0
Perfil44 . NETFramework 4.5.1 portable-net451+win81 netstandard1.2
Windows 8.1
Perfil46 . NETFramework 4.5 portable-net45+sl4+win8
Silverlight 4.0
Windows 8.0
Perfil47 . NETFramework 4.5 portable-net45+sl5+win8
Silverlight 5.0
Windows 8.0
Perfil49 . NETFramework 4.5 portable-net45+wp8 netstandard1.0
WindowsPhone 8.0 (SL)
Perfil78 . 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)
Perfil88 . 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
Perfil102 . NETFramework 4.0.3 portable-net403+win8+wpa81
Windows 8.0
WindowsPhone 8.1 (UWP)
Perfil104 . 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)
Perfil143 . 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)
Perfil151 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)
Perfil225 . NETFramework 4.0 portable-net40+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Perfil240 . NETFramework 4.0.3 portable-net403+sl5+win8+wpa8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Perfil255 . NETFramework 4.5 portable-net45+sl5+win8+wpa81
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
Perfil259 . NETFramework 4.5 portable-net45+win8+wpa81+wp8 netstandard1.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)
Perfil328 . 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)
Perfil344 . NETFramework 4.5 portable-net45+sl5+win8+wpa81+wp8
Silverlight 5.0
Windows 8.0
WindowsPhone 8.1 (UWP)
WindowsPhone 8.0 (SL)

Además, los paquetes NuGet destinados a Xamarin pueden usar marcos definidos por Xamarin adicionales:

Nombre Descripción .NET Estándar
monoandroid Compatibilidad con Mono para el sistema operativo Android netstandard1.4
monotouch Compatibilidad con Mono para iOS netstandard1.4
monomac Compatibilidad con Mono para OSX netstandard1.4
xamarinios Compatibilidad con Xamarin para iOS netstandard1.4
xamarinmac Compatibilidad con Xamarin para Mac netstandard1.4
xamarinpsthree Compatibilidad con Xamarin en Playstation 3 netstandard1.4
xamarinpsfour Compatibilidad con Xamarin en Playstation 4 netstandard1.4
xamarinpsvita Compatibilidad con Xamarin en PS Vita netstandard1.4
xamarinwatchos Xamarin for Watch OS netstandard1.4
xamarintvos Xamarin para el sistema operativo de TV netstandard1.4
xamarinxboxthreesixty Xamarin para XBox 360 netstandard1.4
xamarinxboxone Xamarin para XBox One netstandard1.4

Nota:

Stephen Cleary ha creado una herramienta que enumera las PCL admitidas, que puede encontrar en su publicación, Perfiles de framework en .NET.