預設會修剪所有組件
根據預設,修剪功能現在會修剪主控台應用程式中的所有組件。 這項變更只會影響使用 PublishTrimmed=true
所發佈的應用程式,而且只會中斷具有現有修剪警告的應用程式。 其也只會影響未使用 Windows Desktop、Android、iOS、WASM 或 ASP .NET SDK 的純 .NET 應用程式。
先前的行為
先前,只有在程式庫專案檔中透過 <IsTrimmable>true</IsTrimmable>
加入的組件會進行修剪。
新的行為
從 .NET 7 開始,修剪功能預設會修剪應用程式中的所有組件。 先前可能會對 PublishTrimmed
起作用的應用程式,在 .NET 7 中可能不會起作用。 不過,只有具有修剪警告的應用程式才會受到影響。 如果您的應用程式沒有修剪警告,則行為變更應該不會造成任何負面影響,而且可能會減少應用程式大小。
如果您的應用程式有修剪警告,您可能會看到行為變更或例外狀況。 例如,應用程式若使用 Newtonsoft.Json
或 System.Text.Json
,卻沒有來源產生可在使用者專案中序列化和還原序列化型別,在變更之前可能會正常運作,因為系統會完全保留使用者專案中的型別。 不過,會出現一或多個修剪警告 (警告代碼 ILxxxx
)。 現在則會修剪使用者專案中的型別,而且序列化可能會失敗或產生非預期的結果。
導入的版本
.NET 7
中斷性變更的類型
此變更可能會影響來源相容性。
變更原因
這項變更有助於在使用者不必明確加入的情況下減少應用程式大小,並且符合使用者認為整個應用程式會進行修剪的預期 (除非另有說明)。
建議的動作
最佳解決方式是解決您應用程式中的所有修剪警告。 如需解決自有程式庫中警告的相關資訊,請參閱修剪警告簡介。 若是其他程式庫,請連絡作者,請對方解決警告,或選擇已支援修剪的其他程式庫。 例如,您可以改用支援修剪之來源產生的 System.Text.Json,而不是 Newtonsoft.Json
。
若要還原為先前的行為,請將 TrimMode
屬性設定為 partial
,這是 .NET 7 之前的行為。
<TrimMode>partial</TrimMode>
預設的 .NET 7+ 值為 full
:
<TrimMode>full</TrimMode>
受影響的 API
無。