PrunePackageReference 特性會自動移除目標平台所提供的可轉移套件。 透過這項變更,此功能也會標記具有、PackageReference和PrivateAssets=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=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
沒。