Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
libun 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
targetframeworkatributo 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.0TargetPlatformMoniker=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:
- Nombres de marco admitidos: FrameworkConstants.cs
- Precedencia y asignación del marco: DefaultFrameworkMappings.cs
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.