共用方式為


預設會修剪所有組件

根據預設,修剪功能現在會修剪主控台應用程式中的所有組件。 這項變更只會影響使用 PublishTrimmed=true 所發佈的應用程式,而且只會中斷具有現有修剪警告的應用程式。 其也只會影響未使用 Windows Desktop、Android、iOS、WASM 或 ASP .NET SDK 的純 .NET 應用程式。

先前的行為

先前,只有在程式庫專案檔中透過 <IsTrimmable>true</IsTrimmable> 加入的組件會進行修剪。

新的行為

從 .NET 7 開始,修剪功能預設會修剪應用程式中的所有組件。 先前可能會對 PublishTrimmed 起作用的應用程式,在 .NET 7 中可能不會起作用。 不過,只有具有修剪警告的應用程式才會受到影響。 如果您的應用程式沒有修剪警告,則行為變更應該不會造成任何負面影響,而且可能會減少應用程式大小。

如果您的應用程式有修剪警告,您可能會看到行為變更或例外狀況。 例如,應用程式若使用 Newtonsoft.JsonSystem.Text.Json,卻沒有來源產生可在使用者專案中序列化和還原序列化型別,在變更之前可能會正常運作,因為系統會完全保留使用者專案中的型別。 不過,會出現一或多個修剪警告 (警告代碼 ILxxxx)。 現在則會修剪使用者專案中的型別,而且序列化可能會失敗或產生非預期的結果。

導入的版本

.NET 7

中斷性變更的類型

此變更可能會影響來源相容性

變更原因

這項變更有助於在使用者不必明確加入的情況下減少應用程式大小,並且符合使用者認為整個應用程式會進行修剪的預期 (除非另有說明)。

最佳解決方式是解決您應用程式中的所有修剪警告。 如需解決自有程式庫中警告的相關資訊,請參閱修剪警告簡介。 若是其他程式庫,請連絡作者,請對方解決警告,或選擇已支援修剪的其他程式庫。 例如,您可以改用支援修剪之來源產生System.Text.Json,而不是 Newtonsoft.Json

若要還原為先前的行為,請將 TrimMode 屬性設定為 partial,這是 .NET 7 之前的行為。

<TrimMode>partial</TrimMode>

預設的 .NET 7+ 值為 full

<TrimMode>full</TrimMode>

受影響的 API

無。

另請參閱