Scenario
不会修剪 PackageReference System.Text.Json。 请考虑从依赖项中删除此包,因为它可能是不必要的。
Issue
包 System.Text.Json 已指定用于通过 PrunePackageReference 功能进行修剪。
.NET SDK 通常指定要修剪的包列表。 由于 .NET 运行时本身具有程序集的相同或更高版本,因此不需要该包作为直接 PackageReference。
仅当有问题的 PackageReference 可以完全从项目中删除时,才会引发此警告。
Example 1
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Text.Json" Version="10.0.0" />
</ItemGroup>
Example 2
<PropertyGroup>
<TargetFrameworks>net9.0;net10.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Condition="'$(TargetFramework)' == 'net10.0'" Include="System.Text.Json" Version="10.0.0" />
<PackageReference Condition="'$(TargetFramework)' == 'net9.0'" Include="System.Text.Json" Version="9.0.0" />
</ItemGroup>
可以删除包的每个条件PackageReferenceSystem.Text.Json,因为包已包含在为其声明的框架的相应 .NET 运行时版本中。
Example 3
<PropertyGroup>
<TargetFrameworks>net9.0;net10.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Condition="'$(TargetFramework)' == 'net9.0'" Include="System.Text.Json" Version="9.0.4" />
</ItemGroup>
包 System.Text.Json 位于声明的唯一框架的修剪范围内。
Solution
删除 PackageReference,因为没有必要。
Note
为了方便采用 PrunePackageReference 功能,默认情况下,当项目面向 .NET 10 框架或更高版本时,将引发此警告。
Note
在至少一个框架仍需要包的情况下,不会引发该警告,如 net48 以下示例所示。
<PropertyGroup>
<TargetFrameworks>net10.0;net48</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Text.Json" Version="9.0.7" />
</ItemGroup>