Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Scenario 1
PackageReference System.Text.Json wordt niet verwijderd. Dit pakket is automatisch beschikbaar en hoeft niet expliciet te worden verwezen. Het PackageReference-item verwijderen
Issue
Deze waarschuwing wordt gegenereerd als gevolg van het verwijderen van een NuGet-afhankelijkheidsgrafiek en geeft aan dat een anders niet-gereed pakket is hersteld vanwege een direct PackageReference.
Het benoemde pakket kan worden verwijderd als het direct PackageReference wordt verwijderd, omdat de betreffende .NET SDK dezelfde versie of hoger van deze assembly biedt.
Deze waarschuwing is alleen van invloed op pakketten die zijn geregistreerd voor het verwijderen via de functie PrunePackageReference .
Het wordt alleen aan de orde gesteld wanneer het PackageReference betreffende project volledig uit het project kan worden verwijderd.
Voorbeeld 1
Wanneer de beoogde .NET SDK een equivalente versie bevat, selecteert afhankelijkheidsconflictoplossing de sdk-gebundelde assembly:
<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>
Voorbeeld 2
Wanneer de beoogde .NET SDK een equivalente versie voor meerdere frameworkdoelen bevat, selecteert afhankelijkheidsconflictoplossing de juiste SDK-gebundelde assembly voor elk doel:
<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
Verwijder de overbodige PackageReference.
Scenario 2
PackageReference Microsoft. Extensions.Caching.Memory wordt niet verwijderd. Dit pakket is automatisch beschikbaar en hoeft niet expliciet te worden verwezen. Het PackageReference-item verwijderen
Issue
De lijst met pakketten die worden gebruikt voor het snoeien wordt bepaald door de directe FrameworkReference items van het huidige project.
FrameworkReference items zijn transitief.
Wanneer het huidige project echter een frameworkverwijzing overgaat via een ProjectReference, wordt deze transitieve frameworkverwijzing niet gebruikt om pakketten te verwijderen.
Houd er rekening mee dat dit pakket wordt verwijderd door het oplossen van build-tijdconflicten.
Example
In dit voorbeeld verwijst Library.csproj naar Microsoft.AspNetCore.App en Consumer.csproj verwijzingen Library.csproj.
Zonder direct FrameworkReference in Consumer.csprojkan NuGet niet vaststellen dat het pakket niet in staat is.
Als gevolg hiervan wordt Microsoft.Extensions.Caching.Memory niet beschouwd als prunable in het consumentenproject.
<!-- 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>
Voeg het FrameworkReference rechtstreeks toe aan Consumer.csproj.
NuGet kan vervolgens bepalen dat Microsoft.Extensions.Caching.Memory wordt geleverd door het gedeelde framework.
Het verhoogt NU1510 voor de onnodige directe pakketreferentie.
<ItemGroup>
<ProjectReference Include="..\Library\Library.csproj" />
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
</ItemGroup>
Solution
Voeg de overeenkomst FrameworkReference rechtstreeks toe aan het huidige project.
Verwijder vervolgens het onnodige PackageReference.
Note
Vanaf .NET 10 is de PrunePackageReference functie standaard ingeschakeld voor alle projecten die gericht zijn op .NET 10 of hoger. De waarschuwing wordt alleen gegenereerd wanneer het verwijderen van toepassing is op alle runtimedoelen:
<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>