PrunePackageReference 功能会自动删除目标平台提供的可传递包。 通过此更改,该功能还会标记具有和PackageReference属性的PrivateAssets=all可IncludeAssets=none修剪项。 这些属性可防止包出现在包的生成的依赖项列表中。
引入的版本
.NET 10 预览版 7
以前的行为
从 .NET 10 预览版 1 开始,如果启用了修剪,则直接收缩PackageReference项可能已生成警告NU1510,但仍显示在生成的 .nuspec 依赖项列表中,即使包由平台提供也是如此。
例如,请考虑使用以下配置的多目标项目:
<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 预览版 7 开始,当启用修剪时,直接可 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
没有。