Udostępnij za pośrednictwem


Wszystkie zestawy domyślnie przycinane

Przycinanie teraz przycina wszystkie zestawy w aplikacjach konsoli domyślnie. Ta zmiana dotyczy tylko aplikacji publikowanych w PublishTrimmed=trueusł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 ILxxxxostrzegawcze ) 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.

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.

Zobacz też