預設情況下,現在會修剪控制台應用程式中的所有組件。 這項變更只會影響使用 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
,這是 pre-.NET 7 行為。
<TrimMode>partial</TrimMode>
預設的 .NET 7+ 值為 full
:
<TrimMode>full</TrimMode>
受影響的 API
沒有。