Teilen über


Doppelte Ausgabe bei -getItem, -getProperty und -getTargetResult

.NET SDK 8.0.200 hat eine Regression in den neuen -getItem, -getPropertyund -getTargetResult MSBuild CLI-Optionen 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 einer bevorstehenden Version des .NET 8.0.200 SDK zu beheben.

Eingeführte 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.

Art der einschneidenden Änderung

Dies ist eine Verhaltensänderung, die sich auf Benutzerskripts auswirken kann, insbesondere in CI/CD-Szenarien.

Grund für Änderung

Diese Optionen sollen Werte zurückgeben, die aus einem einzelnen vom Benutzer angeforderten Build berechnet werden. Vom SDK initiierte MSBuild-Vorgänge können buildpublish jedoch manchmal einen zweiten Aufruf von MSBuild auslösen– insbesondere, wenn die -f Option verwendet wird, um anzugeben, dass ein Build für ein bestimmtes TargetFramework erfolgen soll. In diesem Szenario wurden die -getItem, -getProperty und -getTargetResult Optionen für beide MSBuild-Aufrufe übergeben, anstatt nur für den, den ein Benutzer erwartet hatte.

Wählen Sie eine der folgenden Aktionen aus:

  • Verwenden Sie eine ältere Version des .NET SDK (bevor die Regression eingeführt wurde).
  • Verwenden Sie eine Version des .NET 8 SDK, das den Fix enthält, der eine beliebige Version nach 8.0.202 sein sollte.
  • Entfernen Sie jede Verwendung von -f in Anrufen, die auch -getItem, -getProperty oder -getTargetResults verwenden.