次の方法で共有


PrunePackageReference が直接排除可能な参照を民営化する

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=allIncludeAssets=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

何一つ。

関連項目