Todos los ensamblados recortados de forma predeterminada

La característica Recorte ahora recorta todos los ensamblados de las aplicaciones de consola de forma predeterminada. Este cambio solo afecta a las aplicaciones que se publican con PublishTrimmed=true y solo interrumpe las aplicaciones que ya tenían advertencias de recorte. También afecta únicamente a las aplicaciones de .NET básicas que no usan el escritorio de Windows, Android, iOS, WASM ni el SDK de ASP.NET.

Comportamiento anterior

Antes, solo se recortaban los ensamblados que se indicaban con <IsTrimmable>true</IsTrimmable> en el archivo de proyecto de biblioteca.

Comportamiento nuevo

A partir de .NET 7, se recortan todos los ensamblados de la aplicación de forma predeterminada. Es posible que aplicaciones que antes funcionaban con PublishTrimmed ahora no funcionen en .NET 7. No obstante, solo se verán afectadas las aplicaciones con advertencias de recorte. Si una aplicación no tiene advertencias de recorte, el cambio de comportamiento no debería causar ningún efecto adverso y, probablemente, disminuirá el tamaño de la aplicación.

Si la aplicación tenía advertencias de recorte, es posible que vea cambios en el comportamiento o excepciones. Por ejemplo, una aplicación que usa Newtonsoft.Json o System.Text.Json sin generación de código fuente para serializar y deserializar un tipo en el proyecto de usuario puede haber funcionado antes del cambio, ya que los tipos del proyecto de usuario se conservaron íntegramente. Sin embargo, habría una o varias advertencias de recorte (códigos de advertencia ILxxxx). Ahora, los tipos del proyecto de usuario se recortan y la serialización puede producir un error o generar resultados inesperados.

Versión introducida

.NET 7

Tipo de cambio importante

Este cambio puede afectar a la compatibilidad de orígenes.

Motivo del cambio

Este cambio ayuda a reducir el tamaño de la aplicación sin que los usuarios tengan que indicarlo explícitamente y está en línea con las expectativas del usuario de que toda la aplicación se recorte a menos que se indique lo contrario.

La mejor solución es resolver todas las advertencias de recorte de la aplicación. Para información sobre cómo resolver las advertencias en sus propias bibliotecas, consulte Introducción a las advertencias de recorte. En el caso de otras bibliotecas, póngase en contacto con el autor para solicitar que resuelva las advertencias o elija otra biblioteca que ya admita el recorte. Por ejemplo, puede cambiar a System.Text.Json con generación de código fuente, que admite el recorte, en lugar de Newtonsoft.Json.

Para volver al comportamiento anterior, establezca la propiedad TrimMode en partial, que es el comportamiento anterior a .NET 7.

<TrimMode>partial</TrimMode>

El valor predeterminado en .NET 7+ es full:

<TrimMode>full</TrimMode>

API afectadas

Ninguno.

Consulte también