共用方式為


-getItem、-getProperty 和 -getTargetResult 的重複輸出

.NET SDK 8.0.200 引進了新 -getItem-getProperty-getTargetResult MSBuild CLI 選項中的迴歸。 當 SDK 用來執行特定 TargetFramework 的 MSBuild 作業時,輸出會重複,如下所示:

> dotnet build -r:android-arm64 --getProperty:OutputPath -f:net8.0-android
bin\Debug/net8.0-android/android-arm64/
bin\Debug/net8.0-android/android-arm64/

注意

我們打算在即將推出的 .NET 8.0.200 SDK 版本中修正此行為。

導入的版本

.NET 8.0.200

先前的行為

> dotnet build -r:android-arm64 --getProperty:OutputPath -f:net8.0-android
bin\Debug/net8.0-android/android-arm64/

新的行為

組建、載入或執行受影響專案時失敗。

中斷性變更的類型

這是會影響使用者指令碼的行為變更,特別是在 CI/CD 案例中。

變更原因

這些選項旨在傳回從單一使用者要求組建計算的值。 不過,SDK 起始的 MSBuild 作業如 buildpublish 有時可能會觸發對 MSBuild 的第二次呼叫,特別是當 -f 選項用來指定針對特定 TargetFramework 應該發生建置時。 在該案例中,-getItem-getProperty-getTargetResult 選項會傳遞至兩個 MSBuild 叫用,而不只是使用者預期觸發的叫用。

選擇下列其中一個動作:

  • 使用舊版的 .NET SDK (在導入迴歸之前)。
  • 使用包含修正的 .NET 8 SDK 版本,其應該是 8.0.202 之後的任何版本。
  • 從也使用 -getItem-getProperty-getTargetResults 的呼叫中移除 -f 的任何使用。