Doppelte Ausgabe bei -getItem, -getProperty und -getTargetResult
Beim .NET SDK 8.0.200 wurde eine Regression in den neuen MSBuild CLI-Optionen -getItem
, -getProperty
und -getTargetResult
eingeführt. Wenn das SDK zum Ausführen eines MSBuild-Vorgangs für ein bestimmtes TargetFramework verwendet wird, wird die Ausgabe wie folgt dupliziert:
> 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/
Hinweis
Wir beabsichtigen, dieses Verhalten in einem bevorstehenden Release des .NET 8.0.200 SDK zu beheben.
Eingeführt in Version
.NET 8.0.200
Vorheriges Verhalten
> dotnet build -r:android-arm64 --getProperty:OutputPath -f:net8.0-android
bin\Debug/net8.0-android/android-arm64/
Neues Verhalten
Das Erstellen, Laden oder Ausführen eines betroffenen Projekts schlägt fehl.
Typ des Breaking Changes
Dies ist ein Behavior Change, der sich auf Benutzerskripts auswirken kann, insbesondere in CI/CD-Szenarien.
Grund für die Änderung
Diese Optionen sollen eigentlich Werte zurückgeben, die aus einem einzelnen von den Benutzern und Benutzerinnen angeforderten Build berechnet werden. Vom SDK initiierte MSBuild-Vorgänge wie build
und publish
können jedoch manchmal einen zweiten Aufruf von MSBuild auslösen – insbesondere, wenn die Option -f
verwendet wird, um anzugeben, dass ein Build auf ein bestimmtes TargetFramework abzielt. In diesem Szenario wurden die Optionen -getItem
, -getProperty
und -getTargetResult
an beide MSBuild-Aufrufe übergeben, anstatt nur an den, den die Benutzer/Benutzerinnen auslösen wollten.
Empfohlene Maßnahme
Wählen Sie eine der folgenden Aktionen aus:
- Verwenden Sie eine ältere Version des .NET SDK (vor Einführung der Regression).
- Verwenden Sie eine Version des .NET 8 SDK, das den Fix enthält, also jede Version nach 8.0.202.
- Entfernen Sie alle Verwendungen von
-f
aus Aufrufen, die auch-getItem
,-getProperty
oder-getTargetResults
verwenden.