Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja PrunePackageReference automatycznie usuwa pakiety przechodnie dostarczane przez platformę docelową. Dzięki tej zmianie funkcja oznacza również bezpośrednio przycinane PackageReference elementy z atrybutami PrivateAssets=all i IncludeAssets=none . Te atrybuty uniemożliwiają wyświetlanie pakietów na wygenerowanych listach zależności dla pakietów.
Wprowadzona wersja
.NET 10
Poprzednie zachowanie
Wcześniej, jeśli przycinanie było włączone, elementy bezpośrednio podlegające przycinaniu nadal pojawiały się na wygenerowanej liście zależności .nuspec, nawet jeśli pakiet był dostarczony przez platformę. (Jeśli projekt dotyczy platformy .NET 10, może wygenerować NU1510 ostrzeżenie).
Rozważmy na przykład projekt wielowersyjny z następującą konfiguracją:
<PropertyGroup>
<TargetFramework>net10.0;net472</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Text.Json" Version="9.0.8" />
</ItemGroup>
Taki plik projektu wygenerował plik nuspec z zależnościami dla obu platform docelowych:
<dependencies>
<group targetFramework=".NETFramework4.7.2">
<dependency id="System.Text.Json" version="9.0.8" />
</group>
<group targetFramework="net10.0">
<dependency id="System.Text.Json" version="9.0.8" />
</group>
</dependencies>
Nowe zachowanie
Począwszy od wersji .NET 10, gdy przycinanie jest włączone, bezpośrednio przycinane elementy są automatycznie oznaczane za pomocą PrivateAssets=all i IncludeAssets=none, co wyklucza je z wygenerowanych zależności dla docelowych struktur platform, gdzie są one dostarczane przez platformę. (Jeśli jednak projekt jest przeznaczony dla platformy .NET 10 lub nowszej, nadal będzie wyświetlane NU1510 ostrzeżenie , dopóki nie usuniesz odwołania z projektu).
Ta sama konfiguracja projektu generuje teraz plik nuspec z przycinaną zależnością usuniętą z platformy docelowej , która ją udostępnia (.NET 10):
<dependencies>
<group targetFramework=".NETFramework4.7.2">
<dependency id="System.Text.Json" version="9.0.8" />
</group>
<group targetFramework="net10.0">
</group>
</dependencies>
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna zmiany
Ta zmiana gwarantuje, że zależności pakietów dokładnie odzwierciedlają rzeczywiste wymagania dla każdej platformy docelowej. Zapobiega to wyświetlaniu niepotrzebnych odwołań do pakietów w wygenerowanych pakietach, gdy te interfejsy API są już udostępniane przez platformę docelową.
Zalecana akcja
- Jeśli tworzysz pakiet i otrzymujesz
NU1510ostrzeżenie, postępuj zgodnie z instrukcjami. - Jeśli tworzysz pakiet, a wygenerowane zależności nuspec nie zawierają pakietu, do którego odwołujesz się do żadnej platformy docelowej, usuń odwołanie z pliku projektu, ponieważ nie jest to potrzebne.
- Jeśli przywołyżony pakiet pojawi się w pliku nuspec , nie jest wymagana żadna akcja.
Interfejsy API, których dotyczy problem
Żaden.