-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 作業如 build
和 publish
有時可能會觸發對 MSBuild 的第二次呼叫,特別是當 -f
選項用來指定針對特定 TargetFramework 應該發生建置時。 在該案例中,-getItem
、-getProperty
和 -getTargetResult
選項會傳遞至兩個 MSBuild 叫用,而不只是使用者預期觸發的叫用。
建議的動作
選擇下列其中一個動作:
- 使用舊版的 .NET SDK (在導入迴歸之前)。
- 使用包含修正的 .NET 8 SDK 版本,其應該是 8.0.202 之後的任何版本。
- 從也使用
-getItem
、-getProperty
或-getTargetResults
的呼叫中移除-f
的任何使用。