PrunePackageReference privatizes 直接可修剪引用

PrunePackageReference 功能会自动删除目标平台提供的可传递包。 通过此更改,该功能还会标记具有PackageReference属性的PrivateAssets=allIncludeAssets=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=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

没有。

另请参阅