Microsoft.AspNetCore.App para ASP.NET Core

El marco compartido de ASP.NET Core (Microsoft.AspNetCore.App) contiene ensamblados desarrollados y admitidos por Microsoft. Microsoft.AspNetCore.App se instala cuando se instala el SDK de .NET Core 3.0 o posterior. El marco compartido es el conjunto de ensamblados (archivos .dll) que se instalan en la máquina e incluye un componente de entorno de ejecución y un paquete de destino. Para más información, consulte este artículo sobre el marco de trabajo compartido.

  • Los proyectos que tienen como destino el SDK de Microsoft.NET.Sdk.Web hacen referencia implícitamente al marco Microsoft.AspNetCore.App.

No se requieren referencias adicionales para estos proyectos:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>
    ...
</Project>

El marco compartido de ASP.NET Core:

  • No incluye dependencias de terceros.
  • Incluye todos los paquetes admitidos por el equipo de ASP.NET Core.

Esta característica requiere ASP.NET Core 2.x con .NET Core 2.x como destino.

El metapaqueteMicrosoft.AspNetCore.App para ASP.NET Core:

  • No incluye dependencias de terceros excepto Json.NET, Remotion.Linq e IX-Async. Estas dependencias de terceros se consideran necesarias para garantizar el funcionamiento de las características de los principales marcos.
  • Incluye todos los paquetes admitidos por el equipo de ASP.NET Core, excepto aquellos que contienen dependencias de terceros (distintos de los mencionados anteriormente).
  • Incluye todos los paquetes admitidos por el equipo de Entity Framework Core, excepto aquellos que contienen dependencias de terceros (distintos de los mencionados anteriormente).

Todas las características de ASP.NET Core 2.x y Entity Framework Core 2.x están incluidas en el paquete Microsoft.AspNetCore.App. Las plantillas de proyecto predeterminadas que tienen ASP.NET 2 como destino usan este paquete. Se recomienda que las aplicaciones que tengan como destino ASP.NET Core 2.x y Entity Framework Core 2.x usen el paquete Microsoft.AspNetCore.App.

El número de versión del metapaquete Microsoft.AspNetCore.App representa las versiones mínimas de ASP.NET Core y Entity Framework Core.

Mediante el metapaquete Microsoft.AspNetCore.App se proporcionan restricciones de versión que protegen la aplicación:

  • Si se incluye un paquete que tiene una dependencia transitiva (no directa) en un paquete en Microsoft.AspNetCore.App y los números de versión son distintos, NuGet generará un error.
  • Los demás paquetes agregados a la aplicación no pueden cambiar la versión de los paquetes que se incluyen en Microsoft.AspNetCore.App.
  • La coherencia de versiones garantiza una experiencia fiable. Microsoft.AspNetCore.App se ha diseñado para evitar las combinaciones de versiones no probadas de bits relacionados que se usan conjuntamente en la misma aplicación.

Las aplicaciones que usan el metapaquete Microsoft.AspNetCore.App pueden aprovechar automáticamente el marco de uso compartido de ASP.NET Core. Al usar el metapaquete Microsoft.AspNetCore.App, no se implementa ningún recurso de los paquetes NuGet de ASP.NET Core a los que se hace referencia con la aplicación, porque el marco de uso compartido de ASP.NET Core ya contiene esos recursos. Los recursos del marco de uso compartido se precompilan para mejorar el tiempo de inicio de la aplicación. Para más información, consulte este artículo sobre el marco de trabajo compartido.

El archivo de proyecto siguiente hace referencia al metapaquete Microsoft.AspNetCore.App de ASP.NET Core y representa una típica plantilla de ASP.NET Core 2.2:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

</Project>

El marcado anterior representa una plantilla típica de ASP.NET Core 2.x. No especifica ningún número de versión para la referencia del paquete Microsoft.AspNetCore.App. Si no se especifica la versión, el SDK define una versión implícita, es decir, Microsoft.NET.Sdk.Web. Es recomendable confiar en la versión implícita especificada por el SDK y no establecer de forma explícita el número de versión en la referencia del paquete. Si tiene alguna pregunta sobre este enfoque, deje un comentario de GitHub en Discussion for the Microsoft.AspNetCore.App implicit version (Debate sobre la versión implícita Microsoft.AspNetCore.App).

La versión implícita se establece en major.minor.0 para las aplicaciones portátiles. El mecanismo de puesta al día del marco de uso compartido ejecutará la aplicación en la versión más reciente compatible entre los marcos de uso compartidos instalados. Para garantizar que se use la misma versión en el desarrollo, las pruebas y la producción, asegúrese de que en todos los entornos esté instalada la misma versión del marco de uso compartido. Para las aplicaciones autocontenidas, el número de versión implícita se establece en el valor major.minor.patch del marco de uso compartido incluido en el SDK instalado.

El hecho de especificar un número de versión en la referencia de Microsoft.AspNetCore.Appno garantiza que se vaya a elegir la versión del marco de uso compartido. Por ejemplo, suponga que se especifica la versión "2.2.1", pero está instalada la "2.2.3". En ese caso, la aplicación usará el valor "2.2.3". Aunque no se recomienda, puede deshabilitar la puesta al día (revisión o secundaria). Para obtener más información sobre la puesta al día del host de dotnet y cómo configurar su comportamiento, vea Dotnet host roll forward (Puesta al día del host de dotnet).

<Project Sdk debe establecerse en Microsoft.NET.Sdk.Web para usar la versión implícita Microsoft.AspNetCore.App. Cuando <Project Sdk="Microsoft.NET.Sdk"> (sin la terminación .Web) se usa:

  • Se genera la siguiente advertencia:

    Advertencia NU1604: La dependencia de proyecto Microsoft.AspNetCore.App no contiene un límite inferior inclusivo. Incluya un límite inferior en la versión de dependencia para garantizar que los resultados de restauración son coherentes.

  • Se trata de un problema conocido en el SDK de .NET Core 2.1.

Actualización de ASP.NET Core

El metapaqueteMicrosoft.AspNetCore.App no es un paquete habitual que se actualice desde NuGet. De forma similar a Microsoft.NETCore.App, Microsoft.AspNetCore.App representa un tiempo de ejecución compartido, con una semántica especial de control de versiones controlada de forma ajena a NuGet. Para obtener más información, vea Paquetes, metapaquetes y marcos de trabajo.

Para actualizar ASP.NET Core:

  • En los equipos de desarrollo y los servidores de compilación: descargue e instale el SDK de .NET Core.
  • En los servidores de implementación: descargue e instale el .NET Core Runtime.

Las aplicaciones se pondrán al día con la última versión instalada al reiniciar la aplicación. No es necesario actualizar el número de versión de Microsoft.AspNetCore.App en el archivo de proyecto. Para obtener más información, vea Puesta al día de las aplicaciones dependientes de la plataforma.

Si la aplicación ha usado Microsoft.AspNetCore.All anteriormente, consulte Migración desde Microsoft.AspNetCore.All a Microsoft.AspNetCore.App.