PrunePackageReference 機能は、ターゲット プラットフォームによって提供される推移的なパッケージを自動的に削除します。 この変更により、この機能は、属性とPackageReference属性を持つPrivateAssets=all項目をIncludeAssets=none排除することもできます。 これらの属性により、パッケージの生成された依存関係リストにパッケージが表示されなくなります。
導入されたバージョン
.NET 10
以前の動作
以前は、排除が有効になっている場合、パッケージがプラットフォームによって提供された場合でも、生成された PackageReference 依存関係リストに直接排除可能な項目が表示されていました。 (また、プロジェクトのターゲットが .NET 10 の場合は、 NU1510 警告が生成されている可能性があります)。
たとえば、次の構成のマルチターゲット プロジェクトを考えてみましょう。
<PropertyGroup>
<TargetFramework>net10.0;net472</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Text.Json" Version="9.0.8" />
</ItemGroup>
このようなプロジェクト ファイルは、両方のターゲット フレームワークの依存関係を持つ .nuspec ファイルを生成しました。
<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>
新しい動作
.NET 10 以降では、排除が有効になると、直接排除可能な PackageReference 項目は PrivateAssets=all と IncludeAssets=noneで自動的にマークされ、プラットフォームによって提供されるターゲット フレームワークの生成された依存関係から除外されます。 (ただし、プロジェクトが .NET 10 以降を対象とする場合は、プロジェクトから参照を削除するまで NU1510 警告 が表示されます)。
同じプロジェクト構成で、排除可能な依存関係を提供するターゲット フレームワークから削除された .nuspec ファイルが生成されるようになりました (.NET 10)。
<dependencies>
<group targetFramework=".NETFramework4.7.2">
<dependency id="System.Text.Json" version="9.0.8" />
</group>
<group targetFramework="net10.0">
</group>
</dependencies>
破壊的変更の種類
この変更は 動作の変更です。
変更の理由
この変更により、パッケージの依存関係に各ターゲット フレームワークの実際の要件が正確に反映されるようになります。 これにより、それらの API がターゲット フレームワークによって既に提供されている場合に、生成されたパッケージに不要なパッケージ参照が表示されなくなります。
推奨されるアクション
- パッケージを作成し、
NU1510警告が表示される場合は、その指示に従います。 - パッケージを作成し、生成された .nuspec 依存関係 にターゲット フレームワーク の参照先パッケージが含まれていない場合は、不要であるため、プロジェクト ファイルから参照を削除します。
- 参照先のパッケージが .nuspec ファイルに表示される場合、アクションは必要ありません。
影響を受ける API
何一つ。
関連項目
.NET