Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Scenario 1:
PackageReference System.Text.Json kommer inte att beskäras. Det här paketet är automatiskt tillgängligt och behöver inte refereras explicit. Ta bort PackageReference-objektet
Issue
Den här varningen genereras som ett resultat av NuGet-beroendediagramrensning och anger att ett i övrigt beskärbart paket återställdes på grund av en direkt PackageReference.
Det namngivna paketet kan beskäras om direkten PackageReference tas bort, eftersom mål-.NET SDK har samma version eller högre av den här sammansättningen.
Den här varningen påverkar endast paket som registrerats för beskärning via funktionen PrunePackageReference .
Det tas bara upp när det PackageReference i fråga kan tas bort helt från projektet.
Exempel 1
När den riktade .NET SDK:en innehåller en motsvarande version väljer beroendekonfliktslösningen den SDK-paketerade sammansättningen:
<PropertyGroup>
<!-- 'System.Text.Json' is SDK-bundled in 'net10.0' -->
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<!-- The assembly provided by this reference will not be used -->
<PackageReference Include="System.Text.Json" Version="10.0.0" />
</ItemGroup>
Exempel 2
När den riktade .NET SDK:en innehåller en motsvarande version för flera ramverksmål väljer konfliktlösning för beroenden lämplig SDK-paketerad sammansättning för varje mål:
<PropertyGroup>
<!-- 'System.Text.Json' is SDK-bundled in both TFMs -->
<TargetFrameworks>net9.0;net10.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<!-- Neither of the assemblies provided by these references will be used -->
<PackageReference Include="System.Text.Json" Version="10.0.0" Condition="'$(TargetFramework)' == 'net10.0'"/>
<PackageReference Include="System.Text.Json" Version="9.0.4" Condition="'$(TargetFramework)' == 'net9.0'"/>
</ItemGroup>
Solution
Ta bort onödiga PackageReference.
Scenario 2
PackageReference Microsoft. Extensions.Caching.Memory kommer inte att rensas. Det här paketet är automatiskt tillgängligt och behöver inte refereras explicit. Ta bort PackageReference-objektet
Issue
Listan över paket som används för beskärning bestäms av de direkta FrameworkReference objekten i det aktuella projektet.
FrameworkReference objekt är transitiva.
Men när det aktuella projektet ärver en ramverksreferens via en ProjectReferenceanvänder beskärning inte den transitiva ramverksreferensen för att ta bort paket.
Observera att det här paketet tas bort genom konfliktlösning vid byggtid.
Example
I det här exemplet refererar Library.csprojMicrosoft.AspNetCore.App och Consumer.csproj referenser Library.csproj.
Utan en direkt FrameworkReference i Consumer.csprojkan NuGet inte avgöra att paketet är beskärbart.
Därför anses Microsoft.Extensions.Caching.Memory inte vara beskärbara i konsumentprojektet.
<!-- Library.csproj -->
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
<!-- Consumer.csproj -->
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Library\Library.csproj" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
</ItemGroup>
</Project>
Lägg till direkt i FrameworkReferenceConsumer.csproj.
NuGet kan sedan fastställa att Microsoft.Extensions.Caching.Memory tillhandahålls av det delade ramverket.
Det genererar NU1510 för den onödiga direktpaketreferensen.
<ItemGroup>
<ProjectReference Include="..\Library\Library.csproj" />
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
</ItemGroup>
Solution
Lägg till matchningen FrameworkReference direkt i det aktuella projektet.
Ta sedan bort onödiga PackageReference.
Note
Från och med .NET 10 PrunePackageReference är funktionen aktiverad som standard för alla projekt som riktar in sig på .NET 10 eller senare. Varningen utlöses endast när beskärning gäller för alla körningsmål:
<PropertyGroup>
<!-- 'System.Text.Json' is not SDK-bundled in 'net48' -->
<TargetFrameworks>net10.0;net48</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<!-- This reference is needed in 'net48' - NU1510 is not raised -->
<PackageReference Include="System.Text.Json" Version="9.0.7" />
</ItemGroup>