共用方式為


PrunePackageReference 將直接可預備的參照私有化

PrunePackageReference 特性會自動移除目標平台所提供的可轉移套件。 透過這項變更,此功能也會標記具有PackageReferencePrivateAssets=all屬性的可直接修剪的項目。 這些屬性可防止套件出現在產生的套件相依性清單中。

引入的版本

.NET 10

先前的行為

先前,如果啟用修剪,即使套件是由平台提供,直接可 PackageReference 修剪的項目仍會出現在產生的 .nuspec 相依性清單中。 (如果您的專案以 .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

沒。

另請參閱