Scenario
PackageReference System.Text.Json은 정리되지 않습니다. 불필요할 수 있으므로 종속성에서 이 패키지를 제거하는 것이 좋습니다.
Issue
패키지 System.Text.JsonPrunePackageReference 기능을 통해 정리하기 위해 지정되었습니다.
.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>
패키지가 선언된 프레임워크의 System.Text.Json 해당 .NET 런타임 버전에 이미 포함되어 있으므로 패키지에 대한 각 조건을 PackageReference 제거할 수 있습니다.
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>