Recorte de implementaciones autocontenidas y ejecutables

El modelo de implementación dependiente del marco ha sido el modelo de implementación más eficaz desde el inicio de .NET. En este escenario, el desarrollador de la aplicación agrupa solo la aplicación y los ensamblados de terceros con la expectativa de que la biblioteca en tiempo de ejecución y la biblioteca en tiempo de ejecución de .NET estén disponibles en el equipo cliente. Este modelo de implementación sigue siendo el dominante en la última versión de .NET, aunque hay algunos escenarios en los que el modelo dependiente del marco no es la mejor opción. La alternativa es publicar una aplicación autocontenida, donde la biblioteca en tiempo de ejecución y la biblioteca en tiempo de ejecución de .NET están agrupadas con la aplicación y ensamblados de terceros.

El modelo de implementación trim independiente es una versión especializada del modelo de implementación independiente que está optimizado para reducir el tamaño de la implementación. Minimizar el tamaño de la implementación es un requisito fundamental para algunos escenarios del lado cliente, como las aplicaciones Blazor. En función de la complejidad de la aplicación, solo se hace referencia a un subconjunto de ensamblados de marco, y se requiere un subconjunto del código en cada ensamblado para ejecutar la aplicación. Las partes sin usar de las bibliotecas no son necesarias y se pueden recortar de la aplicación empaquetada.

No obstante, existe el riesgo de que el análisis del tiempo de compilación de la aplicación pueda causar errores en tiempo de ejecución, debido a que no pueda analizar de forma confiable diversos patrones de código problemáticos (centrados en gran medida en el uso de la reflexión). Para mitigar estos problemas, se generan advertencias siempre que el recortador no pueda analizar por completo un patrón de código. Para obtener información sobre lo que significan las advertencias de recorte y cómo resolverlas, consulte Introducción a las advertencias de recorte.

Nota:

  • El recorte es con en su totalidad con .NET 6 y versiones posteriores. En .NET Core 3.1 y.NET 5, el recorte es una característica experimental.
  • Solo está disponible para las aplicaciones que se publican como independientes.

Componentes que provocan problemas de recorte

Advertencia

No todos los tipos de proyecto se pueden recortar. Para más información, vea Incompatibilidades conocidas de recorte.

Cualquier código que dé lugar a desafíos de análisis en tiempo de compilación no es adecuado para el recorte. Algunos patrones de codificación comunes que son problemáticos cuando los usa una aplicación se deben al uso de reflexión ilimitada y de dependencias externas que no son visibles en tiempo de compilación. Un ejemplo de reflexión ilimitada es un serializador heredado, como la serialización XML y uno de dependencias externas invisibles es COM integrado. Para solucionar las advertencias de recorte en la aplicación, consulte Introducción a las advertencias de recorte y, para hacer que su biblioteca sea compatible con el recorte, consulte Preparación de las bibliotecas de .NET para el recorte.

Habilitación del recorte

  1. Agregue <PublishTrimmed>true</PublishTrimmed> al archivo del proyecto.

    Esta propiedad generará una aplicación recortada en la publicación independiente. También desactiva las características incompatibles con el recorte y muestra advertencias de compatibilidad de recorte durante la compilación.

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. A continuación, publique la aplicación mediante el comando dotnet publish o Visual Studio.

Publicación con la CLI

En el ejemplo siguiente se publica la aplicación para Windows como aplicación independiente recortada.

dotnet publish -r win-x64

El recorte solo se admite para las aplicaciones independientes.

<PublishTrimmed> debe establecerse en el archivo del proyecto para que las características incompatibles con recortes son incompatibles durante dotnet build. Sin embargo, también establece esta opción como un argumento en dotnet publish:

dotnet publish -r win-x64 -p:PublishTrimmed=true

Para obtener más información, vea Publicación de aplicaciones de .NET con la CLI de .NET.

Publicación con Visual Studio

  1. En el panel Explorador de soluciones, haga clic con el botón derecho en el proyecto que quiera publicar y seleccione Publicar.

    Solution Explorer with a right-click menu highlighting the Publish option.

    Si todavía no tiene un perfil de publicación, siga las instrucciones para crear uno y elija el tipo de destino Carpeta.

  2. Seleccione Más acciones>Editar.

    Visual studio publish profile with edit button.

  3. En el cuadro de diálogo Configuración de perfil, establezca las opciones siguientes:

    • Establezca Modo de implementación en Independiente.
    • Establezca Tiempo de ejecución de destino en la plataforma en la que quiera publicar.
    • Seleccione Recortar código sin usar.

    Elija Guardar para guardar la configuración y volver al cuadro de diálogo Publicar.

    Profile settings dialog with deployment mode, target runtime, and trim unused assemblies options highlighted.

  4. Elija Publicar para publicar la aplicación recortada.

Para obtener más información, vea Publicación de aplicaciones .NET Core con Visual Studio.

Publicar con Visual Studio para Mac

Visual Studio para Mac no proporciona opciones para publicar la aplicación. Tendrá que publicarla de forma manual mediante las instrucciones de la sección Publicación con la CLI. Para obtener más información, vea Publicación de aplicaciones de .NET con la CLI de .NET.

Vea también