Wszystkie zestawy domyślnie przycinane
Przycinanie teraz przycina wszystkie zestawy w aplikacjach konsoli domyślnie. Ta zmiana dotyczy tylko aplikacji publikowanych w PublishTrimmed=true
usłudze i powoduje przerwanie działania tylko aplikacji, które miały istniejące ostrzeżenia dotyczące przycinania. Dotyczy to również zwykłych aplikacji platformy .NET, które nie korzystają z aplikacji klasycznych systemu Windows, Android, iOS, WASM lub ASP.NET SDK.
Poprzednie zachowanie
Wcześniej tylko zestawy, które zostały zrezygnowane w <IsTrimmable>true</IsTrimmable>
pliku projektu biblioteki, zostały przycięte.
Nowe zachowanie
Począwszy od platformy .NET 7, przycinanie domyślnie wszystkich zestawów w aplikacji. Aplikacje, które mogły wcześniej działać, PublishTrimmed
mogą nie działać na platformie .NET 7. Będą jednak mieć wpływ tylko aplikacje z ostrzeżeniami dotyczącymi przycinania. Jeśli aplikacja nie ma ostrzeżeń dotyczących przycinania, zmiana zachowania nie powinna powodować żadnych negatywnych skutków i prawdopodobnie zmniejszy rozmiar aplikacji.
Jeśli aplikacja ma ostrzeżenia dotyczące przycinania, mogą pojawić się zmiany w zachowaniu lub wyjątkach. Na przykład aplikacja, która używa Newtonsoft.Json
lub System.Text.Json
bez generowania źródła do serializacji i deserializacji typu w projekcie użytkownika, mogła działać przed zmianą, ponieważ typy w projekcie użytkownika zostały w pełni zachowane. Jednak co najmniej jedno ostrzeżenie dotyczące przycinania (kody ILxxxx
ostrzegawcze ) byłoby obecne. Teraz typy w projekcie użytkownika są przycinane, a serializacja może zakończyć się niepowodzeniem lub spowodować nieoczekiwane wyniki.
Wprowadzona wersja
.NET 7
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność źródła.
Przyczyna wprowadzenia zmiany
Ta zmiana pomaga zmniejszyć rozmiar aplikacji bez konieczności jawnego wyrażenia zgody i dopasowania do oczekiwań użytkowników, że cała aplikacja jest przycinana, chyba że została zanotowana inaczej.
Zalecana akcja
Najlepszym rozwiązaniem jest rozwiązanie wszystkich ostrzeżeń dotyczących przycinania w aplikacji. Aby uzyskać informacje na temat rozwiązywania ostrzeżeń we własnych bibliotekach, zobacz Wprowadzenie do ostrzeżeń dotyczących przycinania. W przypadku innych bibliotek skontaktuj się z autorem, aby poprosić o rozwiązanie ostrzeżeń lub wybrać inną bibliotekę, która już obsługuje przycinanie. Na przykład można przełączyć się na System.Text.Json za pomocą generowania źródła, który obsługuje przycinanie, zamiast Newtonsoft.Json
.
Aby przywrócić poprzednie zachowanie, ustaw TrimMode
właściwość na partial
, która jest zachowaniem pre-.NET 7.
<TrimMode>partial</TrimMode>
Domyślna wartość platformy .NET 7+ to full
:
<TrimMode>full</TrimMode>
Dotyczy interfejsów API
Brak.